diff options
893 files changed, 16510 insertions, 7249 deletions
diff --git a/apct-tests/perftests/core/src/android/os/TracePerfTest.java b/apct-tests/perftests/core/src/android/os/TracePerfTest.java index d9051240d399..00e1c1fdbf4b 100644 --- a/apct-tests/perftests/core/src/android/os/TracePerfTest.java +++ b/apct-tests/perftests/core/src/android/os/TracePerfTest.java @@ -147,7 +147,7 @@ public class TracePerfTest { .addField(1 /* sending_thread_name */, "foo") .endNested() .endProto() - .addTerminatingFlow(5) + .setTerminatingFlow(5) .emit(); BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); @@ -158,7 +158,7 @@ public class TracePerfTest { .addField(1 /* sending_thread_name */, "foo") .endNested() .endProto() - .addTerminatingFlow(5) + .setTerminatingFlow(5) .emit(); } } diff --git a/api/OWNERS b/api/OWNERS index f2bcf13d2d2e..31ffa8cd4e9f 100644 --- a/api/OWNERS +++ b/api/OWNERS @@ -1,4 +1,3 @@ -hansson@google.com # Modularization team file:platform/packages/modules/common:/OWNERS diff --git a/boot/boot-image-profile.txt b/boot/boot-image-profile.txt index 8f987c28d79e..d7c409fd54b4 100644 --- a/boot/boot-image-profile.txt +++ b/boot/boot-image-profile.txt @@ -120,9 +120,9 @@ HSPLandroid/accounts/IAccountManagerResponse$Stub;->getDefaultTransactionName(I) HSPLandroid/accounts/IAccountManagerResponse$Stub;->getMaxTransactionId()I HSPLandroid/accounts/IAccountManagerResponse$Stub;->getTransactionName(I)Ljava/lang/String; HSPLandroid/accounts/IAccountManagerResponse$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z -SPLandroid/adpf/FeatureFlagsImpl;-><init>()V -SPLandroid/adpf/FeatureFlagsImpl;->adpfViewrootimplActionDownBoost()Z -SPLandroid/adpf/Flags;-><clinit>()V +HSPLandroid/adpf/FeatureFlagsImpl;-><init>()V +HSPLandroid/adpf/FeatureFlagsImpl;->adpfViewrootimplActionDownBoost()Z +HSPLandroid/adpf/Flags;-><clinit>()V HSPLandroid/adpf/Flags;->adpfViewrootimplActionDownBoost()Z HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;-><init>(Landroid/animation/AnimationHandler;)V HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;->doFrame(J)V @@ -166,7 +166,7 @@ HSPLandroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator; HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object; HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types -HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types +HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types HSPLandroid/animation/Animator;-><init>()V HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V HSPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V @@ -240,6 +240,7 @@ HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z HSPLandroid/animation/AnimatorSet;->end()V HSPLandroid/animation/AnimatorSet;->endAnimation()V +HSPLandroid/animation/AnimatorSet;->endAnimation(Z)V+]Landroid/animation/AnimatorSet$SeekState;Landroid/animation/AnimatorSet$SeekState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimatorSet;->ensureChildStartAndEndTimes()[J HSPLandroid/animation/AnimatorSet;->findLatestEventIdForTime(J)I HSPLandroid/animation/AnimatorSet;->findNextIndex(J[J)I @@ -552,7 +553,7 @@ HSPLandroid/app/Activity$HostCallbacks;->onGetLayoutInflater()Landroid/view/Layo HSPLandroid/app/Activity$HostCallbacks;->onUseFragmentManagerInflaterFactory()Z HSPLandroid/app/Activity;-><init>()V HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;Landroid/os/IBinder;)V -HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/os/IBinder;)V +HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/os/IBinder;)V+]Landroid/app/FragmentController;Landroid/app/FragmentController;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/view/Window;Lcom/android/internal/policy/PhoneWindow; HSPLandroid/app/Activity;->attachBaseContext(Landroid/content/Context;)V HSPLandroid/app/Activity;->cancelInputsAndStartExitTransition(Landroid/os/Bundle;)V HSPLandroid/app/Activity;->collectActivityLifecycleCallbacks()[Ljava/lang/Object; @@ -715,7 +716,7 @@ HSPLandroid/app/ActivityManager$$ExternalSyntheticLambda1;->fetchValue()Ljava/la HSPLandroid/app/ActivityManager$$ExternalSyntheticLambda2;->fetchValue()Ljava/lang/Object; HSPLandroid/app/ActivityManager$2;-><init>(Landroid/app/ActivityManager;)V HSPLandroid/app/ActivityManager$4;->create()Landroid/app/IActivityManager; -SPLandroid/app/ActivityManager$4;->create()Ljava/lang/Object; +HSPLandroid/app/ActivityManager$4;->create()Ljava/lang/Object; HSPLandroid/app/ActivityManager$AppTask;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; HSPLandroid/app/ActivityManager$MemoryInfo;-><init>()V HSPLandroid/app/ActivityManager$MemoryInfo;->copyTo(Landroid/app/ActivityManager$MemoryInfo;)V @@ -765,7 +766,7 @@ HSPLandroid/app/ActivityManager$TaskDescription;->setNavigationBarColor(I)V HSPLandroid/app/ActivityManager$TaskDescription;->setPrimaryColor(I)V HSPLandroid/app/ActivityManager$TaskDescription;->setStatusBarColor(I)V HSPLandroid/app/ActivityManager$TaskDescription;->writeToParcel(Landroid/os/Parcel;I)V -SPLandroid/app/ActivityManager;->$r8$lambda$KfaWjLSz8MRDCTZ5k_6RKNsGfys(Landroid/app/ActivityManager;)Ljava/util/List; +HSPLandroid/app/ActivityManager;->$r8$lambda$KfaWjLSz8MRDCTZ5k_6RKNsGfys(Landroid/app/ActivityManager;)Ljava/util/List; HSPLandroid/app/ActivityManager;->$r8$lambda$ZuQeTlxj3UIhJqa0jkPJ3FavvSc(Landroid/app/ActivityManager;)Landroid/app/ActivityManager$MemoryInfo; HSPLandroid/app/ActivityManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V HSPLandroid/app/ActivityManager;->addOnUidImportanceListener(Landroid/app/ActivityManager$OnUidImportanceListener;I)V @@ -794,7 +795,7 @@ HSPLandroid/app/ActivityManager;->isHighEndGfx()Z HSPLandroid/app/ActivityManager;->isLowMemoryKillReportSupported()Z HSPLandroid/app/ActivityManager;->isLowRamDevice()Z HSPLandroid/app/ActivityManager;->isLowRamDeviceStatic()Z -SPLandroid/app/ActivityManager;->isProcStateCached(I)Z +HSPLandroid/app/ActivityManager;->isProcStateCached(I)Z HSPLandroid/app/ActivityManager;->isProcStateJankPerceptible(I)Z HSPLandroid/app/ActivityManager;->isRunningInTestHarness()Z HSPLandroid/app/ActivityManager;->isRunningInUserTestHarness()Z @@ -803,7 +804,7 @@ HSPLandroid/app/ActivityManager;->isUserAMonkey()Z HSPLandroid/app/ActivityManager;->isUserRunning(I)Z HSPLandroid/app/ActivityManager;->lambda$getMemoryInfo$0()Landroid/app/ActivityManager$MemoryInfo; HSPLandroid/app/ActivityManager;->lambda$getMyMemoryState$3()Landroid/app/ActivityManager$RunningAppProcessInfo; -SPLandroid/app/ActivityManager;->lambda$getRunningAppProcesses$2()Ljava/util/List; +HSPLandroid/app/ActivityManager;->lambda$getRunningAppProcesses$2()Ljava/util/List; HSPLandroid/app/ActivityManager;->staticGetLargeMemoryClass()I HSPLandroid/app/ActivityManager;->staticGetMemoryClass()I HSPLandroid/app/ActivityOptions$SourceInfo;-><init>(IJ)V @@ -830,12 +831,13 @@ HSPLandroid/app/ActivityTaskManager;->supportsMultiWindow(Landroid/content/Conte HSPLandroid/app/ActivityThread$$ExternalSyntheticLambda1;-><init>()V HSPLandroid/app/ActivityThread$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/ActivityThread$$ExternalSyntheticLambda4;->onConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/app/ActivityThread$2;-><init>(Landroid/app/ActivityThread;Landroid/app/IActivityManager;)V -HSPLandroid/app/ActivityThread$3;-><init>(Landroid/app/ActivityThread;)V +SPLandroid/app/ActivityThread$3;-><init>(Landroid/app/ActivityThread;Landroid/app/IActivityManager;)V HSPLandroid/app/ActivityThread$4;-><init>(Landroid/app/ActivityThread;)V -SPLandroid/app/ActivityThread$4;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V -SPLandroid/app/ActivityThread$5;-><init>(Landroid/app/ActivityThread;)V -SPLandroid/app/ActivityThread$5;->run()V +HSPLandroid/app/ActivityThread$4;->run()V +HSPLandroid/app/ActivityThread$5;-><init>(Landroid/app/ActivityThread;)V +SPLandroid/app/ActivityThread$5;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V +SPLandroid/app/ActivityThread$6;-><init>(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$6;->run()V HSPLandroid/app/ActivityThread$ActivityClientRecord$1;-><init>(Landroid/app/ActivityThread$ActivityClientRecord;)V HSPLandroid/app/ActivityThread$ActivityClientRecord;->-$$Nest$misPreHoneycomb(Landroid/app/ActivityThread$ActivityClientRecord;)Z HSPLandroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;Landroid/app/ActivityOptions$SceneTransitionInfo;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/os/IBinder;ZLandroid/os/IBinder;Landroid/os/IBinder;Landroid/window/ActivityWindowInfo;)V @@ -855,7 +857,7 @@ HSPLandroid/app/ActivityThread$AppBindData;-><init>()V HSPLandroid/app/ActivityThread$ApplicationThread$$ExternalSyntheticLambda2;-><init>()V HSPLandroid/app/ActivityThread$ApplicationThread$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/app/ActivityThread$ApplicationThread;-><init>(Landroid/app/ActivityThread;)V -SPLandroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;ZLandroid/content/pm/ProviderInfoList;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;[J[JLandroid/os/SharedMemory;Ljava/io/FileDescriptor;JJ)V +HSPLandroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;ZLandroid/content/pm/ProviderInfoList;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;[J[JLandroid/os/SharedMemory;Ljava/io/FileDescriptor;JJ)V HSPLandroid/app/ActivityThread$ApplicationThread;->clearDnsCache()V HSPLandroid/app/ActivityThread$ApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V HSPLandroid/app/ActivityThread$ApplicationThread;->dumpCacheInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V @@ -886,7 +888,7 @@ HSPLandroid/app/ActivityThread$ApplicationThread;->setCoreSettings(Landroid/os/B HSPLandroid/app/ActivityThread$ApplicationThread;->setNetworkBlockSeq(J)V HSPLandroid/app/ActivityThread$ApplicationThread;->setProcessState(I)V HSPLandroid/app/ActivityThread$ApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V -SPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideDisplayRotation(Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideDisplayRotation(Landroid/content/res/CompatibilityInfo;)V HSPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideScale(Landroid/content/res/CompatibilityInfo;)V HSPLandroid/app/ActivityThread$BindServiceData;-><init>()V HSPLandroid/app/ActivityThread$BindServiceData;->toString()Ljava/lang/String; @@ -1029,7 +1031,7 @@ HSPLandroid/app/ActivityThread;->isProtectedComponent(Landroid/content/pm/Activi HSPLandroid/app/ActivityThread;->isProtectedComponent(Landroid/content/pm/ComponentInfo;Ljava/lang/String;)Z HSPLandroid/app/ActivityThread;->isProtectedComponent(Landroid/content/pm/ServiceInfo;)Z HSPLandroid/app/ActivityThread;->isSystem()Z -HSPLandroid/app/ActivityThread;->lambda$attach$6(Landroid/content/res/Configuration;)V +HSPLandroid/app/ActivityThread;->lambda$attach$6(Landroid/content/res/Configuration;)V+]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController; HSPLandroid/app/ActivityThread;->main([Ljava/lang/String;)V HSPLandroid/app/ActivityThread;->onCoreSettingsChange()V HSPLandroid/app/ActivityThread;->peekPackageInfo(Ljava/lang/String;Z)Landroid/app/LoadedApk; @@ -1096,8 +1098,9 @@ HSPLandroid/app/AlarmManager;->setInexactRepeating(IJJLandroid/app/PendingIntent HSPLandroid/app/AlertDialog;-><init>(Landroid/content/Context;IZ)V HSPLandroid/app/AlertDialog;->onCreate(Landroid/os/Bundle;)V HSPLandroid/app/AlertDialog;->resolveDialogTheme(Landroid/content/Context;I)I -SPLandroid/app/AppCompatCallbacks;-><init>([J[J)V +HSPLandroid/app/AppCompatCallbacks;-><init>([J[J)V HSPLandroid/app/AppCompatCallbacks;->isChangeEnabled(J)Z +HSPLandroid/app/AppCompatCallbacks;->reportChange(JIZ)V+]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter; HSPLandroid/app/AppComponentFactory;-><init>()V HSPLandroid/app/AppComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; HSPLandroid/app/AppComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application; @@ -1128,6 +1131,7 @@ HSPLandroid/app/AppOpsManager$PackageOps;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/AppOpsManager$PackageOps;->getOps()Ljava/util/List; HSPLandroid/app/AppOpsManager$PackageOps;->getPackageName()Ljava/lang/String; HSPLandroid/app/AppOpsManager$PausedNotedAppOpsCollection;-><init>(ILandroid/util/ArrayMap;)V +SPLandroid/app/AppOpsManager;->-$$Nest$smgetService()Lcom/android/internal/app/IAppOpsService; HSPLandroid/app/AppOpsManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IAppOpsService;)V HSPLandroid/app/AppOpsManager;->checkOp(IILjava/lang/String;)I HSPLandroid/app/AppOpsManager;->checkOpNoThrow(IILjava/lang/String;)I @@ -1245,7 +1249,7 @@ HSPLandroid/app/ApplicationExitInfo;->getRss()J HSPLandroid/app/ApplicationExitInfo;->getStatus()I HSPLandroid/app/ApplicationExitInfo;->getTimestamp()J HSPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>()V -SPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>(Landroid/app/ApplicationLoaders-IA;)V +HSPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>(Landroid/app/ApplicationLoaders-IA;)V HSPLandroid/app/ApplicationLoaders;->addNative(Ljava/lang/ClassLoader;Ljava/util/Collection;)V HSPLandroid/app/ApplicationLoaders;->createAndCacheNonBootclasspathSystemClassLoader(Landroid/content/pm/SharedLibraryInfo;)V HSPLandroid/app/ApplicationLoaders;->createAndCacheNonBootclasspathSystemClassLoaders(Ljava/util/List;)V @@ -1256,12 +1260,12 @@ HSPLandroid/app/ApplicationLoaders;->getClassLoaderWithSharedLibraries(Ljava/lan HSPLandroid/app/ApplicationLoaders;->getDefault()Landroid/app/ApplicationLoaders; HSPLandroid/app/ApplicationLoaders;->getSharedLibraryClassLoaderWithSharedLibraries(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Ljava/lang/ClassLoader; HSPLandroid/app/ApplicationLoaders;->sharedLibrariesEquals(Ljava/util/List;Ljava/util/List;)Z -SPLandroid/app/ApplicationPackageManager$1;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V +HSPLandroid/app/ApplicationPackageManager$1;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V HSPLandroid/app/ApplicationPackageManager$1;->recompute(Landroid/app/ApplicationPackageManager$HasSystemFeatureQuery;)Ljava/lang/Boolean; HSPLandroid/app/ApplicationPackageManager$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/ApplicationPackageManager$2;-><init>(Landroid/app/ApplicationPackageManager;Landroid/content/pm/PackageManager$OnChecksumsReadyListener;)V HSPLandroid/app/ApplicationPackageManager$2;->onChecksumsReady(Ljava/util/List;)V -SPLandroid/app/ApplicationPackageManager$3;-><init>(ILjava/lang/String;)V +HSPLandroid/app/ApplicationPackageManager$3;-><init>(ILjava/lang/String;)V HSPLandroid/app/ApplicationPackageManager$3;->recompute(Ljava/lang/Integer;)Landroid/app/ApplicationPackageManager$GetPackagesForUidResult; HSPLandroid/app/ApplicationPackageManager$3;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/ApplicationPackageManager$GetPackagesForUidResult;-><init>([Ljava/lang/String;)V @@ -1273,7 +1277,7 @@ HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;->hashCode()I HSPLandroid/app/ApplicationPackageManager$ResourceName;-><init>(Ljava/lang/String;I)V HSPLandroid/app/ApplicationPackageManager$ResourceName;->equals(Ljava/lang/Object;)Z HSPLandroid/app/ApplicationPackageManager$ResourceName;->hashCode()I -SPLandroid/app/ApplicationPackageManager;-><clinit>()V +HSPLandroid/app/ApplicationPackageManager;-><clinit>()V HSPLandroid/app/ApplicationPackageManager;-><init>(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;)V HSPLandroid/app/ApplicationPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V HSPLandroid/app/ApplicationPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I @@ -1419,16 +1423,16 @@ HSPLandroid/app/BroadcastOptions;->isTemporaryAppAllowlistSet()Z HSPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions; HSPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V HSPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle; -SPLandroid/app/BroadcastStickyCache$$ExternalSyntheticLambda0;-><init>(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;II)V +HSPLandroid/app/BroadcastStickyCache$$ExternalSyntheticLambda0;-><init>(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;II)V HSPLandroid/app/BroadcastStickyCache$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; -SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter$$ExternalSyntheticRecord0;->m(Ljava/lang/Object;Ljava/lang/Object;)I -SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;)V -SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;Landroid/app/BroadcastStickyCache-IA;)V -SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->action()Ljava/lang/String; -SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->filter()Landroid/content/IntentFilter; -SPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->hashCode()I +HSPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter$$ExternalSyntheticRecord0;->m(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;)V +HSPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;Landroid/app/BroadcastStickyCache-IA;)V +HSPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->action()Ljava/lang/String; +HSPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->filter()Landroid/content/IntentFilter; +HSPLandroid/app/BroadcastStickyCache$StickyBroadcastFilter;->hashCode()I HSPLandroid/app/BroadcastStickyCache;->findIpcDataCache(Landroid/content/IntentFilter;)Landroid/os/IpcDataCache; -SPLandroid/app/BroadcastStickyCache;->getConfig(Ljava/lang/String;)Landroid/os/IpcDataCache$Config; +HSPLandroid/app/BroadcastStickyCache;->getConfig(Ljava/lang/String;)Landroid/os/IpcDataCache$Config; HSPLandroid/app/BroadcastStickyCache;->getIntent(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/os/IpcDataCache;Landroid/os/IpcDataCache; HSPLandroid/app/BroadcastStickyCache;->lambda$getIntent$0(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/IntentFilter;Ljava/lang/String;IILjava/lang/Void;)Landroid/content/Intent; HSPLandroid/app/ClientTransactionHandler;-><init>()V @@ -1443,7 +1447,7 @@ HSPLandroid/app/ConfigurationController;->getCurDefaultDisplayDpi()I HSPLandroid/app/ConfigurationController;->getPendingConfiguration(Z)Landroid/content/res/Configuration; HSPLandroid/app/ConfigurationController;->handleConfigurationChanged(Landroid/content/res/Configuration;)V HSPLandroid/app/ConfigurationController;->handleConfigurationChanged(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V -HSPLandroid/app/ConfigurationController;->handleConfigurationChangedInner(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V+]Landroid/app/ActivityThreadInternal;Landroid/app/ActivityThread;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/app/ConfigurationController;->handleConfigurationChangedInner(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V+]Landroid/app/ActivityThreadInternal;Landroid/app/ActivityThread;]Landroid/app/Application;Landroid/app/Application;]Landroid/app/ConfigurationController;Landroid/app/ConfigurationController;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/ConfigurationController;->performConfigurationChanged(Landroid/content/ComponentCallbacks2;Landroid/content/res/Configuration;)V HSPLandroid/app/ConfigurationController;->setCompatConfiguration(Landroid/content/res/Configuration;)V HSPLandroid/app/ConfigurationController;->setConfiguration(Landroid/content/res/Configuration;)V @@ -1683,12 +1687,12 @@ HSPLandroid/app/DownloadManager;-><init>(Landroid/content/Context;)V HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor; HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;[Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/app/EventLogTags;->writeWmOnTopResumedGainedCalled(ILjava/lang/String;Ljava/lang/String;)V -SPLandroid/app/FeatureFlagsImpl;->appStartInfoTimestamps()Z +HSPLandroid/app/FeatureFlagsImpl;->appStartInfoTimestamps()Z HSPLandroid/app/FeatureFlagsImpl;->enableCurrentModeTypeBinderCache()Z HSPLandroid/app/FeatureFlagsImpl;->jankPerceptibleNarrow()Z HSPLandroid/app/FeatureFlagsImpl;->nmBinderPerfCacheChannels()Z -SPLandroid/app/FeatureFlagsImpl;->nmBinderPerfPermissionCheck()Z -SPLandroid/app/FeatureFlagsImpl;->nmBinderPerfThrottleNotify()Z +HSPLandroid/app/FeatureFlagsImpl;->nmBinderPerfPermissionCheck()Z +HSPLandroid/app/FeatureFlagsImpl;->nmBinderPerfThrottleNotify()Z HSPLandroid/app/FeatureFlagsImpl;->notifChannelCropVibrationEffects()Z HSPLandroid/app/FeatureFlagsImpl;->notificationChannelVibrationEffectApi()Z HSPLandroid/app/FeatureFlagsImpl;->picIsolateCacheByUid()Z @@ -1696,16 +1700,16 @@ HSPLandroid/app/FeatureFlagsImpl;->picIsolatedCacheStatistics()Z HSPLandroid/app/FeatureFlagsImpl;->rateLimitGetMemoryInfo()Z HSPLandroid/app/FeatureFlagsImpl;->rateLimitGetMyMemoryState()Z HSPLandroid/app/FeatureFlagsImpl;->rateLimitGetRunningAppProcesses()Z -SPLandroid/app/FeatureFlagsImpl;->reportPostgcMemoryMetrics()Z -SPLandroid/app/FeatureFlagsImpl;->skipBgMemTrimOnFgApp()Z +HSPLandroid/app/FeatureFlagsImpl;->reportPostgcMemoryMetrics()Z +HSPLandroid/app/FeatureFlagsImpl;->skipBgMemTrimOnFgApp()Z HSPLandroid/app/FeatureFlagsImpl;->sortSectionByTime()Z HSPLandroid/app/FeatureFlagsImpl;->useStickyBcastCache()Z HSPLandroid/app/Flags;->appStartInfoTimestamps()Z HSPLandroid/app/Flags;->jankPerceptibleNarrow()Z+]Landroid/app/FeatureFlags;Landroid/app/FeatureFlagsImpl; HSPLandroid/app/Flags;->nmBinderPerfThrottleNotify()Z+]Landroid/app/FeatureFlags;Landroid/app/FeatureFlagsImpl; -SPLandroid/app/Flags;->picIsolateCacheByUid()Z -SPLandroid/app/Flags;->picIsolatedCacheStatistics()Z -SPLandroid/app/Flags;->reportPostgcMemoryMetrics()Z +HSPLandroid/app/Flags;->picIsolateCacheByUid()Z +HSPLandroid/app/Flags;->picIsolatedCacheStatistics()Z +HSPLandroid/app/Flags;->reportPostgcMemoryMetrics()Z HSPLandroid/app/Flags;->useStickyBcastCache()Z+]Landroid/app/FeatureFlags;Landroid/app/FeatureFlagsImpl; HSPLandroid/app/Fragment$1;-><init>(Landroid/app/Fragment;)V HSPLandroid/app/Fragment;-><init>()V @@ -1925,7 +1929,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->cancelIntentSender(Landroid/conten HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionForDevice(Ljava/lang/String;III)I HSPLandroid/app/IActivityManager$Stub$Proxy;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I -SPLandroid/app/IActivityManager$Stub$Proxy;->finishAttachApplication(JJ)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->finishAttachApplication(JJ)V HSPLandroid/app/IActivityManager$Stub$Proxy;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V HSPLandroid/app/IActivityManager$Stub$Proxy;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder; HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUser()Landroid/content/pm/UserInfo; @@ -1951,7 +1955,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->registerReceiverWithFeature(Landro HSPLandroid/app/IActivityManager$Stub$Proxy;->registerStrictModeCallback(Landroid/os/IBinder;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V -HSPLandroid/app/IActivityManager$Stub$Proxy;->reportStartInfoViewTimestamps(JJ)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->reportStartInfoViewTimestamps(JJ)V+]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy; HSPLandroid/app/IActivityManager$Stub$Proxy;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->setRenderThread(I)V @@ -2094,7 +2098,7 @@ HSPLandroid/app/IntentService;->onCreate()V HSPLandroid/app/IntentService;->onDestroy()V HSPLandroid/app/IntentService;->onStart(Landroid/content/Intent;I)V HSPLandroid/app/IntentService;->onStartCommand(Landroid/content/Intent;II)I -SPLandroid/app/JobSchedulerImpl;-><init>(Landroid/app/JobSchedulerImpl;Ljava/lang/String;)V +HSPLandroid/app/JobSchedulerImpl;-><init>(Landroid/app/JobSchedulerImpl;Ljava/lang/String;)V HSPLandroid/app/JobSchedulerImpl;-><init>(Landroid/content/Context;Landroid/app/job/IJobScheduler;)V HSPLandroid/app/JobSchedulerImpl;-><init>(Landroid/content/Context;Landroid/app/job/IJobScheduler;Ljava/lang/String;)V HSPLandroid/app/JobSchedulerImpl;->cancel(I)V @@ -2435,14 +2439,17 @@ HSPLandroid/app/NotificationChannelGroup;->getName()Ljava/lang/CharSequence; HSPLandroid/app/NotificationChannelGroup;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/app/NotificationChannelGroup;->isBlocked()Z HSPLandroid/app/NotificationChannelGroup;->writeToParcel(Landroid/os/Parcel;I)V -SPLandroid/app/NotificationManager$1;-><init>(Landroid/app/NotificationManager;)V +HSPLandroid/app/NotificationManager$1;-><init>(Landroid/app/NotificationManager;)V HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationManager$Policy; HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/NotificationManager$Policy;-><init>(IIIIII)V HSPLandroid/app/NotificationManager$Policy;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/NotificationManager$Policy;->equals(Ljava/lang/Object;)Z HSPLandroid/app/NotificationManager$Policy;->suppressedVisualEffectsEqual(II)Z -SPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;)V +SPLandroid/app/NotificationManager$RateLimiter;-><clinit>()V +HSPLandroid/app/NotificationManager$RateLimiter;-><init>(Landroid/app/NotificationManager;Ljava/lang/String;Ljava/lang/String;F)V +SPLandroid/app/NotificationManager$RateLimiter;-><init>(Landroid/app/NotificationManager;Ljava/lang/String;Ljava/lang/String;FLandroid/app/NotificationManager-IA;)V +HSPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;)V HSPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;Ljava/time/InstantSource;)V HSPLandroid/app/NotificationManager;->areNotificationsEnabled()Z HSPLandroid/app/NotificationManager;->cancel(I)V @@ -2473,7 +2480,7 @@ HSPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Not HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V HSPLandroid/app/NotificationManager;->service()Landroid/app/INotificationManager; HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I -SPLandroid/app/PendingIntent$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V +HSPLandroid/app/PendingIntent$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V HSPLandroid/app/PendingIntent$$ExternalSyntheticLambda2;->get()Ljava/lang/Object; HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -2531,17 +2538,17 @@ HSPLandroid/app/Person;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PictureInPictureParams; HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/PictureInPictureParams;-><init>(Landroid/os/Parcel;)V -SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmApi(Landroid/app/PropertyInvalidatedCache$Args;)Ljava/lang/String; -SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmCacheNulls(Landroid/app/PropertyInvalidatedCache$Args;)Z -SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmIsolateUids(Landroid/app/PropertyInvalidatedCache$Args;)Z -SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmMaxEntries(Landroid/app/PropertyInvalidatedCache$Args;)I -SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmModule(Landroid/app/PropertyInvalidatedCache$Args;)Ljava/lang/String; -SPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmTestMode(Landroid/app/PropertyInvalidatedCache$Args;)Z -SPLandroid/app/PropertyInvalidatedCache$Args;-><init>(Ljava/lang/String;)V +HSPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmApi(Landroid/app/PropertyInvalidatedCache$Args;)Ljava/lang/String; +HSPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmCacheNulls(Landroid/app/PropertyInvalidatedCache$Args;)Z +HSPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmIsolateUids(Landroid/app/PropertyInvalidatedCache$Args;)Z +HSPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmMaxEntries(Landroid/app/PropertyInvalidatedCache$Args;)I +HSPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmModule(Landroid/app/PropertyInvalidatedCache$Args;)Ljava/lang/String; +HSPLandroid/app/PropertyInvalidatedCache$Args;->-$$Nest$fgetmTestMode(Landroid/app/PropertyInvalidatedCache$Args;)Z +HSPLandroid/app/PropertyInvalidatedCache$Args;-><init>(Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache$Args;-><init>(Ljava/lang/String;Ljava/lang/String;IZZZ)V HSPLandroid/app/PropertyInvalidatedCache$Args;->api(Ljava/lang/String;)Landroid/app/PropertyInvalidatedCache$Args; -SPLandroid/app/PropertyInvalidatedCache$Args;->cacheNulls(Z)Landroid/app/PropertyInvalidatedCache$Args; -SPLandroid/app/PropertyInvalidatedCache$Args;->isolateUids(Z)Landroid/app/PropertyInvalidatedCache$Args; +HSPLandroid/app/PropertyInvalidatedCache$Args;->cacheNulls(Z)Landroid/app/PropertyInvalidatedCache$Args; +HSPLandroid/app/PropertyInvalidatedCache$Args;->isolateUids(Z)Landroid/app/PropertyInvalidatedCache$Args; HSPLandroid/app/PropertyInvalidatedCache$Args;->maxEntries(I)Landroid/app/PropertyInvalidatedCache$Args; HSPLandroid/app/PropertyInvalidatedCache$CacheMap$1;-><init>(Landroid/app/PropertyInvalidatedCache$CacheMap;IFZ)V HSPLandroid/app/PropertyInvalidatedCache$CacheMap$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z+]Landroid/app/PropertyInvalidatedCache$CacheMap$1;Landroid/app/PropertyInvalidatedCache$CacheMap$1; @@ -2556,28 +2563,28 @@ HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;-><clinit>()V HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->next()J HSPLandroid/app/PropertyInvalidatedCache$NonceHandler;-><init>(Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache$NonceHandler;->getNonce()J+]Landroid/app/PropertyInvalidatedCache$NonceHandler;Landroid/app/PropertyInvalidatedCache$NonceSharedMem;,Landroid/app/PropertyInvalidatedCache$NonceSysprop; -SPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;-><init>(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;-><init>(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;->getNonceInternal()J+]Landroid/app/PropertyInvalidatedCache$NonceStore;Landroid/app/PropertyInvalidatedCache$NonceStore; HSPLandroid/app/PropertyInvalidatedCache$NonceSharedMem;->initialize(Z)I+]Landroid/app/PropertyInvalidatedCache$NonceStore;Landroid/app/PropertyInvalidatedCache$NonceStore; -SPLandroid/app/PropertyInvalidatedCache$NonceStore;-><clinit>()V -SPLandroid/app/PropertyInvalidatedCache$NonceStore;-><init>(JZ)V +HSPLandroid/app/PropertyInvalidatedCache$NonceStore;-><clinit>()V +HSPLandroid/app/PropertyInvalidatedCache$NonceStore;-><init>(JZ)V HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->getHandleForName(Ljava/lang/String;)I -SPLandroid/app/PropertyInvalidatedCache$NonceStore;->getInstance()Landroid/app/PropertyInvalidatedCache$NonceStore; +HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->getInstance()Landroid/app/PropertyInvalidatedCache$NonceStore; HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->getNonce(I)J HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->refreshStringBlockLocked()V HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->throwIfBadHandle(I)V -SPLandroid/app/PropertyInvalidatedCache$NonceStore;->updateStringMapLocked([B)V -SPLandroid/app/PropertyInvalidatedCache$NonceSysprop;-><init>(Ljava/lang/String;)V +HSPLandroid/app/PropertyInvalidatedCache$NonceStore;->updateStringMapLocked([B)V +HSPLandroid/app/PropertyInvalidatedCache$NonceSysprop;-><init>(Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache$NonceSysprop;->getNonceInternal()J HSPLandroid/app/PropertyInvalidatedCache$QueryHandler;-><init>()V HSPLandroid/app/PropertyInvalidatedCache$QueryHandler;->shouldBypassCache(Ljava/lang/Object;)Z HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$fgetmHighWaterMark(Landroid/app/PropertyInvalidatedCache;)J HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$fgetmMaxEntries(Landroid/app/PropertyInvalidatedCache;)I HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$fputmHighWaterMark(Landroid/app/PropertyInvalidatedCache;J)V -SPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetByteBlock(JI[B)I +HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetByteBlock(JI[B)I HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetByteBlockHash(J)I -SPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetMaxByte(J)I -SPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetMaxNonce(J)I +HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetMaxByte(J)I +HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetMaxNonce(J)I HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smnativeGetNonce(JI)J HSPLandroid/app/PropertyInvalidatedCache;->-$$Nest$smthrowIfInvalidModule(Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache;-><init>(ILjava/lang/String;)V @@ -2589,12 +2596,12 @@ HSPLandroid/app/PropertyInvalidatedCache;->bypass(Ljava/lang/Object;)Z HSPLandroid/app/PropertyInvalidatedCache;->cacheName()Ljava/lang/String; HSPLandroid/app/PropertyInvalidatedCache;->clear()V HSPLandroid/app/PropertyInvalidatedCache;->createPropertyName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -SPLandroid/app/PropertyInvalidatedCache;->createSystemCacheKey(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/PropertyInvalidatedCache;->createSystemCacheKey(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/app/PropertyInvalidatedCache;->disableLocal()V HSPLandroid/app/PropertyInvalidatedCache;->getActiveCaches()Ljava/util/ArrayList; HSPLandroid/app/PropertyInvalidatedCache;->getCurrentNonce()J HSPLandroid/app/PropertyInvalidatedCache;->getNonceHandler(Ljava/lang/String;)Landroid/app/PropertyInvalidatedCache$NonceHandler;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; -SPLandroid/app/PropertyInvalidatedCache;->inSharedMemoryDenyList(Ljava/lang/String;)Z +HSPLandroid/app/PropertyInvalidatedCache;->inSharedMemoryDenyList(Ljava/lang/String;)Z HSPLandroid/app/PropertyInvalidatedCache;->invalidateCache(Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache;->isDisabled()Z HSPLandroid/app/PropertyInvalidatedCache;->isReservedNonce(J)Z @@ -2603,7 +2610,7 @@ HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/O HSPLandroid/app/PropertyInvalidatedCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/PropertyInvalidatedCache;->registerCache()V -SPLandroid/app/PropertyInvalidatedCache;->sharedMemoryOkay(Ljava/lang/String;)Z +HSPLandroid/app/PropertyInvalidatedCache;->sharedMemoryOkay(Ljava/lang/String;)Z HSPLandroid/app/PropertyInvalidatedCache;->throwIfInvalidCacheKey(Ljava/lang/String;)V HSPLandroid/app/PropertyInvalidatedCache;->throwIfInvalidModule(Ljava/lang/String;)V HSPLandroid/app/QueuedWork$QueuedWorkHandler;-><init>(Landroid/os/Looper;)V @@ -2657,9 +2664,9 @@ HSPLandroid/app/ResourcesManager$PathCollector;->collectedKey()Landroid/content/ HSPLandroid/app/ResourcesManager$PathCollector;->isSameAsOriginal()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;)V HSPLandroid/app/ResourcesManager$UpdateHandler;->onLoadersChanged(Landroid/content/res/Resources;Ljava/util/List;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/util/List;Ljava/util/ArrayList; -SPLandroid/app/ResourcesManager;->-$$Nest$fgetmLock(Landroid/app/ResourcesManager;)Ljava/lang/Object; -SPLandroid/app/ResourcesManager;->-$$Nest$mfindKeyForResourceImplLocked(Landroid/app/ResourcesManager;Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey; -SPLandroid/app/ResourcesManager;->-$$Nest$mfindOrCreateResourcesImplForKeyLocked(Landroid/app/ResourcesManager;Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; +HSPLandroid/app/ResourcesManager;->-$$Nest$fgetmLock(Landroid/app/ResourcesManager;)Ljava/lang/Object; +HSPLandroid/app/ResourcesManager;->-$$Nest$mfindKeyForResourceImplLocked(Landroid/app/ResourcesManager;Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey; +HSPLandroid/app/ResourcesManager;->-$$Nest$mfindOrCreateResourcesImplForKeyLocked(Landroid/app/ResourcesManager;Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; HSPLandroid/app/ResourcesManager;-><init>()V HSPLandroid/app/ResourcesManager;->addApplicationPathsLocked(Ljava/lang/String;[Ljava/lang/String;)V HSPLandroid/app/ResourcesManager;->appendLibAssetsForMainAssetPath(Ljava/lang/String;[Ljava/lang/String;)V @@ -2768,10 +2775,10 @@ HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putStringSet(Ljava/lang/Strin HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;-><init>(JZLjava/util/List;Ljava/util/Set;Ljava/util/Map;)V HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;->setDiskWriteResult(ZZ)V -SPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;-><init>()V -SPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;-><init>(Landroid/app/SharedPreferencesImpl-IA;)V +HSPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;-><init>()V +HSPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;-><init>(Landroid/app/SharedPreferencesImpl-IA;)V HSPLandroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; -SPLandroid/app/SharedPreferencesImpl;->$r8$lambda$gCIQI__z13DI5jNIqnAnYLWLcMc(Landroid/app/SharedPreferencesImpl;)V +HSPLandroid/app/SharedPreferencesImpl;->$r8$lambda$gCIQI__z13DI5jNIqnAnYLWLcMc(Landroid/app/SharedPreferencesImpl;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fgetmCurrentMemoryStateGeneration(Landroid/app/SharedPreferencesImpl;)J HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fgetmDiskWritesInFlight(Landroid/app/SharedPreferencesImpl;)I HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fgetmListeners(Landroid/app/SharedPreferencesImpl;)Ljava/util/WeakHashMap; @@ -2783,7 +2790,7 @@ HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmDiskWritesInFlight(Landroid HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmMap(Landroid/app/SharedPreferencesImpl;Ljava/util/Map;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$menqueueDiskWrite(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$mwriteToFile(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V -SPLandroid/app/SharedPreferencesImpl;-><clinit>()V +HSPLandroid/app/SharedPreferencesImpl;-><clinit>()V HSPLandroid/app/SharedPreferencesImpl;-><init>(Ljava/io/File;I)V HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V HSPLandroid/app/SharedPreferencesImpl;->contains(Ljava/lang/String;)Z @@ -2849,12 +2856,12 @@ HSPLandroid/app/SystemServiceRegistry$128;->createService(Landroid/app/ContextIm HSPLandroid/app/SystemServiceRegistry$129;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Landroid/view/textclassifier/TextClassificationManager; HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -SPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Landroid/hardware/devicestate/DeviceStateManager; +HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Landroid/hardware/devicestate/DeviceStateManager; HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$131;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$138;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$13;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$149;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$ContextAwareServiceProducerWithBinder;Landroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda0;,Landroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda1;,Landroid/app/role/RoleFrameworkInitializer$$ExternalSyntheticLambda0;,Landroid/net/wifi/WifiFrameworkInitializer$$ExternalSyntheticLambda0; +HSPLandroid/app/SystemServiceRegistry$149;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$14;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$150;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$ContextAwareServiceProducerWithoutBinder;Landroid/telephony/TelephonyFrameworkInitializer$$ExternalSyntheticLambda1; HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2864,7 +2871,7 @@ HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl HSPLandroid/app/SystemServiceRegistry$20;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager; HSPLandroid/app/SystemServiceRegistry$20;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$20;Landroid/app/SystemServiceRegistry$20; HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -SPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager; +HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager; HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2883,7 +2890,7 @@ HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImp HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager; HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;+]Landroid/content/Context;Landroid/app/ContextImpl; +HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;+]Landroid/content/Context;missing_types HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager; @@ -2898,19 +2905,19 @@ HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImp HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -SPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager; +HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager; HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$47;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -SPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyRegistryManager; +HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyRegistryManager; HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager; HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityManager; HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -SPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager; +HSPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager; HSPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2938,6 +2945,8 @@ HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImp HSPLandroid/app/SystemServiceRegistry$78;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Landroid/app/AlarmManager; HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +SPLandroid/app/SystemServiceRegistry$81;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/UsageStatsManager; +SPLandroid/app/SystemServiceRegistry$81;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$84;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$85;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager; HSPLandroid/app/SystemServiceRegistry$85;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2947,7 +2956,7 @@ HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImp HSPLandroid/app/SystemServiceRegistry$89;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Landroid/media/AudioManager; HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -SPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager; +HSPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager; HSPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$92;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2983,17 +2992,17 @@ HSPLandroid/app/TaskStackListener;->onTaskRemovalStarted(Landroid/app/ActivityMa HSPLandroid/app/TaskStackListener;->onTaskRemoved(I)V HSPLandroid/app/TaskStackListener;->onTaskRequestedOrientationChanged(II)V HSPLandroid/app/UiModeManager$1;-><init>(Landroid/app/UiModeManager;)V -SPLandroid/app/UiModeManager$1;->apply(Ljava/lang/Object;)Ljava/lang/Object; -SPLandroid/app/UiModeManager$1;->apply(Ljava/lang/Void;)Ljava/lang/Integer; -SPLandroid/app/UiModeManager$2;-><init>(Landroid/app/UiModeManager;)V +HSPLandroid/app/UiModeManager$1;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/app/UiModeManager$1;->apply(Ljava/lang/Void;)Ljava/lang/Integer; +HSPLandroid/app/UiModeManager$2;-><init>(Landroid/app/UiModeManager;)V HSPLandroid/app/UiModeManager$Globals;->-$$Nest$fgetmService(Landroid/app/UiModeManager$Globals;)Landroid/app/IUiModeManager; HSPLandroid/app/UiModeManager$Globals;-><init>(Landroid/app/IUiModeManager;)V HSPLandroid/app/UiModeManager$OnProjectionStateChangedListenerResourceManager;-><init>()V -SPLandroid/app/UiModeManager;->-$$Nest$mgetCurrentModeTypeFromServer(Landroid/app/UiModeManager;)Ljava/lang/Integer; +HSPLandroid/app/UiModeManager;->-$$Nest$mgetCurrentModeTypeFromServer(Landroid/app/UiModeManager;)Ljava/lang/Integer; HSPLandroid/app/UiModeManager;-><init>(Landroid/content/Context;)V HSPLandroid/app/UiModeManager;->getActiveProjectionTypes()I HSPLandroid/app/UiModeManager;->getCurrentModeType()I -SPLandroid/app/UiModeManager;->getCurrentModeTypeFromServer()Ljava/lang/Integer; +HSPLandroid/app/UiModeManager;->getCurrentModeTypeFromServer()Ljava/lang/Integer; HSPLandroid/app/UriGrantsManager$1;->create()Landroid/app/IUriGrantsManager; HSPLandroid/app/UriGrantsManager$1;->create()Ljava/lang/Object; HSPLandroid/app/UriGrantsManager;->getService()Landroid/app/IUriGrantsManager; @@ -3341,6 +3350,10 @@ HSPLandroid/app/job/JobInfo;->validateTraceTag(Ljava/lang/String;)Ljava/lang/Str HSPLandroid/app/job/JobInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobParameters; HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +SPLandroid/app/job/JobParameters$JobCleanupCallback;->disableCleaner()V +SPLandroid/app/job/JobParameters$JobCleanupCallback;->enableCleaner()V +SPLandroid/app/job/JobParameters$JobCleanupCallback;->isCleanerEnabled()Z +HSPLandroid/app/job/JobParameters$JobCleanupCallback;->run()V+]Landroid/app/job/IJobCallback;Landroid/app/job/IJobCallback$Stub$Proxy;]Landroid/app/job/JobParameters$JobCleanupCallback;Landroid/app/job/JobParameters$JobCleanupCallback; HSPLandroid/app/job/JobParameters;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/job/JobParameters;->completeWork(Landroid/app/job/JobWorkItem;)V HSPLandroid/app/job/JobParameters;->dequeueWork()Landroid/app/job/JobWorkItem; @@ -3354,6 +3367,7 @@ HSPLandroid/app/job/JobParameters;->getStopReason()I HSPLandroid/app/job/JobParameters;->getTransientExtras()Landroid/os/Bundle; HSPLandroid/app/job/JobParameters;->getTriggeredContentAuthorities()[Ljava/lang/String; HSPLandroid/app/job/JobParameters;->getTriggeredContentUris()[Landroid/net/Uri; +HSPLandroid/app/job/JobParameters;->initCleaner(Landroid/app/job/JobParameters$JobCleanupCallback;)V HSPLandroid/app/job/JobParameters;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/job/JobScheduler;-><init>()V HSPLandroid/app/job/JobScheduler;->sanitizeNamespace(Ljava/lang/String;)Ljava/lang/String; @@ -3426,8 +3440,8 @@ HSPLandroid/app/servertransaction/ActivityResultItem$1;->createFromParcel(Landro HSPLandroid/app/servertransaction/ActivityResultItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;)V HSPLandroid/app/servertransaction/ActivityResultItem;->getPostExecutionState()I HSPLandroid/app/servertransaction/ActivityTransactionItem;->getActivityToken()Landroid/os/IBinder; -SPLandroid/app/servertransaction/BaseClientRequest;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/app/servertransaction/PendingTransactionActions;)V -SPLandroid/app/servertransaction/BaseClientRequest;->preExecute(Landroid/app/ClientTransactionHandler;)V +HSPLandroid/app/servertransaction/BaseClientRequest;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/app/servertransaction/PendingTransactionActions;)V +HSPLandroid/app/servertransaction/BaseClientRequest;->preExecute(Landroid/app/ClientTransactionHandler;)V HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ClientTransaction; HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V @@ -3441,13 +3455,13 @@ HSPLandroid/app/servertransaction/ClientTransactionItem;->getActivityToken()Land HSPLandroid/app/servertransaction/ClientTransactionItem;->getPostExecutionState()I HSPLandroid/app/servertransaction/ClientTransactionItem;->isActivityLifecycleItem()Z HSPLandroid/app/servertransaction/ClientTransactionItem;->shouldHaveDefinedPreExecutionState()Z -SPLandroid/app/servertransaction/ClientTransactionListenerController;-><init>(Landroid/hardware/display/DisplayManagerGlobal;)V +HSPLandroid/app/servertransaction/ClientTransactionListenerController;-><init>(Landroid/hardware/display/DisplayManagerGlobal;)V HSPLandroid/app/servertransaction/ClientTransactionListenerController;->getInstance()Landroid/app/servertransaction/ClientTransactionListenerController; HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onClientTransactionFinished()V+]Landroid/app/servertransaction/ClientTransactionListenerController;Landroid/app/servertransaction/ClientTransactionListenerController;]Landroid/content/Context;missing_types HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onClientTransactionStarted()V HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onContextConfigurationPostChanged(Landroid/content/Context;)V HSPLandroid/app/servertransaction/ClientTransactionListenerController;->onContextConfigurationPreChanged(Landroid/content/Context;)V+]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources; -HSPLandroid/app/servertransaction/ClientTransactionListenerController;->shouldReportDisplayChange(Landroid/content/Context;Landroid/content/res/Configuration;)Z+]Landroid/content/Context;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/app/servertransaction/ClientTransactionListenerController;->shouldReportDisplayChange(Landroid/content/Context;Landroid/content/res/Configuration;)Z+]Landroid/content/Context;Landroid/window/WindowContext;]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ConfigurationChangeItem; HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/servertransaction/ConfigurationChangeItem;-><init>(Landroid/os/Parcel;)V @@ -3460,6 +3474,7 @@ HSPLandroid/app/servertransaction/LaunchActivityItem$1;->createFromParcel(Landro HSPLandroid/app/servertransaction/LaunchActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/IBinder;ILandroid/content/res/Configuration;Landroid/content/res/Configuration;ILjava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;Landroid/app/ActivityOptions$SceneTransitionInfo;ZLandroid/app/ProfilerInfo;Landroid/os/IBinder;Landroid/app/IActivityClientController;Landroid/os/IBinder;ZLandroid/os/IBinder;Landroid/os/IBinder;Landroid/window/ActivityWindowInfo;)V HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/Parcel;)V +HSPLandroid/app/servertransaction/LaunchActivityItem;->getActivityToken()Landroid/os/IBinder; HSPLandroid/app/servertransaction/NewIntentItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/NewIntentItem; HSPLandroid/app/servertransaction/NewIntentItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/servertransaction/NewIntentItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;)V @@ -3515,6 +3530,11 @@ HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestOfStates HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestPreExecutionState(Landroid/app/ActivityThread$ActivityClientRecord;I)I HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getLifecyclePath(IIZ)Landroid/util/IntArray; HSPLandroid/app/servertransaction/TransactionExecutorHelper;->shouldExcludeLastLifecycleState(Ljava/util/List;I)Z+]Landroid/app/servertransaction/ActivityLifecycleItem;Landroid/app/servertransaction/ResumeActivityItem;]Landroid/app/servertransaction/ClientTransactionItem;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/app/servertransaction/WindowStateInsetsControlChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/WindowStateInsetsControlChangeItem; +HSPLandroid/app/servertransaction/WindowStateInsetsControlChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/servertransaction/WindowStateInsetsControlChangeItem;-><init>(Landroid/os/Parcel;)V +SPLandroid/app/servertransaction/WindowStateInsetsControlChangeItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/WindowStateInsetsControlChangeItem-IA;)V +HSPLandroid/app/servertransaction/WindowStateInsetsControlChangeItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/view/IWindow;Landroid/app/servertransaction/PendingTransactionActions;)V+]Landroid/view/IWindow;missing_types HSPLandroid/app/servertransaction/WindowStateTransactionItem;-><init>(Landroid/os/Parcel;)V HSPLandroid/app/servertransaction/WindowStateTransactionItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/app/servertransaction/PendingTransactionActions;)V+]Landroid/app/servertransaction/WindowStateTransactionItem$TransactionListener;Landroid/view/ViewRootImpl$W;]Landroid/app/servertransaction/WindowStateTransactionItem;Landroid/app/servertransaction/WindowStateInsetsControlChangeItem;,Landroid/app/servertransaction/WindowStateResizeItem; HSPLandroid/app/slice/ISliceManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V @@ -3619,9 +3639,9 @@ HSPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/Usag HSPLandroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List; HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda3;-><init>()V HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda5;-><init>()V -SPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda7;->run()V +HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda7;->run()V HSPLandroid/appwidget/AppWidgetManager$ServiceCollectionCache;-><init>(Landroid/content/Context;J)V -SPLandroid/appwidget/AppWidgetManager;->$r8$lambda$WKLPyaeqLNLNb3560d7QJuq2DwQ(Landroid/appwidget/AppWidgetManager;)V +HSPLandroid/appwidget/AppWidgetManager;->$r8$lambda$WKLPyaeqLNLNb3560d7QJuq2DwQ(Landroid/appwidget/AppWidgetManager;)V HSPLandroid/appwidget/AppWidgetManager;-><init>(Landroid/content/Context;Lcom/android/internal/appwidget/IAppWidgetService;)V HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForPackage(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; @@ -4381,7 +4401,7 @@ HSPLandroid/content/IntentFilter;->countActions()I HSPLandroid/content/IntentFilter;->countCategories()I HSPLandroid/content/IntentFilter;->countDataAuthorities()I HSPLandroid/content/IntentFilter;->countDataPaths()I -SPLandroid/content/IntentFilter;->countDataSchemeSpecificParts()I +HSPLandroid/content/IntentFilter;->countDataSchemeSpecificParts()I HSPLandroid/content/IntentFilter;->countDataSchemes()I HSPLandroid/content/IntentFilter;->countDataTypes()I HSPLandroid/content/IntentFilter;->countMimeGroups()I @@ -5046,12 +5066,12 @@ HSPLandroid/content/res/ApkAssets;->finalize()V HSPLandroid/content/res/ApkAssets;->getAssetPath()Ljava/lang/String; HSPLandroid/content/res/ApkAssets;->getDebugName()Ljava/lang/String; HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence; -SPLandroid/content/res/ApkAssets;->isForLoader()Z -SPLandroid/content/res/ApkAssets;->isOverlay()Z -SPLandroid/content/res/ApkAssets;->isSharedLib()Z -SPLandroid/content/res/ApkAssets;->isSystem()Z +HSPLandroid/content/res/ApkAssets;->isForLoader()Z +HSPLandroid/content/res/ApkAssets;->isOverlay()Z +HSPLandroid/content/res/ApkAssets;->isSharedLib()Z +HSPLandroid/content/res/ApkAssets;->isSystem()Z HSPLandroid/content/res/ApkAssets;->isUpToDate()Z -SPLandroid/content/res/ApkAssets;->loadFromFd(Ljava/io/FileDescriptor;Ljava/lang/String;ILandroid/content/res/loader/AssetsProvider;)Landroid/content/res/ApkAssets; +HSPLandroid/content/res/ApkAssets;->loadFromFd(Ljava/io/FileDescriptor;Ljava/lang/String;ILandroid/content/res/loader/AssetsProvider;)Landroid/content/res/ApkAssets; HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;)Landroid/content/res/ApkAssets; HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;I)Landroid/content/res/ApkAssets; HSPLandroid/content/res/ApkAssets;->loadOverlayFromPath(Ljava/lang/String;I)Landroid/content/res/ApkAssets; @@ -5088,11 +5108,11 @@ HSPLandroid/content/res/AssetManager$Builder;->build()Landroid/content/res/Asset HSPLandroid/content/res/AssetManager;->-$$Nest$fgetmObject(Landroid/content/res/AssetManager;)J HSPLandroid/content/res/AssetManager;->-$$Nest$fputmApkAssets(Landroid/content/res/AssetManager;[Landroid/content/res/ApkAssets;)V HSPLandroid/content/res/AssetManager;->-$$Nest$fputmLoaders(Landroid/content/res/AssetManager;[Landroid/content/res/loader/ResourcesLoader;)V -HSPLandroid/content/res/AssetManager;->-$$Nest$mdecRefsLocked(Landroid/content/res/AssetManager;J)V HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetDestroy(J)V HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetGetLength(J)J HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetGetRemainingLength(J)J HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetRead(J[BII)I +SPLandroid/content/res/AssetManager;->-$$Nest$smnativeSetApkAssets(J[Landroid/content/res/ApkAssets;ZZ)V HSPLandroid/content/res/AssetManager;-><init>()V HSPLandroid/content/res/AssetManager;-><init>(Z)V HSPLandroid/content/res/AssetManager;-><init>(ZLandroid/content/res/AssetManager-IA;)V @@ -5102,7 +5122,7 @@ HSPLandroid/content/res/AssetManager;->close()V HSPLandroid/content/res/AssetManager;->containsAllocatedTable()Z HSPLandroid/content/res/AssetManager;->createSystemAssetsInZygoteLocked(ZLjava/lang/String;)V HSPLandroid/content/res/AssetManager;->createTheme()J -HSPLandroid/content/res/AssetManager;->decRefsLocked(J)V +HSPLandroid/content/res/AssetManager;->decRefs(J)V HSPLandroid/content/res/AssetManager;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V HSPLandroid/content/res/AssetManager;->ensureOpenLocked()V HSPLandroid/content/res/AssetManager;->ensureValidLocked()V @@ -5188,19 +5208,19 @@ HSPLandroid/content/res/CompatibilityInfo;->applyOverrideIfNeeded(Landroid/util/ HSPLandroid/content/res/CompatibilityInfo;->applyToConfiguration(ILandroid/content/res/Configuration;)V HSPLandroid/content/res/CompatibilityInfo;->applyToDisplayMetrics(Landroid/util/DisplayMetrics;)V HSPLandroid/content/res/CompatibilityInfo;->equals(Ljava/lang/Object;)Z -SPLandroid/content/res/CompatibilityInfo;->getCompatibilityChangesForConfig(Landroid/content/res/CompatibilityInfo;)I +HSPLandroid/content/res/CompatibilityInfo;->getCompatibilityChangesForConfig(Landroid/content/res/CompatibilityInfo;)I HSPLandroid/content/res/CompatibilityInfo;->getOverrideInvertedScale()F HSPLandroid/content/res/CompatibilityInfo;->getTranslator()Landroid/content/res/CompatibilityInfo$Translator; HSPLandroid/content/res/CompatibilityInfo;->hasOverrideDisplayRotation()Z HSPLandroid/content/res/CompatibilityInfo;->hasOverrideScale()Z HSPLandroid/content/res/CompatibilityInfo;->hasOverrideScaling()Z HSPLandroid/content/res/CompatibilityInfo;->hashCode()I -SPLandroid/content/res/CompatibilityInfo;->isDisplayRotationEqual(Landroid/content/res/CompatibilityInfo;)Z -SPLandroid/content/res/CompatibilityInfo;->isOverrideDisplayRotationRequired()Z -SPLandroid/content/res/CompatibilityInfo;->isScaleEqual(Landroid/content/res/CompatibilityInfo;)Z +HSPLandroid/content/res/CompatibilityInfo;->isDisplayRotationEqual(Landroid/content/res/CompatibilityInfo;)Z +HSPLandroid/content/res/CompatibilityInfo;->isOverrideDisplayRotationRequired()Z +HSPLandroid/content/res/CompatibilityInfo;->isScaleEqual(Landroid/content/res/CompatibilityInfo;)Z HSPLandroid/content/res/CompatibilityInfo;->isScalingRequired()Z HSPLandroid/content/res/CompatibilityInfo;->needsCompatResources()Z -SPLandroid/content/res/CompatibilityInfo;->setOverrideDisplayRotation(I)V +HSPLandroid/content/res/CompatibilityInfo;->setOverrideDisplayRotation(I)V HSPLandroid/content/res/CompatibilityInfo;->setOverrideInvertedScale(F)V HSPLandroid/content/res/CompatibilityInfo;->supportsScreen()Z HSPLandroid/content/res/ComplexColor;-><init>()V @@ -5402,7 +5422,7 @@ HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda1;->get()Ljava/lan HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda2;-><init>()V HSPLandroid/content/res/ResourcesImpl$$ExternalSyntheticLambda2;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V HSPLandroid/content/res/ResourcesImpl$LookupStack;-><init>()V -SPLandroid/content/res/ResourcesImpl$LookupStack;-><init>(Landroid/content/res/ResourcesImpl-IA;)V +HSPLandroid/content/res/ResourcesImpl$LookupStack;-><init>(Landroid/content/res/ResourcesImpl-IA;)V HSPLandroid/content/res/ResourcesImpl$LookupStack;->contains(I)Z HSPLandroid/content/res/ResourcesImpl$LookupStack;->pop()V HSPLandroid/content/res/ResourcesImpl$LookupStack;->push(I)V @@ -5470,7 +5490,7 @@ HSPLandroid/content/res/ResourcesImpl;->startPreloading()V HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V HSPLandroid/content/res/ResourcesImpl;->updateConfigurationImpl(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Z)V HSPLandroid/content/res/ResourcesImpl;->verifyPreloadConfig(IIILjava/lang/String;)Z -SPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;[Landroid/content/res/loader/ResourcesLoader;)V HSPLandroid/content/res/ResourcesKey;->equals(Ljava/lang/Object;)Z HSPLandroid/content/res/ResourcesKey;->hasOverrideConfiguration()Z @@ -5578,18 +5598,18 @@ HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V HSPLandroid/content/res/XmlBlock;->finalize()V HSPLandroid/content/res/XmlBlock;->newParser()Landroid/content/res/XmlResourceParser; HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceParser; -SPLandroid/content/res/loader/ResourcesLoader;-><init>()V -SPLandroid/content/res/loader/ResourcesLoader;->addProvider(Landroid/content/res/loader/ResourcesProvider;)V -SPLandroid/content/res/loader/ResourcesLoader;->arrayEquals([Landroid/content/res/loader/ResourcesProvider;[Landroid/content/res/loader/ResourcesProvider;)Z -SPLandroid/content/res/loader/ResourcesLoader;->getApkAssets()Ljava/util/List; -HSPLandroid/content/res/loader/ResourcesLoader;->notifyProvidersChangedLocked()V +HSPLandroid/content/res/loader/ResourcesLoader;-><init>()V +HSPLandroid/content/res/loader/ResourcesLoader;->addProvider(Landroid/content/res/loader/ResourcesProvider;)V +HSPLandroid/content/res/loader/ResourcesLoader;->arrayEquals([Landroid/content/res/loader/ResourcesProvider;[Landroid/content/res/loader/ResourcesProvider;)Z +HSPLandroid/content/res/loader/ResourcesLoader;->getApkAssets()Ljava/util/List; +HSPLandroid/content/res/loader/ResourcesLoader;->notifyProvidersChangedLocked()V+]Landroid/content/res/loader/ResourcesProvider;Landroid/content/res/loader/ResourcesProvider; HSPLandroid/content/res/loader/ResourcesLoader;->registerOnProvidersChangedCallback(Ljava/lang/Object;Landroid/content/res/loader/ResourcesLoader$UpdateCallbacks;)V -SPLandroid/content/res/loader/ResourcesProvider;-><init>(Landroid/content/res/ApkAssets;)V -SPLandroid/content/res/loader/ResourcesProvider;->decrementRefCount()V -SPLandroid/content/res/loader/ResourcesProvider;->getApkAssets()Landroid/content/res/ApkAssets; -SPLandroid/content/res/loader/ResourcesProvider;->incrementRefCount()V -SPLandroid/content/res/loader/ResourcesProvider;->loadFromApk(Landroid/os/ParcelFileDescriptor;)Landroid/content/res/loader/ResourcesProvider; -SPLandroid/content/res/loader/ResourcesProvider;->loadFromApk(Landroid/os/ParcelFileDescriptor;Landroid/content/res/loader/AssetsProvider;)Landroid/content/res/loader/ResourcesProvider; +HSPLandroid/content/res/loader/ResourcesProvider;-><init>(Landroid/content/res/ApkAssets;)V +HSPLandroid/content/res/loader/ResourcesProvider;->decrementRefCount()V +HSPLandroid/content/res/loader/ResourcesProvider;->getApkAssets()Landroid/content/res/ApkAssets; +HSPLandroid/content/res/loader/ResourcesProvider;->incrementRefCount()V +HSPLandroid/content/res/loader/ResourcesProvider;->loadFromApk(Landroid/os/ParcelFileDescriptor;)Landroid/content/res/loader/ResourcesProvider; +HSPLandroid/content/res/loader/ResourcesProvider;->loadFromApk(Landroid/os/ParcelFileDescriptor;Landroid/content/res/loader/AssetsProvider;)Landroid/content/res/loader/ResourcesProvider; HSPLandroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/content/type/DefaultMimeMapFactory;->create()Llibcore/content/type/MimeMap; HSPLandroid/content/type/DefaultMimeMapFactory;->lambda$create$0(Ljava/lang/Class;Ljava/lang/String;)Ljava/io/InputStream; @@ -5811,6 +5831,7 @@ HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V HSPLandroid/database/Observable;->unregisterAll()V HSPLandroid/database/Observable;->unregisterObserver(Ljava/lang/Object;)V HSPLandroid/database/sqlite/FeatureFlagsImpl;-><init>()V +SPLandroid/database/sqlite/FeatureFlagsImpl;->concurrentOpenHelper()Z HSPLandroid/database/sqlite/FeatureFlagsImpl;->onewayFinalizerCloseFixed()Z HSPLandroid/database/sqlite/Flags;-><clinit>()V HSPLandroid/database/sqlite/SQLiteClosable;-><init>()V @@ -5822,14 +5843,14 @@ HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->isLegacyCompatibilityWalEnabled()Z HSPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>(Landroid/database/sqlite/SQLiteConnection;)V -SPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection-IA;)V +HSPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection-IA;)V HSPLandroid/database/sqlite/SQLiteConnection$Operation;->copyFrom(Landroid/database/sqlite/SQLiteConnection$Operation;)V HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V HSPLandroid/database/sqlite/SQLiteConnection$Operation;->getTraceMethodName()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteConnection$Operation;->setEmpty()V HSPLandroid/database/sqlite/SQLiteConnection$Operation;->start()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; -SPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda0;-><init>(Landroid/database/sqlite/SQLiteConnection$OperationLog;)V -SPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;-><init>()V +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda0;-><init>(Landroid/database/sqlite/SQLiteConnection$OperationLog;)V +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;-><init>()V HSPLandroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object; HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;-><init>(Landroid/database/sqlite/SQLiteConnection;)V HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I @@ -5907,7 +5928,7 @@ HSPLandroid/database/sqlite/SQLiteConnection;->setSyncMode(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteConnection;->setSyncModeFromConfiguration()V HSPLandroid/database/sqlite/SQLiteConnection;->throwIfStatementForbidden(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>()V -SPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>(Landroid/database/sqlite/SQLiteConnectionPool-IA;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>(Landroid/database/sqlite/SQLiteConnectionPool-IA;)V HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionAcquired(Landroid/database/sqlite/SQLiteConnection;)V HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionClosed(Landroid/database/sqlite/SQLiteConnection;)V HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionReleased(Landroid/database/sqlite/SQLiteConnection;)V @@ -6171,7 +6192,7 @@ HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/S HSPLandroid/database/sqlite/SQLiteStatementInfo;-><init>()V HSPLandroid/ddm/DdmHandle;->putString(Ljava/nio/ByteBuffer;Ljava/lang/String;)V HSPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;)V -SPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/ddm/DdmHandleAppName-IA;)V +HSPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/ddm/DdmHandleAppName-IA;)V HSPLandroid/ddm/DdmHandleAppName;->sendAPNM(Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;I)V HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;Ljava/lang/String;I)V @@ -6180,7 +6201,6 @@ HSPLandroid/ddm/DdmHandleHello;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chu HSPLandroid/ddm/DdmHandleHello;->handleFEAT(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; HSPLandroid/ddm/DdmHandleHello;->handleHELO(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; HSPLandroid/ddm/DdmHandleProfiling;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; -HSPLandroid/graphics/BLASTBufferQueue;-><init>(Ljava/lang/String;Landroid/view/SurfaceControl;III)V HSPLandroid/graphics/BLASTBufferQueue;-><init>(Ljava/lang/String;Z)V HSPLandroid/graphics/BLASTBufferQueue;->createSurface()Landroid/view/Surface; HSPLandroid/graphics/BLASTBufferQueue;->destroy()V @@ -7035,7 +7055,7 @@ HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/T HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder; HSPLandroid/graphics/Typeface;-><init>(J)V HSPLandroid/graphics/Typeface;-><init>(JLjava/lang/String;)V -HSPLandroid/graphics/Typeface;-><init>(JLjava/lang/String;Landroid/graphics/Typeface;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; +HSPLandroid/graphics/Typeface;-><init>(JLjava/lang/String;Landroid/graphics/Typeface;)V HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->create(Ljava/lang/String;I)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface; @@ -7393,7 +7413,7 @@ HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter; HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>()V -SPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>(Landroid/graphics/drawable/DrawableContainer-IA;)V +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>(Landroid/graphics/drawable/DrawableContainer-IA;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; @@ -8104,9 +8124,9 @@ HSPLandroid/graphics/fonts/Font;-><init>(J)V HSPLandroid/graphics/fonts/Font;->getAxes()[Landroid/graphics/fonts/FontVariationAxis; HSPLandroid/graphics/fonts/Font;->getNativePtr()J HSPLandroid/graphics/fonts/Font;->getStyle()Landroid/graphics/fonts/FontStyle; -SPLandroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;->-$$Nest$sfgetsFamilyRegistry()Llibcore/util/NativeAllocationRegistry; -SPLandroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;-><clinit>()V -SPLandroid/graphics/fonts/FontFamily$Builder;->-$$Nest$smnGetReleaseNativeFamily()J +HSPLandroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;->-$$Nest$sfgetsFamilyRegistry()Llibcore/util/NativeAllocationRegistry; +HSPLandroid/graphics/fonts/FontFamily$Builder$NoImagePreloadHolder;-><clinit>()V +HSPLandroid/graphics/fonts/FontFamily$Builder;->-$$Nest$smnGetReleaseNativeFamily()J HSPLandroid/graphics/fonts/FontFamily$Builder;-><init>(Landroid/graphics/fonts/Font;)V HSPLandroid/graphics/fonts/FontFamily$Builder;->build()Landroid/graphics/fonts/FontFamily; HSPLandroid/graphics/fonts/FontFamily$Builder;->build(Ljava/lang/String;IZZI)Landroid/graphics/fonts/FontFamily; @@ -8123,7 +8143,6 @@ HSPLandroid/graphics/fonts/FontVariationAxis;-><init>(Ljava/lang/String;F)V HSPLandroid/graphics/fonts/FontVariationAxis;->fromFontVariationSettings(Ljava/lang/String;)[Landroid/graphics/fonts/FontVariationAxis; HSPLandroid/graphics/fonts/FontVariationAxis;->isValidTag(Ljava/lang/String;)Z HSPLandroid/graphics/fonts/FontVariationAxis;->makeTag(Ljava/lang/String;)I -HSPLandroid/graphics/fonts/FontVariationAxis;->toString()Ljava/lang/String; HSPLandroid/graphics/fonts/SystemFonts;->mmap(Ljava/lang/String;)Ljava/nio/ByteBuffer; HSPLandroid/graphics/text/LineBreakConfig$Builder;-><init>()V HSPLandroid/graphics/text/LineBreakConfig$Builder;->build()Landroid/graphics/text/LineBreakConfig; @@ -8172,7 +8191,7 @@ HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Landr HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Landroid/hardware/CameraStatus; HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Ljava/lang/Object; -SPLandroid/hardware/DataSpace;->pack(III)I +HSPLandroid/hardware/DataSpace;->pack(III)I HSPLandroid/hardware/GeomagneticField$LegendreTable;-><init>(IF)V HSPLandroid/hardware/GeomagneticField;-><init>(FFFJ)V HSPLandroid/hardware/GeomagneticField;->computeGeocentricCoordinates(FFF)V @@ -8224,8 +8243,8 @@ HSPLandroid/hardware/SensorPrivacyManager;->isSensorPrivacyEnabled(II)Z HSPLandroid/hardware/SyncFence;-><init>(J)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/hardware/SyncFence;-><init>(Landroid/hardware/SyncFence;)V HSPLandroid/hardware/SyncFence;->await(J)Z -SPLandroid/hardware/SyncFence;->awaitForever()Z -HSPLandroid/hardware/SyncFence;->close()V +HSPLandroid/hardware/SyncFence;->awaitForever()Z +HSPLandroid/hardware/SyncFence;->close()V+]Ljava/lang/Runnable;Llibcore/util/NativeAllocationRegistry$CleanerRunner; HSPLandroid/hardware/SyncFence;->getSignalTime()J HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;-><init>(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;ILjava/lang/String;)V HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->addSensor(Landroid/hardware/Sensor;II)Z @@ -8246,7 +8265,7 @@ HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Land HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->dispatchSensorEvent(I[FIJ)V HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V HSPLandroid/hardware/SystemSensorManager;->-$$Nest$fgetmHandleToSensor(Landroid/hardware/SystemSensorManager;)Ljava/util/HashMap; -SPLandroid/hardware/SystemSensorManager;-><clinit>()V +HSPLandroid/hardware/SystemSensorManager;-><clinit>()V HSPLandroid/hardware/SystemSensorManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V HSPLandroid/hardware/SystemSensorManager;->cancelTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;Z)Z HSPLandroid/hardware/SystemSensorManager;->getFullSensorList()Ljava/util/List; @@ -8356,30 +8375,32 @@ HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType()Ljava/lang/Class; HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType(Ljava/lang/reflect/Type;)Ljava/lang/Class; HSPLandroid/hardware/camera2/utils/TypeReference;->getType()Ljava/lang/reflect/Type; HSPLandroid/hardware/camera2/utils/TypeReference;->hashCode()I -SPLandroid/hardware/devicestate/DeviceState$Configuration;-><init>(ILjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;)V -SPLandroid/hardware/devicestate/DeviceState$Configuration;-><init>(ILjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/hardware/devicestate/DeviceState-IA;)V -SPLandroid/hardware/devicestate/DeviceState$Configuration;->getIdentifier()I -SPLandroid/hardware/devicestate/DeviceState;-><init>(Landroid/hardware/devicestate/DeviceState$Configuration;)V -SPLandroid/hardware/devicestate/DeviceState;->getIdentifier()I +HSPLandroid/hardware/devicestate/DeviceState$Configuration;-><init>(ILjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;)V +HSPLandroid/hardware/devicestate/DeviceState$Configuration;-><init>(ILjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/hardware/devicestate/DeviceState-IA;)V +HSPLandroid/hardware/devicestate/DeviceState$Configuration;->getIdentifier()I +HSPLandroid/hardware/devicestate/DeviceState;-><init>(Landroid/hardware/devicestate/DeviceState$Configuration;)V +HSPLandroid/hardware/devicestate/DeviceState;->getIdentifier()I HSPLandroid/hardware/devicestate/DeviceStateInfo$1;-><init>()V HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/devicestate/DeviceStateInfo; HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/devicestate/DeviceStateInfo;-><clinit>()V HSPLandroid/hardware/devicestate/DeviceStateManager;-><init>()V +SPLandroid/hardware/devicestate/DeviceStateManager;->getSupportedDeviceStates()Ljava/util/List; HSPLandroid/hardware/devicestate/DeviceStateManager;->registerCallback(Ljava/util/concurrent/Executor;Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda0;->run()V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda1;->run()V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda2;->run()V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;-><init>(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;Ljava/util/concurrent/Executor;)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;-><init>(Landroid/hardware/devicestate/DeviceStateManagerGlobal;)V -SPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;-><init>(Landroid/hardware/devicestate/DeviceStateManagerGlobal;Landroid/hardware/devicestate/DeviceStateManagerGlobal-IA;)V +HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;-><init>(Landroid/hardware/devicestate/DeviceStateManagerGlobal;Landroid/hardware/devicestate/DeviceStateManagerGlobal-IA;)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback;->onDeviceStateInfoChanged(Landroid/hardware/devicestate/DeviceStateInfo;)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->-$$Nest$mhandleDeviceStateInfoChanged(Landroid/hardware/devicestate/DeviceStateManagerGlobal;Landroid/hardware/devicestate/DeviceStateInfo;)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;-><init>(Landroid/hardware/devicestate/IDeviceStateManager;)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->findCallbackLocked(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;)I HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->getInstance()Landroid/hardware/devicestate/DeviceStateManagerGlobal; +SPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->getSupportedDeviceStates()Ljava/util/List; HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->handleDeviceStateInfoChanged(Landroid/hardware/devicestate/DeviceStateInfo;)V -SPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->registerCallbackLocked()V +HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->registerCallbackLocked()V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal;->registerDeviceStateCallback(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;Ljava/util/concurrent/Executor;)V HSPLandroid/hardware/devicestate/IDeviceStateManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/hardware/devicestate/IDeviceStateManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -8435,7 +8456,7 @@ HSPLandroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/har HSPLandroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V HSPLandroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;J)V HSPLandroid/hardware/display/DisplayManager;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V -SPLandroid/hardware/display/DisplayManagerGlobal$1;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V +HSPLandroid/hardware/display/DisplayManagerGlobal$1;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;Landroid/app/PropertyInvalidatedCache$QueryHandler;)V HSPLandroid/hardware/display/DisplayManagerGlobal$1;->recompute(Ljava/lang/Integer;)Landroid/view/DisplayInfo; HSPLandroid/hardware/display/DisplayManagerGlobal$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate$$ExternalSyntheticLambda0;-><init>(Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;JIILandroid/view/DisplayInfo;Z)V @@ -8444,7 +8465,7 @@ HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clea HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleDisplayEventInner(IILandroid/view/DisplayInfo;Z)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(IILandroid/view/DisplayInfo;Z)V+]Ljava/util/concurrent/Executor;missing_types HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;)V -SPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal-IA;)V +HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal-IA;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$fgetmDm(Landroid/hardware/display/DisplayManagerGlobal;)Landroid/hardware/display/IDisplayManager; HSPLandroid/hardware/display/DisplayManagerGlobal;-><init>(Landroid/hardware/display/IDisplayManager;)V @@ -8459,13 +8480,13 @@ HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayInfo(I)Landroid/vi HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayInfoLocked(I)Landroid/view/DisplayInfo; HSPLandroid/hardware/display/DisplayManagerGlobal;->getInstance()Landroid/hardware/display/DisplayManagerGlobal; HSPLandroid/hardware/display/DisplayManagerGlobal;->getLooperForHandler(Landroid/os/Handler;)Landroid/os/Looper; -SPLandroid/hardware/display/DisplayManagerGlobal;->getOverlaySupport()Landroid/hardware/OverlayProperties; +HSPLandroid/hardware/display/DisplayManagerGlobal;->getOverlaySupport()Landroid/hardware/OverlayProperties; HSPLandroid/hardware/display/DisplayManagerGlobal;->getPreferredWideGamutColorSpace()Landroid/graphics/ColorSpace; HSPLandroid/hardware/display/DisplayManagerGlobal;->getStableDisplaySize()Landroid/graphics/Point; HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; HSPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(IIZ)V+]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; HSPLandroid/hardware/display/DisplayManagerGlobal;->initExtraLogging()Z -SPLandroid/hardware/display/DisplayManagerGlobal;->mapPrivateEventFlags(J)J +HSPLandroid/hardware/display/DisplayManagerGlobal;->mapPrivateEventFlags(J)J HSPLandroid/hardware/display/DisplayManagerGlobal;->mapPublicEventFlags(J)J HSPLandroid/hardware/display/DisplayManagerGlobal;->maybeLogAllDisplayListeners()V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V @@ -8738,7 +8759,7 @@ HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBu HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; -SPLandroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; HSPLandroid/icu/impl/ICUBinary;->addBaseNamesInFileFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I @@ -9394,8 +9415,6 @@ HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/Strin HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setRegion(Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder; HSPLandroid/icu/impl/locale/KeyTypeData;->initFromResourceBundle()V HSPLandroid/icu/impl/locale/LSR$CachedDecoder$$ExternalSyntheticLambda0;-><init>()V -HSPLandroid/icu/impl/locale/LSR$CachedDecoder$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/icu/impl/locale/LSR$CachedDecoder;->$r8$lambda$2Vo5iUPXBd-yMfh29hR8_HJ2Bj4(I)Ljava/lang/String; HSPLandroid/icu/impl/locale/LSR$CachedDecoder;->decode(I)[Ljava/lang/String; HSPLandroid/icu/impl/locale/LSR$CachedDecoder;->toLanguage(I)Ljava/lang/String; HSPLandroid/icu/impl/locale/LSR;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V @@ -9722,11 +9741,11 @@ HSPLandroid/icu/impl/number/range/StandardPluralRanges;->getLanguageToSet()Ljava HSPLandroid/icu/impl/number/range/StandardPluralRanges;->getPluralRangesData(Ljava/lang/String;Landroid/icu/impl/number/range/StandardPluralRanges;)V HSPLandroid/icu/impl/number/range/StandardPluralRanges;->getSetForLocale(Landroid/icu/util/ULocale;)Ljava/lang/String; HSPLandroid/icu/impl/number/range/StandardPluralRanges;->setCapacity(I)V -HSPLandroid/icu/lang/CharSequences;->codePoints(Ljava/lang/CharSequence;)[I HSPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I HSPLandroid/icu/lang/UCharacter;->digit(I)I HSPLandroid/icu/lang/UCharacter;->foldCase(II)I HSPLandroid/icu/lang/UCharacter;->foldCase(IZ)I +HSPLandroid/icu/lang/UCharacter;->getAge(I)Landroid/icu/util/VersionInfo; HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I HSPLandroid/icu/lang/UCharacter;->getType(I)I HSPLandroid/icu/lang/UCharacter;->isDigit(I)Z @@ -10756,6 +10775,8 @@ HSPLandroid/icu/util/VersionInfo;->compareTo(Landroid/icu/util/VersionInfo;)I HSPLandroid/icu/util/VersionInfo;->getMajor()I HSPLandroid/internal/modules/utils/build/SdkLevel;->isAtLeastPreReleaseCodename(Ljava/lang/String;)Z HSPLandroid/internal/modules/utils/build/SdkLevel;->isAtLeastV()Z +SPLandroid/location/ILocationManager$Stub;-><clinit>()V +HSPLandroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager;+]Landroid/os/IBinder;Landroid/os/BinderProxy; HSPLandroid/location/Location$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLandroid/location/Location$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Location; HSPLandroid/location/Location$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -10800,6 +10821,10 @@ HSPLandroid/location/Location;->setTime(J)V HSPLandroid/location/Location;->setVerticalAccuracyMeters(F)V HSPLandroid/location/Location;->toString()Ljava/lang/String; HSPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V +SPLandroid/location/LocationManager$LocationEnabledCache;-><init>(I)V +SPLandroid/location/LocationManager;->-$$Nest$sfgetCACHE_KEY_LOCATION_ENABLED_PROPERTY()Ljava/lang/String; +SPLandroid/location/LocationManager;-><clinit>()V +HSPLandroid/location/LocationManager;-><init>(Landroid/content/Context;Landroid/location/ILocationManager;)V HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioAttributes; HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/media/AudioAttributes$Builder;-><init>()V @@ -11598,7 +11623,7 @@ HSPLandroid/metrics/LogMaker;->setType(I)Landroid/metrics/LogMaker; HSPLandroid/multiuser/FeatureFlagsImpl;->cacheUserSerialNumberReadOnly()Z HSPLandroid/multiuser/FeatureFlagsImpl;->cachingDevelopmentImprovements()Z HSPLandroid/multiuser/FeatureFlagsImpl;->enableSystemUserOnlyForServicesAndProviders()Z -SPLandroid/multiuser/Flags;->cachingDevelopmentImprovements()Z +HSPLandroid/multiuser/Flags;->cachingDevelopmentImprovements()Z HSPLandroid/multiuser/Flags;->enableSystemUserOnlyForServicesAndProviders()Z HSPLandroid/net/Credentials;-><init>(III)V HSPLandroid/net/Credentials;->getPid()I @@ -11774,7 +11799,7 @@ HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$P HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String; HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments; HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart; -SPLandroid/net/Uri$PathSegments;-><clinit>()V +HSPLandroid/net/Uri$PathSegments;-><clinit>()V HSPLandroid/net/Uri$PathSegments;-><init>([Ljava/lang/String;I)V HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object; HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/String; @@ -11782,8 +11807,8 @@ HSPLandroid/net/Uri$PathSegments;->size()I HSPLandroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V HSPLandroid/net/Uri$PathSegmentsBuilder;->build()Landroid/net/Uri$PathSegments; HSPLandroid/net/Uri$StringUri;->-$$Nest$mgetFragmentPart(Landroid/net/Uri$StringUri;)Landroid/net/Uri$Part; -SPLandroid/net/Uri$StringUri;->-$$Nest$mgetSsp(Landroid/net/Uri$StringUri;)Landroid/net/Uri$Part; -SPLandroid/net/Uri$StringUri;->-$$Nest$mparseScheme(Landroid/net/Uri$StringUri;)Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->-$$Nest$mgetSsp(Landroid/net/Uri$StringUri;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->-$$Nest$mparseScheme(Landroid/net/Uri$StringUri;)Ljava/lang/String; HSPLandroid/net/Uri$StringUri;-><init>(Ljava/lang/String;)V HSPLandroid/net/Uri$StringUri;-><init>(Ljava/lang/String;Landroid/net/Uri-IA;)V HSPLandroid/net/Uri$StringUri;->buildUpon()Landroid/net/Uri$Builder; @@ -11921,7 +11946,6 @@ HSPLandroid/os/BaseBundle;->getBooleanArray(Ljava/lang/String;)[Z HSPLandroid/os/BaseBundle;->getByteArray(Ljava/lang/String;)[B HSPLandroid/os/BaseBundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence; HSPLandroid/os/BaseBundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence; -HSPLandroid/os/BaseBundle;->getClassLoader()Ljava/lang/ClassLoader; HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;)I HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I @@ -12081,7 +12105,6 @@ HSPLandroid/os/Bundle;->getBinder(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/Bundle;->getBundle(Ljava/lang/String;)Landroid/os/Bundle; HSPLandroid/os/Bundle;->getByteArray(Ljava/lang/String;)[B HSPLandroid/os/Bundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence; -HSPLandroid/os/Bundle;->getClassLoader()Ljava/lang/ClassLoader; HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;)F HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;F)F HSPLandroid/os/Bundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList; @@ -12293,7 +12316,7 @@ HSPLandroid/os/GraphicsEnvironment;->getGlobalSettingsString(Landroid/content/Co HSPLandroid/os/GraphicsEnvironment;->getInstance()Landroid/os/GraphicsEnvironment; HSPLandroid/os/GraphicsEnvironment;->getPackageIndex(Ljava/lang/String;Ljava/util/List;)I HSPLandroid/os/GraphicsEnvironment;->getVulkanVersion(Landroid/content/pm/PackageManager;)I -SPLandroid/os/GraphicsEnvironment;->queryAngleChoice(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/GraphicsEnvironment;->queryAngleChoice(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/os/GraphicsEnvironment;->setLayerPaths(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/GraphicsEnvironment;->setup(Landroid/content/Context;Landroid/os/Bundle;)V HSPLandroid/os/GraphicsEnvironment;->setupAngle(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)Z @@ -12382,7 +12405,7 @@ HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;-><init>(Landroid/os/IBind HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->getProperty(ILandroid/os/BatteryProperty;)I HSPLandroid/os/IBatteryPropertiesRegistrar$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesRegistrar; -HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V +HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V+]Landroid/os/IBinder$DeathRecipient;Landroid/os/RemoteCallbackList$Interface; HSPLandroid/os/IBinder;->getSuggestedMaxIpcSizeBytes()I HSPLandroid/os/ICancellationSignal$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/os/ICancellationSignal$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -12433,7 +12456,8 @@ HSPLandroid/os/IRemoteCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/ HSPLandroid/os/IRemoteCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/os/IServiceManager$Stub$Proxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V HSPLandroid/os/IServiceManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/os/IServiceManager$Stub$Proxy;->checkService(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/IServiceManager$Stub$Proxy;Landroid/os/IServiceManager$Stub$Proxy; +HSPLandroid/os/IServiceManager$Stub$Proxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/IServiceManager$Stub$Proxy;->checkService2(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/IServiceManager$Stub$Proxy;Landroid/os/IServiceManager$Stub$Proxy; HSPLandroid/os/IServiceManager$Stub$Proxy;->isDeclared(Ljava/lang/String;)Z HSPLandroid/os/ISystemConfig$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ISystemConfig; HSPLandroid/os/IThermalEventListener$Stub;-><init>()V @@ -12473,13 +12497,13 @@ HSPLandroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ HSPLandroid/os/IVibratorManagerService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/os/IVibratorManagerService$Stub$Proxy;->getVibratorIds()[I HSPLandroid/os/IVibratorManagerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVibratorManagerService; -SPLandroid/os/IpcDataCache$1;-><init>(Landroid/os/IpcDataCache$RemoteCall;)V +HSPLandroid/os/IpcDataCache$1;-><init>(Landroid/os/IpcDataCache$RemoteCall;)V HSPLandroid/os/IpcDataCache$1;->apply(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/os/IpcDataCache$RemoteCall;megamorphic_types -SPLandroid/os/IpcDataCache$Config;-><init>(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IpcDataCache$Config;-><init>(ILjava/lang/String;Ljava/lang/String;)V HSPLandroid/os/IpcDataCache$Config;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -SPLandroid/os/IpcDataCache$Config;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;)V +HSPLandroid/os/IpcDataCache$Config;-><init>(Landroid/app/PropertyInvalidatedCache$Args;Ljava/lang/String;)V HSPLandroid/os/IpcDataCache$Config;-><init>(Landroid/os/IpcDataCache$Config;Ljava/lang/String;Ljava/lang/String;)V -SPLandroid/os/IpcDataCache$Config;->cacheNulls(Z)Landroid/os/IpcDataCache$Config; +HSPLandroid/os/IpcDataCache$Config;->cacheNulls(Z)Landroid/os/IpcDataCache$Config; HSPLandroid/os/IpcDataCache$Config;->child(Ljava/lang/String;)Landroid/os/IpcDataCache$Config; HSPLandroid/os/IpcDataCache$Config;->registerChild(Ljava/lang/String;)V HSPLandroid/os/IpcDataCache$QueryHandler;-><init>()V @@ -12489,6 +12513,7 @@ HSPLandroid/os/IpcDataCache$SystemServerCallHandler;->apply(Ljava/lang/Object;)L HSPLandroid/os/IpcDataCache;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/IpcDataCache$QueryHandler;)V HSPLandroid/os/IpcDataCache;-><init>(Landroid/os/IpcDataCache$Config;Landroid/os/IpcDataCache$QueryHandler;)V HSPLandroid/os/IpcDataCache;-><init>(Landroid/os/IpcDataCache$Config;Landroid/os/IpcDataCache$RemoteCall;)V +HSPLandroid/os/IpcDataCache;->isDisabled()Z HSPLandroid/os/IpcDataCache;->query(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList; HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -12542,6 +12567,7 @@ HSPLandroid/os/Message;->getCallback()Ljava/lang/Runnable; HSPLandroid/os/Message;->getData()Landroid/os/Bundle; HSPLandroid/os/Message;->getTarget()Landroid/os/Handler; HSPLandroid/os/Message;->getWhen()J +HSPLandroid/os/Message;->isAsynchronous()Z HSPLandroid/os/Message;->isInUse()Z HSPLandroid/os/Message;->markInUse()V HSPLandroid/os/Message;->obtain()Landroid/os/Message; @@ -12731,7 +12757,7 @@ HSPLandroid/os/Messenger;->writeMessengerOrNullToParcel(Landroid/os/Messenger;La HSPLandroid/os/Messenger;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/Parcel$2;-><init>(Landroid/os/Parcel;Ljava/io/InputStream;Ljava/lang/ClassLoader;)V HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class; -HSPLandroid/os/Parcel$LazyValue;-><init>(Landroid/os/Parcel;IIILandroid/os/Parcel$ClassLoaderProvider;)V +HSPLandroid/os/Parcel$LazyValue;-><init>(Landroid/os/Parcel;IIILjava/lang/ClassLoader;)V HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/os/Parcel$LazyValue;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/Parcel$LazyValue;->writeToParcel(Landroid/os/Parcel;)V @@ -12771,7 +12797,6 @@ HSPLandroid/os/Parcel;->ensureWithinMemoryLimit(II)V HSPLandroid/os/Parcel;->finalize()V HSPLandroid/os/Parcel;->freeBuffer()V HSPLandroid/os/Parcel;->getClassCookie(Ljava/lang/Class;)Ljava/lang/Object; -HSPLandroid/os/Parcel;->getClassLoader(Landroid/os/Parcel$ClassLoaderProvider;)Ljava/lang/ClassLoader;+]Landroid/os/Parcel$ClassLoaderProvider;Landroid/os/Bundle;,Landroid/os/PersistableBundle; HSPLandroid/os/Parcel;->getExceptionCode(Ljava/lang/Throwable;)I HSPLandroid/os/Parcel;->getValueType(Ljava/lang/Object;)I HSPLandroid/os/Parcel;->hasFileDescriptors()Z @@ -12789,7 +12814,9 @@ HSPLandroid/os/Parcel;->pushAllowFds(Z)Z HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList; HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList; HSPLandroid/os/Parcel;->readArrayListInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList; -HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLandroid/os/Parcel$ClassLoaderProvider;[I)V +HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLjava/lang/ClassLoader;[I)V +HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V +HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet; HSPLandroid/os/Parcel;->readBinderList(Ljava/util/List;)V HSPLandroid/os/Parcel;->readBlob()[B @@ -12812,7 +12839,7 @@ HSPLandroid/os/Parcel;->readHashMap(Ljava/lang/ClassLoader;)Ljava/util/HashMap; HSPLandroid/os/Parcel;->readHashMapInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/HashMap; HSPLandroid/os/Parcel;->readInt()I HSPLandroid/os/Parcel;->readIntArray([I)V -HSPLandroid/os/Parcel;->readLazyValue(Landroid/os/Parcel$ClassLoaderProvider;)Ljava/lang/Object; +HSPLandroid/os/Parcel;->readLazyValue(Ljava/lang/ClassLoader;)Ljava/lang/Object; HSPLandroid/os/Parcel;->readList(Ljava/util/List;Ljava/lang/ClassLoader;)V HSPLandroid/os/Parcel;->readList(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)V HSPLandroid/os/Parcel;->readListInternal(Ljava/util/List;ILjava/lang/ClassLoader;)V @@ -13118,26 +13145,24 @@ HSPLandroid/os/ServiceManager;->isDeclared(Ljava/lang/String;)Z HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManager;->waitForDeclaredService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V -HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/IServiceManager;Landroid/os/IServiceManager$Stub$Proxy; +HSPLandroid/os/ServiceManagerProxy;->checkService2(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/IServiceManager;Landroid/os/IServiceManager$Stub$Proxy; HSPLandroid/os/ServiceManagerProxy;->getService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManagerProxy;->getService2(Ljava/lang/String;)Landroid/os/Service;+]Landroid/os/ServiceManagerProxy;Landroid/os/ServiceManagerProxy; HSPLandroid/os/ServiceManagerProxy;->isDeclared(Ljava/lang/String;)Z HSPLandroid/os/ServiceSpecificException;-><init>(ILjava/lang/String;)V -SPLandroid/os/ServiceWithMetadata$1;-><init>()V +HSPLandroid/os/ServiceWithMetadata$1;-><init>()V HSPLandroid/os/ServiceWithMetadata$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ServiceWithMetadata; HSPLandroid/os/ServiceWithMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/os/ServiceWithMetadata$1;Landroid/os/ServiceWithMetadata$1; -SPLandroid/os/ServiceWithMetadata;-><clinit>()V +HSPLandroid/os/ServiceWithMetadata;-><clinit>()V HSPLandroid/os/ServiceWithMetadata;-><init>()V HSPLandroid/os/ServiceWithMetadata;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/os/SharedMemory$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/SharedMemory; HSPLandroid/os/SharedMemory$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/os/SharedMemory$Closer;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;)V -SPLandroid/os/SharedMemory$Closer;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory-IA;)V HSPLandroid/os/SharedMemory$MemoryRegistration;-><init>(I)V -SPLandroid/os/SharedMemory$MemoryRegistration;-><init>(ILandroid/os/SharedMemory-IA;)V +HSPLandroid/os/SharedMemory$MemoryRegistration;-><init>(ILandroid/os/SharedMemory-IA;)V HSPLandroid/os/SharedMemory$MemoryRegistration;->acquire()Landroid/os/SharedMemory$MemoryRegistration; HSPLandroid/os/SharedMemory$Unmapper;-><init>(JILandroid/os/SharedMemory$MemoryRegistration;)V -SPLandroid/os/SharedMemory$Unmapper;-><init>(JILandroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory-IA;)V +HSPLandroid/os/SharedMemory$Unmapper;-><init>(JILandroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory-IA;)V HSPLandroid/os/SharedMemory;-><init>(Ljava/io/FileDescriptor;)V HSPLandroid/os/SharedMemory;-><init>(Ljava/io/FileDescriptor;Landroid/os/SharedMemory-IA;)V HSPLandroid/os/SharedMemory;->checkOpen()V @@ -13188,7 +13213,7 @@ HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->setThreadPolicyMask(I)V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->startHandlingViolationException(Landroid/os/strictmode/Violation;)V HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>()V -SPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>(Landroid/os/StrictMode-IA;)V +HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>(Landroid/os/StrictMode-IA;)V HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;)V HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V HSPLandroid/os/StrictMode$InstanceTracker;-><init>(Ljava/lang/Object;)V @@ -13249,6 +13274,7 @@ HSPLandroid/os/StrictMode$VmPolicy$Builder;->penaltyLog()Landroid/os/StrictMode$ HSPLandroid/os/StrictMode$VmPolicy$Builder;->permitActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder; HSPLandroid/os/StrictMode$VmPolicy$Builder;->permitUnsafeIntentLaunch()Landroid/os/StrictMode$VmPolicy$Builder; HSPLandroid/os/StrictMode$VmPolicy;-><init>(ILjava/util/HashMap;Landroid/os/StrictMode$OnVmViolationListener;Ljava/util/concurrent/Executor;)V +SPLandroid/os/StrictMode$VmPolicy;-><init>(ILjava/util/HashMap;Landroid/os/StrictMode$OnVmViolationListener;Ljava/util/concurrent/Executor;Landroid/os/StrictMode-IA;)V HSPLandroid/os/StrictMode;->-$$Nest$sfgetEMPTY_CLASS_LIMIT_MAP()Ljava/util/HashMap; HSPLandroid/os/StrictMode;->-$$Nest$sfgetLOGCAT_LOGGER()Landroid/os/StrictMode$ViolationLogger; HSPLandroid/os/StrictMode;->-$$Nest$sfgetLOG_V()Z @@ -13307,9 +13333,9 @@ HSPLandroid/os/StrictMode;->vmSqliteObjectLeaksEnabled()Z HSPLandroid/os/StrictMode;->vmUnsafeIntentLaunchEnabled()Z HSPLandroid/os/StrictMode;->vmUntaggedSocketEnabled()Z HSPLandroid/os/StrictMode;->writeGatheredViolationsToParcel(Landroid/os/Parcel;)V -SPLandroid/os/SystemClock$2;-><init>(Ljava/time/ZoneId;)V +HSPLandroid/os/SystemClock$2;-><init>(Ljava/time/ZoneId;)V HSPLandroid/os/SystemClock$2;->millis()J -SPLandroid/os/SystemClock;->elapsedRealtimeClock()Ljava/time/Clock; +HSPLandroid/os/SystemClock;->elapsedRealtimeClock()Ljava/time/Clock; HSPLandroid/os/SystemClock;->sleep(J)V HSPLandroid/os/SystemConfigManager;-><init>()V HSPLandroid/os/SystemConfigManager;->getDisabledUntilUsedPreinstalledCarrierApps()Ljava/util/Set; @@ -13396,9 +13422,9 @@ HSPLandroid/os/UserHandle;->toString()Ljava/lang/String; HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/UserHandle;Landroid/os/Parcel;)V HSPLandroid/os/UserManager$$ExternalSyntheticLambda10;-><init>(Landroid/os/IUserManager;)V -SPLandroid/os/UserManager$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/UserManager$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/UserManager$$ExternalSyntheticLambda5;-><init>(Landroid/os/IUserManager;)V -SPLandroid/os/UserManager$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/UserManager$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/UserManager$1;-><init>(Landroid/os/UserManager;ILjava/lang/String;)V HSPLandroid/os/UserManager$1;->bypass(Ljava/lang/Integer;)Z HSPLandroid/os/UserManager$1;->bypass(Ljava/lang/Object;)Z @@ -13461,7 +13487,7 @@ HSPLandroid/os/UserManager;->isUserUnlocked(I)Z HSPLandroid/os/UserManager;->isUserUnlocked(Landroid/os/UserHandle;)Z HSPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(I)Z HSPLandroid/os/UserManager;->supportsMultipleUsers()Z -SPLandroid/os/UserManagerCache;-><clinit>()V +HSPLandroid/os/UserManagerCache;-><clinit>()V HSPLandroid/os/UserManagerCache;-><init>()V HSPLandroid/os/UserManagerCache;->isUserUnlocked(Landroid/os/IpcDataCache$RemoteCall;Ljava/lang/Integer;)Ljava/lang/Boolean;+]Landroid/os/IpcDataCache;Landroid/os/IpcDataCache; HSPLandroid/os/UserManagerCache;->isUserUnlockingOrUnlocked(Landroid/os/IpcDataCache$RemoteCall;Ljava/lang/Integer;)Ljava/lang/Boolean;+]Landroid/os/IpcDataCache;Landroid/os/IpcDataCache; @@ -13631,7 +13657,7 @@ HSPLandroid/permission/PermissionManager$SplitPermissionInfo;-><init>(Landroid/c HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getNewPermissions()Ljava/util/List; HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getSplitPermission()Ljava/lang/String; HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I -SPLandroid/permission/PermissionManager;->-$$Nest$smcheckPackageNamePermissionUncached(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/permission/PermissionManager;->-$$Nest$smcheckPackageNamePermissionUncached(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I HSPLandroid/permission/PermissionManager;->-$$Nest$smcheckPermissionUncached(Ljava/lang/String;III)I HSPLandroid/permission/PermissionManager;-><clinit>()V HSPLandroid/permission/PermissionManager;-><init>(Landroid/content/Context;)V @@ -13963,7 +13989,7 @@ HSPLandroid/security/net/config/ApplicationConfig;->hasPerDomainConfigs()Z HSPLandroid/security/net/config/ApplicationConfig;->isCleartextTrafficPermitted()Z HSPLandroid/security/net/config/ApplicationConfig;->isCleartextTrafficPermitted(Ljava/lang/String;)Z HSPLandroid/security/net/config/ApplicationConfig;->setDefaultInstance(Landroid/security/net/config/ApplicationConfig;)V -SPLandroid/security/net/config/CertificatesEntryRef;->disableCT()Z +HSPLandroid/security/net/config/CertificatesEntryRef;->disableCT()Z HSPLandroid/security/net/config/CertificatesEntryRef;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; HSPLandroid/security/net/config/CertificatesEntryRef;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor; HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;-><init>(Landroid/security/net/config/ApplicationConfig;)V @@ -14003,14 +14029,14 @@ HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;-><init>()V HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRef(Landroid/security/net/config/CertificatesEntryRef;)Landroid/security/net/config/NetworkSecurityConfig$Builder; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRefs(Ljava/util/Collection;)Landroid/security/net/config/NetworkSecurityConfig$Builder; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->build()Landroid/security/net/config/NetworkSecurityConfig; -SPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getCertificateTransparencyVerificationRequired()Z -SPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getCertificatesEntryRefs()Ljava/util/List; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getCertificateTransparencyVerificationRequired()Z +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getCertificatesEntryRefs()Ljava/util/List; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCertificatesEntryRefs()Ljava/util/List; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCleartextTrafficPermitted()Z HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveHstsEnforced()Z HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectivePinSet()Landroid/security/net/config/PinSet; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getParent()Landroid/security/net/config/NetworkSecurityConfig$Builder; -SPLandroid/security/net/config/NetworkSecurityConfig$Builder;->hasCertificatesEntryRefs()Z +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->hasCertificatesEntryRefs()Z HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setCleartextTrafficPermitted(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setHstsEnforced(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder; HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setParent(Landroid/security/net/config/NetworkSecurityConfig$Builder;)Landroid/security/net/config/NetworkSecurityConfig$Builder; @@ -14061,9 +14087,9 @@ HSPLandroid/security/net/config/XmlConfigSource;->parseNetworkSecurityConfig(Lan HSPLandroid/security/net/config/XmlConfigSource;->parseTrustAnchors(Landroid/content/res/XmlResourceParser;Z)Ljava/util/Collection; HSPLandroid/server/FeatureFlagsImpl;->telemetryApisService()Z HSPLandroid/service/appprediction/IPredictionService$Stub;-><init>()V -SPLandroid/service/autofill/FeatureFlagsImpl;->autofillCredmanIntegration()Z -SPLandroid/service/autofill/FeatureFlagsImpl;->improveFillDialogAconfig()Z -SPLandroid/service/autofill/FeatureFlagsImpl;->relayoutFix()Z +HSPLandroid/service/autofill/FeatureFlagsImpl;->autofillCredmanIntegration()Z +HSPLandroid/service/autofill/FeatureFlagsImpl;->improveFillDialogAconfig()Z +HSPLandroid/service/autofill/FeatureFlagsImpl;->relayoutFix()Z HSPLandroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager; HSPLandroid/service/media/IMediaBrowserService$Stub;-><init>()V HSPLandroid/service/media/IMediaBrowserService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -14141,7 +14167,7 @@ HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel( HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/service/notification/NotificationRankingUpdate;-><init>(Landroid/os/Parcel;)V HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap; -SPLandroid/service/notification/RateEstimator;-><init>()V +HSPLandroid/service/notification/RateEstimator;-><init>()V HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/StatusBarNotification; HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/service/notification/StatusBarNotification;-><init>(Landroid/os/Parcel;)V @@ -14728,7 +14754,7 @@ HSPLandroid/telephony/SubscriptionInfo;->isEmbedded()Z HSPLandroid/telephony/SubscriptionInfo;->isOpportunistic()Z HSPLandroid/telephony/SubscriptionInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda10;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; -SPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda13;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda13;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda15;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda9;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$IntegerPropertyInvalidatedCache;->query(Ljava/lang/Integer;)Ljava/lang/Object; @@ -15006,6 +15032,7 @@ HSPLandroid/text/BoringLayout$Metrics;->reset()V HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V +HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZZILandroid/text/TextUtils$TruncateAt;Landroid/text/BoringLayout$Metrics;ZZLandroid/graphics/Paint$FontMetrics;)V HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FFZZILandroid/text/TextUtils$TruncateAt;III[I[IILandroid/graphics/text/LineBreakConfig;Landroid/text/BoringLayout$Metrics;ZZLandroid/graphics/Paint$FontMetrics;)V+]Landroid/text/BoringLayout;Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V HSPLandroid/text/BoringLayout;->ellipsized(II)V @@ -15129,6 +15156,7 @@ HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;)V HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;II)V +HSPLandroid/text/Layout;->drawHighContrastBackground(Landroid/graphics/Canvas;II)V HSPLandroid/text/Layout;->drawHighlights(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V+]Landroid/graphics/Canvas;Landroid/graphics/Canvas;,Landroid/graphics/RecordingCanvas;]Ljava/util/List;Ljava/util/ArrayList; HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V @@ -15192,7 +15220,7 @@ HSPLandroid/text/MeasuredParagraph;->applyStyleRun(IILandroid/text/TextPaint;Lan HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; HSPLandroid/text/MeasuredParagraph;->buildForMeasurement(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; -HSPLandroid/text/MeasuredParagraph;->buildForStaticLayoutInternal(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;IZZLandroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph$StyleRunCallback;)Landroid/text/MeasuredParagraph;+]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/Spanned;megamorphic_types +HSPLandroid/text/MeasuredParagraph;->buildForStaticLayoutInternal(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;IZZLandroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph$StyleRunCallback;)Landroid/text/MeasuredParagraph;+]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/Spanned;missing_types HSPLandroid/text/MeasuredParagraph;->getCharWidthAt(I)F HSPLandroid/text/MeasuredParagraph;->getChars()[C HSPLandroid/text/MeasuredParagraph;->getDirections(II)Landroid/text/Layout$Directions; @@ -15679,28 +15707,28 @@ HSPLandroid/text/util/Linkify;->addLinks(Landroid/text/Spannable;ILandroid/conte HSPLandroid/text/util/Linkify;->containsUnsupportedCharacters(Ljava/lang/String;)Z HSPLandroid/text/util/Linkify;->gatherLinks(Ljava/util/ArrayList;Landroid/text/Spannable;Ljava/util/regex/Pattern;[Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V HSPLandroid/text/util/Linkify;->pruneOverlaps(Ljava/util/ArrayList;)V -SPLandroid/tracing/FeatureFlagsImpl;->clientSideProtoLogging()Z -SPLandroid/tracing/FeatureFlagsImpl;->perfettoIme()Z -SPLandroid/tracing/FeatureFlagsImpl;->perfettoProtologTracing()Z -SPLandroid/tracing/Flags;->clientSideProtoLogging()Z -SPLandroid/tracing/Flags;->perfettoProtologTracing()Z -SPLandroid/tracing/inputmethod/InputMethodDataSource;-><init>(Ljava/lang/Runnable;Ljava/lang/Runnable;)V -SPLandroid/tracing/perfetto/DataSource;-><init>(Ljava/lang/String;)V -SPLandroid/tracing/perfetto/DataSource;->createInstance([BI)Landroid/tracing/perfetto/DataSourceInstance; -SPLandroid/tracing/perfetto/DataSource;->register(Landroid/tracing/perfetto/DataSourceParams;)V -SPLandroid/tracing/perfetto/DataSourceInstance;-><init>(Landroid/tracing/perfetto/DataSource;I)V -SPLandroid/tracing/perfetto/DataSourceParams$Builder;-><init>()V -SPLandroid/tracing/perfetto/DataSourceParams$Builder;->build()Landroid/tracing/perfetto/DataSourceParams; -SPLandroid/tracing/perfetto/DataSourceParams$Builder;->setBufferExhaustedPolicy(I)Landroid/tracing/perfetto/DataSourceParams$Builder; -SPLandroid/tracing/perfetto/DataSourceParams$Builder;->setNoFlush(Z)Landroid/tracing/perfetto/DataSourceParams$Builder; -SPLandroid/tracing/perfetto/DataSourceParams$Builder;->setWillNotifyOnStop(Z)Landroid/tracing/perfetto/DataSourceParams$Builder; -SPLandroid/tracing/perfetto/DataSourceParams;-><clinit>()V -SPLandroid/tracing/perfetto/DataSourceParams;-><init>(IZZ)V -SPLandroid/tracing/perfetto/DataSourceParams;-><init>(IZZLandroid/tracing/perfetto/DataSourceParams-IA;)V -SPLandroid/tracing/perfetto/InitArguments;-><clinit>()V -SPLandroid/tracing/perfetto/InitArguments;-><init>(II)V -SPLandroid/tracing/perfetto/Producer;->init(Landroid/tracing/perfetto/InitArguments;)V -SPLandroid/tracing/perfetto/StartCallbackArguments;-><init>()V +HSPLandroid/tracing/FeatureFlagsImpl;->clientSideProtoLogging()Z +HSPLandroid/tracing/FeatureFlagsImpl;->perfettoIme()Z +HSPLandroid/tracing/FeatureFlagsImpl;->perfettoProtologTracing()Z +HSPLandroid/tracing/Flags;->clientSideProtoLogging()Z +HSPLandroid/tracing/Flags;->perfettoProtologTracing()Z +HSPLandroid/tracing/inputmethod/InputMethodDataSource;-><init>(Ljava/lang/Runnable;Ljava/lang/Runnable;)V +HSPLandroid/tracing/perfetto/DataSource;-><init>(Ljava/lang/String;)V +HSPLandroid/tracing/perfetto/DataSource;->createInstance([BI)Landroid/tracing/perfetto/DataSourceInstance; +HSPLandroid/tracing/perfetto/DataSource;->register(Landroid/tracing/perfetto/DataSourceParams;)V +HSPLandroid/tracing/perfetto/DataSourceInstance;-><init>(Landroid/tracing/perfetto/DataSource;I)V +HSPLandroid/tracing/perfetto/DataSourceParams$Builder;-><init>()V +HSPLandroid/tracing/perfetto/DataSourceParams$Builder;->build()Landroid/tracing/perfetto/DataSourceParams; +HSPLandroid/tracing/perfetto/DataSourceParams$Builder;->setBufferExhaustedPolicy(I)Landroid/tracing/perfetto/DataSourceParams$Builder; +HSPLandroid/tracing/perfetto/DataSourceParams$Builder;->setNoFlush(Z)Landroid/tracing/perfetto/DataSourceParams$Builder; +HSPLandroid/tracing/perfetto/DataSourceParams$Builder;->setWillNotifyOnStop(Z)Landroid/tracing/perfetto/DataSourceParams$Builder; +HSPLandroid/tracing/perfetto/DataSourceParams;-><clinit>()V +HSPLandroid/tracing/perfetto/DataSourceParams;-><init>(IZZ)V +HSPLandroid/tracing/perfetto/DataSourceParams;-><init>(IZZLandroid/tracing/perfetto/DataSourceParams-IA;)V +HSPLandroid/tracing/perfetto/InitArguments;-><clinit>()V +HSPLandroid/tracing/perfetto/InitArguments;-><init>(II)V +HSPLandroid/tracing/perfetto/Producer;->init(Landroid/tracing/perfetto/InitArguments;)V +HSPLandroid/tracing/perfetto/StartCallbackArguments;-><init>()V HSPLandroid/transition/ChangeBounds;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/transition/ChangeBounds;->setResizeClip(Z)V HSPLandroid/transition/ChangeClipBounds;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V @@ -15905,8 +15933,8 @@ HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String; HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String; HSPLandroid/util/CloseGuard;-><init>()V HSPLandroid/util/CloseGuard;->close()V -SPLandroid/util/CloseGuard;->get()Landroid/util/CloseGuard; -SPLandroid/util/CloseGuard;->getImpl()Ldalvik/system/CloseGuard; +HSPLandroid/util/CloseGuard;->get()Landroid/util/CloseGuard; +HSPLandroid/util/CloseGuard;->getImpl()Ldalvik/system/CloseGuard; HSPLandroid/util/CloseGuard;->open(Ljava/lang/String;)V HSPLandroid/util/ContainerHelpers;->binarySearch([III)I HSPLandroid/util/ContainerHelpers;->binarySearch([JIJ)I @@ -16196,7 +16224,7 @@ HSPLandroid/util/Range;->intersect(Ljava/lang/Comparable;Ljava/lang/Comparable;) HSPLandroid/util/Rational;-><init>(II)V HSPLandroid/util/Rational;->compareTo(Landroid/util/Rational;)I HSPLandroid/util/Rational;->compareTo(Ljava/lang/Object;)I -SPLandroid/util/SequenceUtils;->getInitSeq()I +HSPLandroid/util/SequenceUtils;->getInitSeq()I HSPLandroid/util/SequenceUtils;->isIncomingSeqStale(II)Z HSPLandroid/util/Singleton;-><init>()V HSPLandroid/util/Singleton;->get()Ljava/lang/Object; @@ -16323,7 +16351,7 @@ HSPLandroid/util/Xml;->newFastPullParser()Lcom/android/modules/utils/TypedXmlPul HSPLandroid/util/Xml;->newFastSerializer()Lcom/android/modules/utils/TypedXmlSerializer; HSPLandroid/util/Xml;->newPullParser()Lorg/xmlpull/v1/XmlPullParser; HSPLandroid/util/Xml;->newSerializer()Lorg/xmlpull/v1/XmlSerializer; -SPLandroid/util/Xml;->newXmlPullParser()Lorg/xmlpull/v1/XmlPullParser; +HSPLandroid/util/Xml;->newXmlPullParser()Lorg/xmlpull/v1/XmlPullParser; HSPLandroid/util/proto/EncodedBuffer;-><init>(I)V HSPLandroid/util/proto/EncodedBuffer;->editRawFixed32(II)V HSPLandroid/util/proto/EncodedBuffer;->getBytes(I)[B @@ -16345,7 +16373,7 @@ HSPLandroid/util/proto/EncodedBuffer;->writeRawByte(B)V HSPLandroid/util/proto/EncodedBuffer;->writeRawFixed32(I)V HSPLandroid/util/proto/EncodedBuffer;->writeRawVarint32(I)V HSPLandroid/util/proto/EncodedBuffer;->writeRawVarint64(J)V -SPLandroid/util/proto/ProtoInputStream;-><init>([B)V +HSPLandroid/util/proto/ProtoInputStream;-><init>([B)V HSPLandroid/util/proto/ProtoInputStream;->assertFieldNumber(J)V HSPLandroid/util/proto/ProtoInputStream;->assertFreshData()V HSPLandroid/util/proto/ProtoInputStream;->assertWireType(I)V @@ -16401,8 +16429,8 @@ HSPLandroid/view/Choreographer$1;->initialValue()Landroid/view/Choreographer; HSPLandroid/view/Choreographer$1;->initialValue()Ljava/lang/Object; HSPLandroid/view/Choreographer$2;->initialValue()Landroid/view/Choreographer; HSPLandroid/view/Choreographer$2;->initialValue()Ljava/lang/Object; -SPLandroid/view/Choreographer$BufferStuffingState;-><init>()V -SPLandroid/view/Choreographer$BufferStuffingState;-><init>(Landroid/view/Choreographer-IA;)V +HSPLandroid/view/Choreographer$BufferStuffingState;-><init>()V +HSPLandroid/view/Choreographer$BufferStuffingState;-><init>(Landroid/view/Choreographer-IA;)V HSPLandroid/view/Choreographer$CallbackQueue;-><init>(Landroid/view/Choreographer;)V HSPLandroid/view/Choreographer$CallbackQueue;->addCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)V HSPLandroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landroid/view/Choreographer$CallbackRecord; @@ -16517,7 +16545,7 @@ HSPLandroid/view/Display;->getLocalRotation()I HSPLandroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V HSPLandroid/view/Display;->getMode()Landroid/view/Display$Mode; HSPLandroid/view/Display;->getName()Ljava/lang/String; -SPLandroid/view/Display;->getOverlaySupport()Landroid/hardware/OverlayProperties; +HSPLandroid/view/Display;->getOverlaySupport()Landroid/hardware/OverlayProperties; HSPLandroid/view/Display;->getPreferredWideGamutColorSpace()Landroid/graphics/ColorSpace; HSPLandroid/view/Display;->getPresentationDeadlineNanos()J HSPLandroid/view/Display;->getRealMetrics(Landroid/util/DisplayMetrics;)V @@ -16540,7 +16568,7 @@ HSPLandroid/view/Display;->updateDisplayInfoLocked()V HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayAddress$Physical; HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/DisplayAddress$Physical;-><init>(J)V -SPLandroid/view/DisplayAddress$Physical;-><init>(JLandroid/view/DisplayAddress-IA;)V +HSPLandroid/view/DisplayAddress$Physical;-><init>(JLandroid/view/DisplayAddress-IA;)V HSPLandroid/view/DisplayAddress$Physical;->equals(Ljava/lang/Object;)Z HSPLandroid/view/DisplayAddress$Physical;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/DisplayAddress;-><init>()V @@ -16555,7 +16583,7 @@ HSPLandroid/view/DisplayAdjustments;->setCompatibilityInfo(Landroid/content/res/ HSPLandroid/view/DisplayAdjustments;->setConfiguration(Landroid/content/res/Configuration;)V HSPLandroid/view/DisplayCutout$Bounds;->-$$Nest$mgetRects(Landroid/view/DisplayCutout$Bounds;)[Landroid/graphics/Rect; HSPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;Z)V -SPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;ZLandroid/view/DisplayCutout-IA;)V +HSPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;ZLandroid/view/DisplayCutout-IA;)V HSPLandroid/view/DisplayCutout$Bounds;->equals(Ljava/lang/Object;)Z HSPLandroid/view/DisplayCutout$Bounds;->getRects()[Landroid/graphics/Rect; HSPLandroid/view/DisplayCutout$Bounds;->isEmpty()Z @@ -16722,7 +16750,7 @@ HSPLandroid/view/IGraphicsStatsCallback$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/view/IGraphicsStatsCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/IRemoteAnimationRunner$Stub;-><init>()V HSPLandroid/view/IRemoteAnimationRunner$Stub;->asBinder()Landroid/os/IBinder; -SPLandroid/view/ISensitiveContentProtectionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLandroid/view/ISensitiveContentProtectionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/view/ISensitiveContentProtectionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/ISensitiveContentProtectionManager; HSPLandroid/view/ISystemGestureExclusionListener$Stub;-><init>()V HSPLandroid/view/IWindow$Stub;-><init>()V @@ -16854,6 +16882,7 @@ HSPLandroid/view/InsetsAnimationControlImpl;->releaseLeashes()V HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FF)V HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FFZ)V HSPLandroid/view/InsetsAnimationControlImpl;->updateSurfacePosition(Landroid/util/SparseArray;)V +HSPLandroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier$$ExternalSyntheticLambda0;->applySurfaceParams([Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;)V HSPLandroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier;->lambda$static$0([Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;)V HSPLandroid/view/InsetsAnimationThread;->ensureThreadLocked()V HSPLandroid/view/InsetsAnimationThread;->getHandler()Landroid/os/Handler; @@ -16877,7 +16906,7 @@ HSPLandroid/view/InsetsAnimationThreadControlRunner;->notifyControlRevoked(I)V HSPLandroid/view/InsetsAnimationThreadControlRunner;->updateSurfacePosition(Landroid/util/SparseArray;)V HSPLandroid/view/InsetsController$$ExternalSyntheticLambda10;-><init>(Landroid/view/InsetsController;)V HSPLandroid/view/InsetsController$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -SPLandroid/view/InsetsController$$ExternalSyntheticLambda8;-><init>()V +HSPLandroid/view/InsetsController$$ExternalSyntheticLambda8;-><init>()V HSPLandroid/view/InsetsController$$ExternalSyntheticLambda9;-><init>(Landroid/view/InsetsController;)V HSPLandroid/view/InsetsController$1;-><init>(Landroid/view/InsetsController;)V HSPLandroid/view/InsetsController$2;-><init>(Landroid/view/InsetsController;)V @@ -16965,7 +16994,7 @@ HSPLandroid/view/InsetsSource;->isVisible()Z HSPLandroid/view/InsetsSource;->setVisible(Z)Landroid/view/InsetsSource; HSPLandroid/view/InsetsSource;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z -HSPLandroid/view/InsetsSourceConsumer;->applyRequestedVisibilityAndPositionToControl()V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier;Landroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier$$ExternalSyntheticLambda0;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl; +HSPLandroid/view/InsetsSourceConsumer;->applyRequestedVisibilityAndPositionToControl()V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier;Landroid/view/InsetsAnimationControlRunner$SurfaceParamsApplier$$ExternalSyntheticLambda0;,Landroid/view/InsetsController;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceConsumer;->getControl()Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceConsumer;->getId()I HSPLandroid/view/InsetsSourceConsumer;->getType()I @@ -16981,8 +17010,11 @@ HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Lj HSPLandroid/view/InsetsSourceControl$1;->newArray(I)[Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceControl$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/view/InsetsSourceControl$Array$1;-><init>()V +HSPLandroid/view/InsetsSourceControl$Array$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSourceControl$Array; +HSPLandroid/view/InsetsSourceControl$Array$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/InsetsSourceControl$Array$1;Landroid/view/InsetsSourceControl$Array$1; HSPLandroid/view/InsetsSourceControl$Array;-><clinit>()V HSPLandroid/view/InsetsSourceControl$Array;-><init>()V +HSPLandroid/view/InsetsSourceControl$Array;-><init>(Landroid/os/Parcel;)V+]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array; HSPLandroid/view/InsetsSourceControl$Array;->get()[Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceControl$Array;->getSeq()I HSPLandroid/view/InsetsSourceControl$Array;->readFromParcel(Landroid/os/Parcel;)V @@ -17271,8 +17303,8 @@ HSPLandroid/view/SurfaceControl$Builder;->setName(Ljava/lang/String;)Landroid/vi HSPLandroid/view/SurfaceControl$Builder;->setOpaque(Z)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$Builder;->setParent(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$Builder;->unsetBufferSize()V -SPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;-><init>()V -SPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V +HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;-><init>()V +HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda3;-><init>(Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V HSPLandroid/view/SurfaceControl$Transaction$$ExternalSyntheticLambda3;->run()V @@ -17289,7 +17321,7 @@ HSPLandroid/view/SurfaceControl$Transaction;->clearFrameRate(Landroid/view/Surfa HSPLandroid/view/SurfaceControl$Transaction;->close()V HSPLandroid/view/SurfaceControl$Transaction;->hide(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->lambda$addTransactionCompletedListener$1(Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V -SPLandroid/view/SurfaceControl$Transaction;->lambda$addTransactionCompletedListener$2(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V +HSPLandroid/view/SurfaceControl$Transaction;->lambda$addTransactionCompletedListener$2(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;Landroid/view/SurfaceControl$TransactionStats;)V HSPLandroid/view/SurfaceControl$Transaction;->merge(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->notifyReparentedSurfaces()V HSPLandroid/view/SurfaceControl$Transaction;->onMergeWithNextTransaction(Ljava/lang/CharSequence;)V @@ -17300,7 +17332,6 @@ HSPLandroid/view/SurfaceControl$Transaction;->setAlpha(Landroid/view/SurfaceCont HSPLandroid/view/SurfaceControl$Transaction;->setBufferSize(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceControl;[F)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setCornerRadius(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction; -HSPLandroid/view/SurfaceControl$Transaction;->setDesintationFrame(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setExtendedRangeBrightness(Landroid/view/SurfaceControl;FF)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setFrameRateCategory(Landroid/view/SurfaceControl;IZ)Landroid/view/SurfaceControl$Transaction;+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->setFrameRateSelectionStrategy(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction; @@ -17318,17 +17349,17 @@ HSPLandroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/Surfac HSPLandroid/view/SurfaceControl$Transaction;->show(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/SurfaceControl$Transaction;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/SurfaceControl$TransactionStats;-><init>(JJ)V -SPLandroid/view/SurfaceControl$TransactionStats;->close()V -SPLandroid/view/SurfaceControl$TransactionStats;->getPresentFence()Landroid/hardware/SyncFence; -SPLandroid/view/SurfaceControl;->-$$Nest$smnativeApplyTransaction(JZZ)V +HSPLandroid/view/SurfaceControl$TransactionStats;->close()V +HSPLandroid/view/SurfaceControl$TransactionStats;->getPresentFence()Landroid/hardware/SyncFence; +HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeApplyTransaction(JZZ)V HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeCreateTransaction()J HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSanitize(JII)V HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetDestinationFrame(JJIIII)V HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetExtendedRangeBrightness(JJFF)V HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFlags(JJII)V -SPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRate(JJFII)V +HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRate(JJFII)V HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRateCategory(JJIZ)V -SPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRateSelectionStrategy(JJI)V +HSPLandroid/view/SurfaceControl;->-$$Nest$smnativeSetFrameRateSelectionStrategy(JJI)V HSPLandroid/view/SurfaceControl;-><init>()V HSPLandroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;)V HSPLandroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceControl;Ljava/lang/String;)V @@ -17349,8 +17380,8 @@ HSPLandroid/view/SurfaceControlRegistry$NoOpRegistry;->add(Landroid/view/Surface HSPLandroid/view/SurfaceControlRegistry$NoOpRegistry;->remove(Landroid/view/SurfaceControl;)V HSPLandroid/view/SurfaceControlRegistry;-><clinit>()V HSPLandroid/view/SurfaceControlRegistry;->getProcessInstance()Landroid/view/SurfaceControlRegistry; -SPLandroid/view/SurfaceControlRegistry;->initializeCallStackDebugging()V -SPLandroid/view/SurfaceControlRegistry;->updateCallStackDebuggingParams()V +HSPLandroid/view/SurfaceControlRegistry;->initializeCallStackDebugging()V +HSPLandroid/view/SurfaceControlRegistry;->updateCallStackDebuggingParams()V HSPLandroid/view/SurfaceSession;-><init>()V HSPLandroid/view/SurfaceSession;->finalize()V HSPLandroid/view/SurfaceSession;->kill()V @@ -17476,7 +17507,7 @@ HSPLandroid/view/VelocityTracker;->getYVelocity()F HSPLandroid/view/VelocityTracker;->getYVelocity(I)F HSPLandroid/view/VelocityTracker;->obtain()Landroid/view/VelocityTracker; HSPLandroid/view/VelocityTracker;->recycle()V -SPLandroid/view/View$$ExternalSyntheticLambda3;->get()Ljava/lang/Object; +HSPLandroid/view/View$$ExternalSyntheticLambda3;->get()Ljava/lang/Object; HSPLandroid/view/View$$ExternalSyntheticLambda4;-><init>(Landroid/view/View;)V HSPLandroid/view/View$$ExternalSyntheticLambda4;->run()V HSPLandroid/view/View$$ExternalSyntheticLambda5;->run()V @@ -17540,8 +17571,8 @@ HSPLandroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I HSPLandroid/view/View$PerformClick;->run()V HSPLandroid/view/View$ScrollabilityCache;-><init>(Landroid/view/ViewConfiguration;Landroid/view/View;)V HSPLandroid/view/View$ScrollabilityCache;->run()V -SPLandroid/view/View$SensitiveAutofillHintsHelper;-><clinit>()V -SPLandroid/view/View$SensitiveAutofillHintsHelper;->containsSensitiveAutofillHint([Ljava/lang/String;)Z +HSPLandroid/view/View$SensitiveAutofillHintsHelper;-><clinit>()V +HSPLandroid/view/View$SensitiveAutofillHintsHelper;->containsSensitiveAutofillHint([Ljava/lang/String;)Z HSPLandroid/view/View$TintInfo;-><init>()V HSPLandroid/view/View$TransformationInfo;-><init>()V HSPLandroid/view/View$UnsetPressedState;->run()V @@ -18544,29 +18575,14 @@ HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropert HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->withLayer()Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->withStartAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; -SPLandroid/view/ViewProtoLogGroups;-><clinit>()V -SPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda19;-><init>()V -HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda20;-><init>(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda20;->execute(Ljava/lang/Runnable;)V -HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda21;-><init>(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda21;->run()V +HSPLandroid/view/ViewProtoLogGroups;-><clinit>()V +HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda19;-><init>()V HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda22;-><init>(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda22;->run()V -SPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda23;-><init>(Landroid/view/ViewRootImpl;)V -SPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda23;->run()V +HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda23;-><init>(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda23;->run()V HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda3;->run()V -HSPLandroid/view/ViewRootImpl$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V -HSPLandroid/view/ViewRootImpl$10;->run()V -SPLandroid/view/ViewRootImpl$11$$ExternalSyntheticLambda3;-><init>(Landroid/view/ViewRootImpl$11;JLandroid/window/SurfaceSyncGroup;Z)V -HSPLandroid/view/ViewRootImpl$11$$ExternalSyntheticLambda3;->onFrameCommit(Z)V -SPLandroid/view/ViewRootImpl$11;->$r8$lambda$lOIKKNnrcWn9ZndeJebfX4H5mOg(Landroid/view/ViewRootImpl$11;JLandroid/window/SurfaceSyncGroup;ZZ)V -SPLandroid/view/ViewRootImpl$11;->lambda$onFrameDraw$3(JLandroid/window/SurfaceSyncGroup;ZZ)V -HSPLandroid/view/ViewRootImpl$11;->onFrameDraw(IJ)Landroid/graphics/HardwareRenderer$FrameCommitCallback; HSPLandroid/view/ViewRootImpl$4;-><init>(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$5;->accept(Landroid/view/SurfaceControl$TransactionStats;)V -SPLandroid/view/ViewRootImpl$5;->accept(Ljava/lang/Object;)V -SPLandroid/view/ViewRootImpl$6;-><init>(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$6;->run()V +HSPLandroid/view/ViewRootImpl$6;->run()V+]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;-><init>(Landroid/view/ViewRootImpl;)V HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureNoConnection()V HSPLandroid/view/ViewRootImpl$AsyncInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V @@ -18655,18 +18671,15 @@ HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending(I)V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onFocusEvent(Z)V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V -SPLandroid/view/ViewRootImpl;->$r8$lambda$I9KJH1qLSZb1_fWNfrFUXDtFojg(Landroid/view/ViewRootImpl;)V -SPLandroid/view/ViewRootImpl;->$r8$lambda$J_WUiRtQMmJK5FDj7HKcqXqyDcc(Landroid/view/ViewRootImpl;)V -SPLandroid/view/ViewRootImpl;->$r8$lambda$Lx9xSQs8XgeRJZgj7lPDiojIGvE(Landroid/view/ViewRootImpl;)V -SPLandroid/view/ViewRootImpl;->$r8$lambda$kydZ5VrQzxxxtiGWLXqElnQw9pY(Landroid/view/ViewRootImpl;ILandroid/view/SurfaceControl$Transaction;)V -SPLandroid/view/ViewRootImpl;->$r8$lambda$o-4fi-JcmDrHYU6rHJDidn63Y3s(Landroid/view/ViewRootImpl;Ljava/lang/Runnable;)V -SPLandroid/view/ViewRootImpl;->-$$Nest$fgetmAppStartTimestampsSent(Landroid/view/ViewRootImpl;)Ljava/util/concurrent/atomic/AtomicBoolean; +HSPLandroid/view/ViewRootImpl;->$r8$lambda$I9KJH1qLSZb1_fWNfrFUXDtFojg(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl;->$r8$lambda$Lx9xSQs8XgeRJZgj7lPDiojIGvE(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmAppStartTimestampsSent(Landroid/view/ViewRootImpl;)Ljava/util/concurrent/atomic/AtomicBoolean; HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmBlastBufferQueue(Landroid/view/ViewRootImpl;)Landroid/graphics/BLASTBufferQueue; -SPLandroid/view/ViewRootImpl;->-$$Nest$fgetmFirstFramePresentedTimeNs(Landroid/view/ViewRootImpl;)J -SPLandroid/view/ViewRootImpl;->-$$Nest$fgetmRenderThreadDrawStartTimeNs(Landroid/view/ViewRootImpl;)J -SPLandroid/view/ViewRootImpl;->-$$Nest$fputmFirstFramePresentedTimeNs(Landroid/view/ViewRootImpl;J)V +HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmFirstFramePresentedTimeNs(Landroid/view/ViewRootImpl;)J +HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmRenderThreadDrawStartTimeNs(Landroid/view/ViewRootImpl;)J +HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmFirstFramePresentedTimeNs(Landroid/view/ViewRootImpl;J)V HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmProfileRendering(Landroid/view/ViewRootImpl;Z)V -SPLandroid/view/ViewRootImpl;->-$$Nest$mmaybeSendAppStartTimes(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl;->-$$Nest$mmaybeSendAppStartTimes(Landroid/view/ViewRootImpl;)V HSPLandroid/view/ViewRootImpl;->-$$Nest$mprofileRendering(Landroid/view/ViewRootImpl;Z)V HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;)V HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V @@ -18695,7 +18708,7 @@ HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$Que HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V HSPLandroid/view/ViewRootImpl;->destroySurface()V -HSPLandroid/view/ViewRootImpl;->determineForceDarkType()I +HSPLandroid/view/ViewRootImpl;->determineForceDarkType()I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/ViewRootImpl;->die(Z)Z HSPLandroid/view/ViewRootImpl;->dipToPx(I)I HSPLandroid/view/ViewRootImpl;->dispatchAppVisibility(Z)V @@ -18735,7 +18748,7 @@ HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/ HSPLandroid/view/ViewRootImpl;->getCompatWindowConfiguration()Landroid/app/WindowConfiguration; HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration; HSPLandroid/view/ViewRootImpl;->getDisplayId()I -SPLandroid/view/ViewRootImpl;->getFrameRateCompatibility()I +HSPLandroid/view/ViewRootImpl;->getFrameRateCompatibility()I HSPLandroid/view/ViewRootImpl;->getHandwritingInitiator()Landroid/view/HandwritingInitiator; HSPLandroid/view/ViewRootImpl;->getHostVisibility()I HSPLandroid/view/ViewRootImpl;->getHostVisibilityReason()Ljava/lang/String;+]Landroid/view/View;missing_types @@ -18763,7 +18776,7 @@ HSPLandroid/view/ViewRootImpl;->getWindowVisibleDisplayFrame(Landroid/graphics/R HSPLandroid/view/ViewRootImpl;->handleAppVisibility(Z)V HSPLandroid/view/ViewRootImpl;->handleContentCaptureFlush()V HSPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged()V -SPLandroid/view/ViewRootImpl;->handleInsetsControlChanged(Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;)V +HSPLandroid/view/ViewRootImpl;->handleInsetsControlChanged(Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;)V HSPLandroid/view/ViewRootImpl;->handleWindowFocusChanged()V HSPLandroid/view/ViewRootImpl;->initializeProtoLogInProcess()V HSPLandroid/view/ViewRootImpl;->intermittentUpdateState()I @@ -18784,13 +18797,11 @@ HSPLandroid/view/ViewRootImpl;->isNavigationKey(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewRootImpl;->isTextDirectionResolved()Z HSPLandroid/view/ViewRootImpl;->keepClearRectsChanged(Z)V HSPLandroid/view/ViewRootImpl;->lambda$createSyncIfNeeded$4(ILandroid/view/SurfaceControl$Transaction;)V -HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$16()V HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$17()V HSPLandroid/view/ViewRootImpl;->lambda$getOrCreateSurfaceSyncGroup$18()V HSPLandroid/view/ViewRootImpl;->lambda$new$0(Landroid/view/View;)Ljava/util/List; HSPLandroid/view/ViewRootImpl;->lambda$new$1(Landroid/view/View;)Ljava/util/List; HSPLandroid/view/ViewRootImpl;->lambda$new$2(Landroid/view/View;)Ljava/util/List; -HSPLandroid/view/ViewRootImpl;->lambda$new$9(Ljava/lang/Runnable;)V HSPLandroid/view/ViewRootImpl;->loadSystemProperties()V HSPLandroid/view/ViewRootImpl;->logAndTrace(Ljava/lang/String;)V HSPLandroid/view/ViewRootImpl;->logColorMode(IZ)V @@ -19202,7 +19213,7 @@ HSPLandroid/view/accessibility/CaptioningManager;->getUserStyle()Landroid/view/a HSPLandroid/view/accessibility/CaptioningManager;->isEnabled()Z HSPLandroid/view/accessibility/CaptioningManager;->registerObserver(Ljava/lang/String;)V HSPLandroid/view/accessibility/CaptioningManager;->removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V -SPLandroid/view/accessibility/FeatureFlagsImpl;->forceInvertColor()Z +HSPLandroid/view/accessibility/FeatureFlagsImpl;->forceInvertColor()Z HSPLandroid/view/accessibility/FeatureFlagsImpl;->supplementalDescription()Z HSPLandroid/view/accessibility/Flags;->forceInvertColor()Z HSPLandroid/view/accessibility/Flags;->supplementalDescription()Z+]Landroid/view/accessibility/FeatureFlags;Landroid/view/accessibility/FeatureFlagsImpl; @@ -19388,26 +19399,26 @@ HSPLandroid/view/autofill/AutofillClientController;->onStartActivity(Landroid/co HSPLandroid/view/autofill/AutofillFeatureFlags$$ExternalSyntheticLambda0;-><init>()V HSPLandroid/view/autofill/AutofillFeatureFlags$$ExternalSyntheticLambda1;-><init>()V HSPLandroid/view/autofill/AutofillFeatureFlags$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z -SPLandroid/view/autofill/AutofillFeatureFlags;->enableRelativeLocationForRelayout()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->enableRelayoutFixes()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->getAllowlistStringFromFlag()Ljava/lang/String; +HSPLandroid/view/autofill/AutofillFeatureFlags;->enableRelativeLocationForRelayout()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->enableRelayoutFixes()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->getAllowlistStringFromFlag()Ljava/lang/String; HSPLandroid/view/autofill/AutofillFeatureFlags;->getDenylistStringFromFlag()Ljava/lang/String; HSPLandroid/view/autofill/AutofillFeatureFlags;->getFillDialogEnabledHints()[Ljava/lang/String; HSPLandroid/view/autofill/AutofillFeatureFlags;->getNonAutofillableImeActionIdSetFromFlag()Ljava/util/Set; -SPLandroid/view/autofill/AutofillFeatureFlags;->isCredentialManagerEnabled()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->isCredentialManagerEnabled()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->isFillAndSaveDialogDisabledForCredentialManager()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->isFillDialogEnabled()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->isImproveFillDialogEnabled()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnFilteredImportantViewsEnabled()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->isImproveFillDialogEnabled()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnFilteredImportantViewsEnabled()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnUnimportantViewEnabled()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->lambda$getFillDialogEnabledHints$1(Ljava/lang/String;)Z -SPLandroid/view/autofill/AutofillFeatureFlags;->shouldAlwaysIncludeWebviewInAssistStructure()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->shouldEnableAutofillOnAllViewTypes()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->shouldEnableMultilineFilter()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->shouldIgnoreRelayoutWhenAuthPending()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldAlwaysIncludeWebviewInAssistStructure()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldEnableAutofillOnAllViewTypes()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldEnableMultilineFilter()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIgnoreRelayoutWhenAuthPending()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllChildrenViewInAssistStructure()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue()Z -SPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeInvisibleViewInAssistStructure()Z +HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeInvisibleViewInAssistStructure()Z HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId; HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/autofill/AutofillId;-><init>(I)V @@ -19600,14 +19611,14 @@ HSPLandroid/view/contentcapture/ViewNode;->-$$Nest$fputmReceiveContentMimeTypes( HSPLandroid/view/contentcapture/ViewNode;-><init>()V HSPLandroid/view/contentcapture/ViewNode;->writeSelfToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/contentcapture/ViewNode;->writeToParcel(Landroid/os/Parcel;Landroid/view/contentcapture/ViewNode;I)V -SPLandroid/view/flags/FeatureFlagsImpl;->addSchandleToVriSurface()Z +HSPLandroid/view/flags/FeatureFlagsImpl;->addSchandleToVriSurface()Z HSPLandroid/view/flags/FeatureFlagsImpl;->bufferStuffingRecovery()Z -SPLandroid/view/flags/FeatureFlagsImpl;->customizableWindowHeaders()Z -SPLandroid/view/flags/FeatureFlagsImpl;->disableDrawWakeLock()Z -SPLandroid/view/flags/FeatureFlagsImpl;->enableScrollFeedbackForTouch()Z -SPLandroid/view/flags/FeatureFlagsImpl;->enableSurfaceNativeAllocRegistrationRo()Z +HSPLandroid/view/flags/FeatureFlagsImpl;->customizableWindowHeaders()Z +HSPLandroid/view/flags/FeatureFlagsImpl;->disableDrawWakeLock()Z +HSPLandroid/view/flags/FeatureFlagsImpl;->enableScrollFeedbackForTouch()Z +HSPLandroid/view/flags/FeatureFlagsImpl;->enableSurfaceNativeAllocRegistrationRo()Z HSPLandroid/view/flags/FeatureFlagsImpl;->sensitiveContentAppProtection()Z -SPLandroid/view/flags/FeatureFlagsImpl;->viewVelocityApi()Z +HSPLandroid/view/flags/FeatureFlagsImpl;->viewVelocityApi()Z HSPLandroid/view/flags/Flags;->bufferStuffingRecovery()Z+]Landroid/view/flags/FeatureFlags;Landroid/view/flags/FeatureFlagsImpl; HSPLandroid/view/flags/Flags;->disableDrawWakeLock()Z HSPLandroid/view/flags/Flags;->sensitiveContentAppProtection()Z+]Landroid/view/flags/FeatureFlags;Landroid/view/flags/FeatureFlagsImpl; @@ -19644,8 +19655,8 @@ HSPLandroid/view/inputmethod/EditorInfo;->setInitialSurroundingText(Ljava/lang/C HSPLandroid/view/inputmethod/EditorInfo;->setInitialToolType(I)V HSPLandroid/view/inputmethod/EditorInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/inputmethod/ExtractedTextRequest;-><init>()V -SPLandroid/view/inputmethod/FeatureFlagsImpl;->compatchangeForZerojankproxy()Z -SPLandroid/view/inputmethod/FeatureFlagsImpl;->initiationWithoutInputConnection()Z +HSPLandroid/view/inputmethod/FeatureFlagsImpl;->compatchangeForZerojankproxy()Z +HSPLandroid/view/inputmethod/FeatureFlagsImpl;->initiationWithoutInputConnection()Z HSPLandroid/view/inputmethod/FeatureFlagsImpl;->refactorInsetsController()Z HSPLandroid/view/inputmethod/Flags;->refactorInsetsController()Z+]Landroid/view/inputmethod/FeatureFlags;Landroid/view/inputmethod/FeatureFlagsImpl; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;-><clinit>()V @@ -21449,15 +21460,15 @@ HSPLandroid/window/ActivityWindowInfo$1;->createFromParcel(Landroid/os/Parcel;)L HSPLandroid/window/ActivityWindowInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/window/ActivityWindowInfo$1;Landroid/window/ActivityWindowInfo$1; HSPLandroid/window/ActivityWindowInfo;-><init>()V HSPLandroid/window/ActivityWindowInfo;-><init>(Landroid/os/Parcel;)V -SPLandroid/window/ActivityWindowInfo;-><init>(Landroid/os/Parcel;Landroid/window/ActivityWindowInfo-IA;)V +HSPLandroid/window/ActivityWindowInfo;-><init>(Landroid/os/Parcel;Landroid/window/ActivityWindowInfo-IA;)V HSPLandroid/window/ActivityWindowInfo;-><init>(Landroid/window/ActivityWindowInfo;)V HSPLandroid/window/ActivityWindowInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/window/ActivityWindowInfo;->set(Landroid/window/ActivityWindowInfo;)V HSPLandroid/window/ActivityWindowInfo;->set(ZLandroid/graphics/Rect;Landroid/graphics/Rect;)V HSPLandroid/window/BackProgressAnimator;-><init>()V -SPLandroid/window/BackTouchTracker$TouchTrackerState;->$values()[Landroid/window/BackTouchTracker$TouchTrackerState; -SPLandroid/window/BackTouchTracker$TouchTrackerState;-><clinit>()V -SPLandroid/window/BackTouchTracker$TouchTrackerState;-><init>(Ljava/lang/String;I)V +HSPLandroid/window/BackTouchTracker$TouchTrackerState;->$values()[Landroid/window/BackTouchTracker$TouchTrackerState; +HSPLandroid/window/BackTouchTracker$TouchTrackerState;-><clinit>()V +HSPLandroid/window/BackTouchTracker$TouchTrackerState;-><init>(Ljava/lang/String;I)V HSPLandroid/window/BackTouchTracker;-><init>()V HSPLandroid/window/BackTouchTracker;->setProgressThresholds(FFF)V HSPLandroid/window/ClientWindowFrames$1;-><init>()V @@ -21473,49 +21484,48 @@ HSPLandroid/window/ConfigurationHelper;->isDifferentDisplay(II)Z HSPLandroid/window/ConfigurationHelper;->isDisplayRotationChanged(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Z HSPLandroid/window/ConfigurationHelper;->shouldUpdateResources(Landroid/os/IBinder;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/Configuration;ZLjava/lang/Boolean;)Z HSPLandroid/window/ConfigurationHelper;->shouldUpdateWindowMetricsBounds(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Z -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda0;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda10;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda11;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda12;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda13;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda14;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda15;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda16;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda17;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda18;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda19;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda1;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda20;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda21;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda22;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda23;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda24;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda25;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda26;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda27;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda28;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda29;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda2;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda30;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda31;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda32;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda3;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda4;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda5;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda6;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda7;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda8;-><init>()V -SPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda9;-><init>()V -SPLandroid/window/DesktopModeFlags$ToggleOverride;->$values()[Landroid/window/DesktopModeFlags$ToggleOverride; -SPLandroid/window/DesktopModeFlags$ToggleOverride;-><clinit>()V -SPLandroid/window/DesktopModeFlags$ToggleOverride;-><init>(Ljava/lang/String;I)V -SPLandroid/window/DesktopModeFlags$ToggleOverride;->fromSetting(ILandroid/window/DesktopModeFlags$ToggleOverride;)Landroid/window/DesktopModeFlags$ToggleOverride; -SPLandroid/window/DesktopModeFlags$ToggleOverride;->getSetting()I -SPLandroid/window/DesktopModeFlags;->$values()[Landroid/window/DesktopModeFlags; -SPLandroid/window/DesktopModeFlags;-><clinit>()V -HSPLandroid/window/DesktopModeFlags;->getToggleOverride(Landroid/content/ContentResolver;)Landroid/window/DesktopModeFlags$ToggleOverride; -SPLandroid/window/DesktopModeFlags;->getToggleOverrideFromSystem(Landroid/content/ContentResolver;)Landroid/window/DesktopModeFlags$ToggleOverride; -HSPLandroid/window/DesktopModeFlags;->isTrue()Z+]Landroid/app/Application;Landroid/app/Application;]Ljava/util/function/Supplier;megamorphic_types +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda0;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda10;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda11;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda12;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda13;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda14;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda15;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda16;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda17;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda18;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda19;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda1;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda20;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda21;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda22;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda23;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda24;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda25;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda26;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda27;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda28;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda29;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda2;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda30;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda31;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda32;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda3;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda4;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda5;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda6;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda7;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda8;-><init>()V +HSPLandroid/window/DesktopModeFlags$$ExternalSyntheticLambda9;-><init>()V +HSPLandroid/window/DesktopModeFlags$ToggleOverride;->$values()[Landroid/window/DesktopModeFlags$ToggleOverride; +HSPLandroid/window/DesktopModeFlags$ToggleOverride;-><clinit>()V +HSPLandroid/window/DesktopModeFlags$ToggleOverride;-><init>(Ljava/lang/String;I)V +HSPLandroid/window/DesktopModeFlags$ToggleOverride;->fromSetting(ILandroid/window/DesktopModeFlags$ToggleOverride;)Landroid/window/DesktopModeFlags$ToggleOverride; +HSPLandroid/window/DesktopModeFlags$ToggleOverride;->getSetting()I +HSPLandroid/window/DesktopModeFlags;->$values()[Landroid/window/DesktopModeFlags; +HSPLandroid/window/DesktopModeFlags;-><clinit>()V +HSPLandroid/window/DesktopModeFlags;->isFlagTrue(Ljava/util/function/BooleanSupplier;Z)Z+]Landroid/app/Application;Landroid/app/Application;]Ljava/util/function/BooleanSupplier;megamorphic_types +HSPLandroid/window/DesktopModeFlags;->isTrue()Z+]Landroid/app/Application;Landroid/app/Application;]Ljava/util/function/Supplier;Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda0;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda14;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda21;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda22;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda25;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda26;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda29;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda3;,Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda8; HSPLandroid/window/IOnBackInvokedCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V HSPLandroid/window/IOnBackInvokedCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/window/IOnBackInvokedCallback$Stub;-><init>()V @@ -21558,7 +21568,7 @@ HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda7;->accept(Ljava/lan HSPLandroid/window/SurfaceSyncGroup$2;-><init>(Landroid/window/SurfaceSyncGroup;Z)V HSPLandroid/window/SurfaceSyncGroup$2;->onTransactionReady(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/window/SurfaceSyncGroup$ISurfaceSyncGroupImpl;->getSurfaceSyncGroup()Landroid/window/SurfaceSyncGroup; -SPLandroid/window/SurfaceSyncGroup;->$r8$lambda$Kan-laRIbBzOqZCBkfLmwXUDtJA(Landroid/window/SurfaceSyncGroup;Ljava/util/function/Consumer;Landroid/view/SurfaceControl$Transaction;)V +HSPLandroid/window/SurfaceSyncGroup;->$r8$lambda$Kan-laRIbBzOqZCBkfLmwXUDtJA(Landroid/window/SurfaceSyncGroup;Ljava/util/function/Consumer;Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/window/SurfaceSyncGroup;->-$$Nest$fgetmLock(Landroid/window/SurfaceSyncGroup;)Ljava/lang/Object; HSPLandroid/window/SurfaceSyncGroup;->-$$Nest$fgetmPendingSyncs(Landroid/window/SurfaceSyncGroup;)Landroid/util/ArraySet; HSPLandroid/window/SurfaceSyncGroup;->-$$Nest$fgetmTransaction(Landroid/window/SurfaceSyncGroup;)Landroid/view/SurfaceControl$Transaction; @@ -21629,7 +21639,7 @@ HSPLandroid/window/WindowOnBackInvokedDispatcher;->getTopCallback()Landroid/wind HSPLandroid/window/WindowOnBackInvokedDispatcher;->hasImeOnBackInvokedDispatcher()Z HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled()Z HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/Context;)Z -HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;Ljava/util/function/Supplier;)Z +HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/pm/ActivityInfo;Landroid/content/pm/ApplicationInfo;Ljava/util/function/Supplier;)Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo; HSPLandroid/window/WindowOnBackInvokedDispatcher;->onConfigurationChanged(Landroid/content/res/Configuration;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallback(ILandroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallbackUnchecked(Landroid/window/OnBackInvokedCallback;I)V @@ -21852,8 +21862,8 @@ HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readByteArray([BII)V HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readInt()I HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readLongArray([JII)V HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->skip(I)V -SPLcom/android/i18n/util/ATrace;->traceBegin(Ljava/lang/String;)V -SPLcom/android/i18n/util/ATrace;->traceEnd()V +HSPLcom/android/i18n/util/ATrace;->traceBegin(Ljava/lang/String;)V +HSPLcom/android/i18n/util/ATrace;->traceEnd()V HSPLcom/android/icu/charset/CharsetDecoderICU;-><init>(Ljava/nio/charset/Charset;FJ)V HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I @@ -22074,40 +22084,46 @@ HSPLcom/android/internal/graphics/drawable/BackgroundBlurDrawable$Aggregator;->h HSPLcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl;->handleAbandonedJobs()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl;->ignoreImportantWhileForeground()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/app/job/Flags;->handleAbandonedJobs()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/app/job/FeatureFlagsImpl; -SPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;-><init>()V +HSPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;-><init>()V HSPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl;->displayPowerManagerApis()Z -SPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/Flags;-><clinit>()V +HSPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/Flags;-><clinit>()V HSPLcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/Flags;->displayPowerManagerApis()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/companion/virtualdevice/flags/FeatureFlagsImpl; HSPLcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlagsImpl;->relativeReferenceIntentFilters()Z -SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;-><init>()V -SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;->preloadHttpengineInZygote()Z -SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;-><clinit>()V -SPLcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;->preloadHttpengineInZygote()Z +HSPLcom/android/internal/hidden_from_bootclasspath/android/content/pm/Flags;->relativeReferenceIntentFilters()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/content/pm/FeatureFlagsImpl; +HSPLcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;-><init>()V +HSPLcom/android/internal/hidden_from_bootclasspath/android/net/http/FeatureFlagsImpl;->preloadHttpengineInZygote()Z +HSPLcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;-><clinit>()V +HSPLcom/android/internal/hidden_from_bootclasspath/android/net/http/Flags;->preloadHttpengineInZygote()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->adpfMeasureDuringInputEventBoost()Z -SPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->enableAngleAllowList()Z +HSPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->enableAngleAllowList()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/os/FeatureFlagsImpl;->messageQueueTailTracking()Z -SPLcom/android/internal/hidden_from_bootclasspath/android/os/Flags;->enableAngleAllowList()Z -SPLcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;->contentUriPermissionApis()Z +HSPLcom/android/internal/hidden_from_bootclasspath/android/os/Flags;->enableAngleAllowList()Z +SPLcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;->certificateTransparencyConfiguration()Z +HSPLcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;->contentUriPermissionApis()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl;->preventIntentRedirect()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/security/Flags;->contentUriPermissionApis()Z HSPLcom/android/internal/hidden_from_bootclasspath/android/security/Flags;->preventIntentRedirect()Z+]Lcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/android/security/FeatureFlagsImpl; -SPLcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlagsImpl;->notificationClassification()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableCaptionCompatInsetForceConsumption()Z +HSPLcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlagsImpl;->notificationClassification()Z +SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->disableOptOutEdgeToEdge()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableCaptionCompatInsetForceConsumption()Z HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableCaptionCompatInsetForceConsumptionAlways()Z HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->enableDesktopWindowingMode()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->predictiveBackPrioritySystemNavigationObserver()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->predictiveBackSystemOverrideCallback()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->scrollingFromLetterbox()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->sdkDesiredPresentTime()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->setScPropertiesInClient()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->predictiveBackPrioritySystemNavigationObserver()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->predictiveBackSystemOverrideCallback()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->scrollingFromLetterbox()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->sdkDesiredPresentTime()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->setScPropertiesInClient()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->showDesktopExperienceDevOption()Z HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->showDesktopWindowingDevOption()Z -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->wlinfoOncreate()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl;->wlinfoOncreate()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->disableOptOutEdgeToEdge()Z HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->enableCaptionCompatInsetForceConsumption()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl; HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->enableCaptionCompatInsetForceConsumptionAlways()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl; HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->enableDesktopWindowingMode()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl; -SPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->scrollingFromLetterbox()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->scrollingFromLetterbox()Z HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->setScPropertiesInClient()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl; -HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->showDesktopWindowingDevOption()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl; +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->showDesktopExperienceDevOption()Z +HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->showDesktopWindowingDevOption()Z HSPLcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/Flags;->wlinfoOncreate()Z+]Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlags;Lcom/android/internal/hidden_from_bootclasspath/com/android/window/flags/FeatureFlagsImpl; HSPLcom/android/internal/infra/AndroidFuture$1;->complete(Lcom/android/internal/infra/AndroidFuture;)V HSPLcom/android/internal/infra/AndroidFuture$2;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/infra/AndroidFuture; @@ -22153,9 +22169,9 @@ HSPLcom/android/internal/inputmethod/ImeTracing;->isEnabled()Z HSPLcom/android/internal/inputmethod/ImeTracing;->isSystemProcess()Z HSPLcom/android/internal/inputmethod/ImeTracingClientImpl;-><init>()V HSPLcom/android/internal/inputmethod/ImeTracingClientImpl;->triggerClientDump(Ljava/lang/String;Landroid/view/inputmethod/InputMethodManager;[B)V -SPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda3;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;)V -SPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda4;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;)V -SPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;-><init>()V +HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda3;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;)V +HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda4;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;)V +HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;-><init>()V HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;->isEnabled()Z HSPLcom/android/internal/inputmethod/ImeTracingPerfettoImpl;->triggerClientDump(Ljava/lang/String;Landroid/view/inputmethod/InputMethodManager;[B)V HSPLcom/android/internal/inputmethod/InputBindResult$1;-><init>()V @@ -22229,14 +22245,14 @@ HSPLcom/android/internal/logging/UiEventLoggerImpl;->logWithInstanceId(Lcom/andr HSPLcom/android/internal/net/NetworkUtilsInternal;-><clinit>()V HSPLcom/android/internal/os/AndroidPrintStream;-><init>(ILjava/lang/String;)V HSPLcom/android/internal/os/AndroidPrintStream;->log(Ljava/lang/String;)V -SPLcom/android/internal/os/ApplicationSharedMemory;-><init>(Ljava/io/FileDescriptor;ZJ)V -SPLcom/android/internal/os/ApplicationSharedMemory;->closeFileDescriptor()V -SPLcom/android/internal/os/ApplicationSharedMemory;->fromFileDescriptor(Ljava/io/FileDescriptor;Z)Lcom/android/internal/os/ApplicationSharedMemory; +HSPLcom/android/internal/os/ApplicationSharedMemory;-><init>(Ljava/io/FileDescriptor;ZJ)V +HSPLcom/android/internal/os/ApplicationSharedMemory;->closeFileDescriptor()V +HSPLcom/android/internal/os/ApplicationSharedMemory;->fromFileDescriptor(Ljava/io/FileDescriptor;Z)Lcom/android/internal/os/ApplicationSharedMemory; HSPLcom/android/internal/os/ApplicationSharedMemory;->getInstance()Lcom/android/internal/os/ApplicationSharedMemory; -SPLcom/android/internal/os/ApplicationSharedMemory;->getSystemNonceBlock()J -SPLcom/android/internal/os/ApplicationSharedMemory;->isMapped()Z -SPLcom/android/internal/os/ApplicationSharedMemory;->isMutable()Z -SPLcom/android/internal/os/ApplicationSharedMemory;->setInstance(Lcom/android/internal/os/ApplicationSharedMemory;)V +HSPLcom/android/internal/os/ApplicationSharedMemory;->getSystemNonceBlock()J +HSPLcom/android/internal/os/ApplicationSharedMemory;->isMapped()Z +HSPLcom/android/internal/os/ApplicationSharedMemory;->isMutable()Z +HSPLcom/android/internal/os/ApplicationSharedMemory;->setInstance(Lcom/android/internal/os/ApplicationSharedMemory;)V HSPLcom/android/internal/os/BackgroundThread;-><init>()V HSPLcom/android/internal/os/BackgroundThread;->ensureThreadLocked()V HSPLcom/android/internal/os/BackgroundThread;->getExecutor()Ljava/util/concurrent/Executor; @@ -22300,9 +22316,9 @@ HSPLcom/android/internal/os/DebugStore;->recordServiceBind(ZLandroid/content/Int HSPLcom/android/internal/os/DebugStore;->recordServiceCreate(Landroid/content/pm/ServiceInfo;)J+]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl; HSPLcom/android/internal/os/DebugStore;->recordServiceOnStart(IILandroid/content/Intent;)J+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/internal/os/DebugStore$DebugStoreNative;Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl; HSPLcom/android/internal/os/FeatureFlagsImpl;->applicationSharedMemoryEnabled()Z -SPLcom/android/internal/os/FeatureFlagsImpl;->enableApacheHttpLegacyPreload()Z +HSPLcom/android/internal/os/FeatureFlagsImpl;->enableApacheHttpLegacyPreload()Z HSPLcom/android/internal/os/Flags;->applicationSharedMemoryEnabled()Z+]Lcom/android/internal/os/FeatureFlags;Lcom/android/internal/os/FeatureFlagsImpl; -SPLcom/android/internal/os/Flags;->enableApacheHttpLegacyPreload()Z +HSPLcom/android/internal/os/Flags;->enableApacheHttpLegacyPreload()Z HSPLcom/android/internal/os/HandlerCaller$MyHandler;-><init>(Lcom/android/internal/os/HandlerCaller;Landroid/os/Looper;Z)V HSPLcom/android/internal/os/HandlerCaller$MyHandler;->handleMessage(Landroid/os/Message;)V HSPLcom/android/internal/os/HandlerCaller;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/os/HandlerCaller$Callback;Z)V @@ -22341,6 +22357,12 @@ HSPLcom/android/internal/os/ProcessCpuTracker$Stats;->getUid(Ljava/lang/String;) HSPLcom/android/internal/os/ProcessCpuTracker;->collectStats(Ljava/lang/String;IZ[ILjava/util/ArrayList;)[I HSPLcom/android/internal/os/ProcessCpuTracker;->getName(Lcom/android/internal/os/ProcessCpuTracker$Stats;Ljava/lang/String;)V HSPLcom/android/internal/os/ProcessCpuTracker;->onMeasureProcessName(Ljava/lang/String;)I +HSPLcom/android/internal/os/ProcfsMemoryUtil$MemorySnapshot;-><init>()V +SPLcom/android/internal/os/ProcfsMemoryUtil;-><clinit>()V +SPLcom/android/internal/os/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs()Lcom/android/internal/os/ProcfsMemoryUtil$MemorySnapshot; +HSPLcom/android/internal/os/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(Ljava/lang/String;)Lcom/android/internal/os/ProcfsMemoryUtil$MemorySnapshot; +SPLcom/android/internal/os/ProcfsMemoryUtil;->readOomScoreAdjFromProcfs()I +HSPLcom/android/internal/os/ProcfsMemoryUtil;->readOomScoreAdjFromProcfs(Ljava/lang/String;)I HSPLcom/android/internal/os/RuntimeInit$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLcom/android/internal/os/RuntimeInit$$ExternalSyntheticLambda1;-><init>()V HSPLcom/android/internal/os/RuntimeInit$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; @@ -22348,7 +22370,7 @@ HSPLcom/android/internal/os/RuntimeInit$Arguments;-><init>([Ljava/lang/String;)V HSPLcom/android/internal/os/RuntimeInit$Arguments;->parseArgs([Ljava/lang/String;)V HSPLcom/android/internal/os/RuntimeInit$KillApplicationHandler;-><init>(Lcom/android/internal/os/RuntimeInit$LoggingHandler;)V HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>()V -SPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>(Lcom/android/internal/os/RuntimeInit-IA;)V +HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>(Lcom/android/internal/os/RuntimeInit-IA;)V HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;-><init>(Ljava/lang/reflect/Method;[Ljava/lang/String;)V HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;->run()V HSPLcom/android/internal/os/RuntimeInit;->applicationInit(I[J[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable; @@ -22444,7 +22466,8 @@ HSPLcom/android/internal/os/ZygoteServer;->getZygoteSocketFileDescriptor()Ljava/ HSPLcom/android/internal/os/ZygoteServer;->isUsapPoolEnabled()Z HSPLcom/android/internal/os/ZygoteServer;->runSelectLoop(Ljava/lang/String;)Ljava/lang/Runnable; HSPLcom/android/internal/os/ZygoteServer;->setForkChild()V -SPLcom/android/internal/pm/RoSystemFeatures;->maybeHasFeature(Ljava/lang/String;I)Ljava/lang/Boolean; +HSPLcom/android/internal/os/logging/MetricsLoggerWrapper;->logPostGcMemorySnapshot()V+]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; +HSPLcom/android/internal/pm/RoSystemFeatures;->maybeHasFeature(Ljava/lang/String;I)Ljava/lang/Boolean; HSPLcom/android/internal/policy/DecorContext;-><init>(Landroid/content/Context;Lcom/android/internal/policy/PhoneWindow;)V HSPLcom/android/internal/policy/DecorContext;->getAutofillOptions()Landroid/content/AutofillOptions; HSPLcom/android/internal/policy/DecorContext;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; @@ -22566,6 +22589,7 @@ HSPLcom/android/internal/policy/PhoneWindow;->installDecor()V HSPLcom/android/internal/policy/PhoneWindow;->invalidatePanelMenu(I)V HSPLcom/android/internal/policy/PhoneWindow;->isEdgeToEdgeEnforced(Landroid/content/pm/ApplicationInfo;ZLandroid/content/res/TypedArray;)Z HSPLcom/android/internal/policy/PhoneWindow;->isFloating()Z +HSPLcom/android/internal/policy/PhoneWindow;->isOptingOutEdgeToEdgeEnforcement(Landroid/content/pm/ApplicationInfo;ZLandroid/content/res/TypedArray;)Z+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLcom/android/internal/policy/PhoneWindow;->isShowingWallpaper()Z HSPLcom/android/internal/policy/PhoneWindow;->isTranslucent()Z HSPLcom/android/internal/policy/PhoneWindow;->lambda$static$0(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/util/Pair; @@ -22601,61 +22625,61 @@ HSPLcom/android/internal/policy/PhoneWindow;->superDispatchKeyEvent(Landroid/vie HSPLcom/android/internal/policy/PhoneWindow;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z HSPLcom/android/internal/policy/ScreenDecorationsUtils;->supportsRoundedCornersOnWindows(Landroid/content/res/Resources;)Z HSPLcom/android/internal/policy/WearGestureInterceptionDetector;->isEnabled(Landroid/content/Context;)Z -SPLcom/android/internal/protolog/IProtoLogClient$Stub;-><init>()V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;->run(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda5;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->$r8$lambda$MQ_SVaXmDujMW5ISGNMGvz8bOeI(Lcom/android/internal/protolog/PerfettoProtoLogImpl;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;Lcom/android/internal/protolog/ProtoLogCacheUpdater;[Lcom/android/internal/protolog/common/IProtoLogGroup;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;Lcom/android/internal/protolog/ProtoLogCacheUpdater;[Lcom/android/internal/protolog/common/IProtoLogGroup;Lcom/android/internal/protolog/IProtoLogConfigurationService;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->enable()V +HSPLcom/android/internal/protolog/IProtoLogClient$Stub;-><init>()V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda4;->run(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda5;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/internal/protolog/PerfettoProtoLogImpl;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->$r8$lambda$MQ_SVaXmDujMW5ISGNMGvz8bOeI(Lcom/android/internal/protolog/PerfettoProtoLogImpl;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;Lcom/android/internal/protolog/ProtoLogCacheUpdater;[Lcom/android/internal/protolog/common/IProtoLogGroup;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;Lcom/android/internal/protolog/ProtoLogCacheUpdater;[Lcom/android/internal/protolog/common/IProtoLogGroup;Lcom/android/internal/protolog/IProtoLogConfigurationService;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->enable()V HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->onTracingInstanceStart(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V+]Lcom/android/internal/protolog/ProtoLogCacheUpdater;missing_types]Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Ljava/util/HashMap$KeySet; -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->readyToLogToLogcat()V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->registerGroupsLocally([Lcom/android/internal/protolog/common/IProtoLogGroup;)V -SPLcom/android/internal/protolog/PerfettoProtoLogImpl;->verifyNoCollisionsOrDuplicates([Lcom/android/internal/protolog/common/IProtoLogGroup;)V -SPLcom/android/internal/protolog/ProtoLog;-><clinit>()V -SPLcom/android/internal/protolog/ProtoLog;->createAndEnableNewPerfettoProtoLogImpl(Lcom/android/internal/protolog/ProtoLogDataSource;[Lcom/android/internal/protolog/common/IProtoLogGroup;)Lcom/android/internal/protolog/PerfettoProtoLogImpl; -SPLcom/android/internal/protolog/ProtoLog;->getSharedSingleInstanceDataSource()Lcom/android/internal/protolog/ProtoLogDataSource; -SPLcom/android/internal/protolog/ProtoLog;->init([Lcom/android/internal/protolog/common/IProtoLogGroup;)V -SPLcom/android/internal/protolog/ProtoLog;->initializePerfettoProtoLog([Lcom/android/internal/protolog/common/IProtoLogGroup;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;->run(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda1;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->readyToLogToLogcat()V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->registerGroupsLocally([Lcom/android/internal/protolog/common/IProtoLogGroup;)V +HSPLcom/android/internal/protolog/PerfettoProtoLogImpl;->verifyNoCollisionsOrDuplicates([Lcom/android/internal/protolog/common/IProtoLogGroup;)V +HSPLcom/android/internal/protolog/ProtoLog;-><clinit>()V +HSPLcom/android/internal/protolog/ProtoLog;->createAndEnableNewPerfettoProtoLogImpl(Lcom/android/internal/protolog/ProtoLogDataSource;[Lcom/android/internal/protolog/common/IProtoLogGroup;)Lcom/android/internal/protolog/PerfettoProtoLogImpl; +HSPLcom/android/internal/protolog/ProtoLog;->getSharedSingleInstanceDataSource()Lcom/android/internal/protolog/ProtoLogDataSource; +HSPLcom/android/internal/protolog/ProtoLog;->init([Lcom/android/internal/protolog/common/IProtoLogGroup;)V +HSPLcom/android/internal/protolog/ProtoLog;->initializePerfettoProtoLog([Lcom/android/internal/protolog/common/IProtoLogGroup;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda0;->run(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda1;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;)V HSPLcom/android/internal/protolog/ProtoLogDataSource$GroupConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Z)V -SPLcom/android/internal/protolog/ProtoLogDataSource$Instance;-><init>(Landroid/tracing/perfetto/DataSource;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;Ljava/lang/Runnable;Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$Instance;->onStart(Landroid/tracing/perfetto/StartCallbackArguments;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><clinit>()V -SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Ljava/util/Map;)V -SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Ljava/util/Map;Lcom/android/internal/protolog/ProtoLogDataSource-IA;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$Instance;-><init>(Landroid/tracing/perfetto/DataSource;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;Ljava/lang/Runnable;Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$Instance;->onStart(Landroid/tracing/perfetto/StartCallbackArguments;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><clinit>()V +HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Ljava/util/Map;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;-><init>(Lcom/android/internal/protolog/common/LogLevel;Ljava/util/Map;Lcom/android/internal/protolog/ProtoLogDataSource-IA;)V HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getConfigFor(Ljava/lang/String;)Lcom/android/internal/protolog/ProtoLogDataSource$GroupConfig;+]Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;]Ljava/util/Map;Ljava/util/HashMap; HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getDefaultGroupConfig()Lcom/android/internal/protolog/ProtoLogDataSource$GroupConfig; -SPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getGroupTagsWithOverriddenConfigs()Ljava/util/Set; -SPLcom/android/internal/protolog/ProtoLogDataSource;->$r8$lambda$UIYmd4vygAyNlpzo0qcmzUnaAs4(Lcom/android/internal/protolog/ProtoLogDataSource;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V -SPLcom/android/internal/protolog/ProtoLogDataSource;-><init>()V -SPLcom/android/internal/protolog/ProtoLogDataSource;-><init>(Ljava/lang/String;)V -SPLcom/android/internal/protolog/ProtoLogDataSource;->createInstance(Landroid/util/proto/ProtoInputStream;I)Landroid/tracing/perfetto/DataSourceInstance; -SPLcom/android/internal/protolog/ProtoLogDataSource;->createInstance(Landroid/util/proto/ProtoInputStream;I)Lcom/android/internal/protolog/ProtoLogDataSource$Instance; -SPLcom/android/internal/protolog/ProtoLogDataSource;->executeOnStartCallbacks(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V -SPLcom/android/internal/protolog/ProtoLogDataSource;->logLevelFromInt(I)Lcom/android/internal/protolog/common/LogLevel; -SPLcom/android/internal/protolog/ProtoLogDataSource;->readProtoLogConfig(Landroid/util/proto/ProtoInputStream;)Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig; -SPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnFlushCallback(Ljava/lang/Runnable;)V -SPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnStartCallback(Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;)V -SPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnStopCallback(Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;)V -SPLcom/android/internal/protolog/ProtoLogGroup;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V -SPLcom/android/internal/protolog/ProtoLogGroup;->getId()I +HSPLcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;->getGroupTagsWithOverriddenConfigs()Ljava/util/Set; +HSPLcom/android/internal/protolog/ProtoLogDataSource;->$r8$lambda$UIYmd4vygAyNlpzo0qcmzUnaAs4(Lcom/android/internal/protolog/ProtoLogDataSource;ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource;-><init>()V +HSPLcom/android/internal/protolog/ProtoLogDataSource;-><init>(Ljava/lang/String;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource;->createInstance(Landroid/util/proto/ProtoInputStream;I)Landroid/tracing/perfetto/DataSourceInstance; +HSPLcom/android/internal/protolog/ProtoLogDataSource;->createInstance(Landroid/util/proto/ProtoInputStream;I)Lcom/android/internal/protolog/ProtoLogDataSource$Instance; +HSPLcom/android/internal/protolog/ProtoLogDataSource;->executeOnStartCallbacks(ILcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource;->logLevelFromInt(I)Lcom/android/internal/protolog/common/LogLevel; +HSPLcom/android/internal/protolog/ProtoLogDataSource;->readProtoLogConfig(Landroid/util/proto/ProtoInputStream;)Lcom/android/internal/protolog/ProtoLogDataSource$ProtoLogConfig; +HSPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnFlushCallback(Ljava/lang/Runnable;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnStartCallback(Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStartCallback;)V +HSPLcom/android/internal/protolog/ProtoLogDataSource;->registerOnStopCallback(Lcom/android/internal/protolog/ProtoLogDataSource$Instance$TracingInstanceStopCallback;)V +HSPLcom/android/internal/protolog/ProtoLogGroup;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLcom/android/internal/protolog/ProtoLogGroup;->getId()I HSPLcom/android/internal/protolog/ProtoLogGroup;->name()Ljava/lang/String; -SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;-><init>()V -SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;->update(Lcom/android/internal/protolog/common/IProtoLog;)V -SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;[Lcom/android/internal/protolog/common/IProtoLogGroup;)V -SPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;->lambda$new$0(Lcom/android/internal/protolog/common/IProtoLog;)V -SPLcom/android/internal/protolog/common/LogLevel;->$values()[Lcom/android/internal/protolog/common/LogLevel; -SPLcom/android/internal/protolog/common/LogLevel;-><clinit>()V -SPLcom/android/internal/protolog/common/LogLevel;-><init>(Ljava/lang/String;ILjava/lang/String;I)V +HSPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;-><init>()V +HSPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl$$ExternalSyntheticLambda0;->update(Lcom/android/internal/protolog/common/IProtoLog;)V +HSPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;-><init>(Lcom/android/internal/protolog/ProtoLogDataSource;[Lcom/android/internal/protolog/common/IProtoLogGroup;)V +HSPLcom/android/internal/protolog/UnprocessedPerfettoProtoLogImpl;->lambda$new$0(Lcom/android/internal/protolog/common/IProtoLog;)V +HSPLcom/android/internal/protolog/common/LogLevel;->$values()[Lcom/android/internal/protolog/common/LogLevel; +HSPLcom/android/internal/protolog/common/LogLevel;-><clinit>()V +HSPLcom/android/internal/protolog/common/LogLevel;-><init>(Ljava/lang/String;ILjava/lang/String;I)V HSPLcom/android/internal/protolog/common/LogLevel;->values()[Lcom/android/internal/protolog/common/LogLevel; -SPLcom/android/internal/ravenwood/RavenwoodEnvironment;->getInstance()Lcom/android/internal/ravenwood/RavenwoodEnvironment; -SPLcom/android/internal/ravenwood/RavenwoodEnvironment;->isRunningOnRavenwood()Z +HSPLcom/android/internal/ravenwood/RavenwoodEnvironment;->getInstance()Lcom/android/internal/ravenwood/RavenwoodEnvironment; +HSPLcom/android/internal/ravenwood/RavenwoodEnvironment;->isRunningOnRavenwood()Z HSPLcom/android/internal/statusbar/IStatusBarService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/statusbar/IStatusBarService; HSPLcom/android/internal/statusbar/NotificationVisibility;->recycle()V HSPLcom/android/internal/telecom/ClientTransactionalServiceRepository;-><clinit>()V @@ -22873,6 +22897,7 @@ HSPLcom/android/internal/util/FrameworkStatsLog;->write(III)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIII)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIILjava/lang/String;I)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIJII)V +HSPLcom/android/internal/util/FrameworkStatsLog;->write(IILjava/lang/String;IIIIII[Ljava/lang/String;[J[J[J[J)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IILjava/lang/String;IZ)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(ILjava/lang/String;I)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(ILjava/lang/String;IIF)V @@ -22953,7 +22978,7 @@ HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/Cha HSPLcom/android/internal/util/ProcFileReader;->finishLine()V HSPLcom/android/internal/util/RateLimitingCache;->get(Lcom/android/internal/util/RateLimitingCache$ValueFetcher;)Ljava/lang/Object;+]Lcom/android/internal/util/RateLimitingCache$ValueFetcher;Landroid/app/ActivityManager$$ExternalSyntheticLambda0;,Landroid/app/ActivityManager$$ExternalSyntheticLambda1;,Landroid/app/ActivityManager$$ExternalSyntheticLambda2;,Landroid/app/ActivityManager$$ExternalSyntheticLambda3;]Lcom/android/internal/util/RateLimitingCache;Lcom/android/internal/util/RateLimitingCache; HSPLcom/android/internal/util/RateLimitingCache;->getTime()J -HSPLcom/android/internal/util/RingBuffer;-><init>(Ljava/util/function/Supplier;Ljava/util/function/IntFunction;I)V+]Ljava/util/function/IntFunction;Landroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1;,Lcom/android/internal/util/RingBuffer$$ExternalSyntheticLambda1; +HSPLcom/android/internal/util/RingBuffer;-><init>(Ljava/util/function/Supplier;Ljava/util/function/IntFunction;I)V+]Ljava/util/function/IntFunction;Landroid/database/sqlite/SQLiteConnection$OperationLog$$ExternalSyntheticLambda1; HSPLcom/android/internal/util/ScreenshotHelper;-><init>(Landroid/content/Context;)V HSPLcom/android/internal/util/StatLogger;->getTime()J HSPLcom/android/internal/util/StatLogger;->logDurationStat(IJ)J @@ -23044,7 +23069,7 @@ HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/S HSPLcom/android/internal/util/XmlUtils;->writeSetXml(Ljava/util/Set;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V -SPLcom/android/internal/util/function/pooled/OmniFunction;-><init>()V +HSPLcom/android/internal/util/function/pooled/OmniFunction;-><init>()V HSPLcom/android/internal/util/function/pooled/OmniFunction;->run()V HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/HexConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/QuadConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; @@ -23057,10 +23082,10 @@ HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainRunnable(Ljav HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->decodeArgCount(I)I HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->decodeReturnType(I)I HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->encode(II)I -SPLcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;-><init>(Ljava/lang/Object;)V +HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;-><init>(Ljava/lang/Object;)V HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->-$$Nest$smmask(II)I HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->-$$Nest$smunmask(II)I -SPLcom/android/internal/util/function/pooled/PooledLambdaImpl;-><clinit>()V +HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;-><clinit>()V HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;-><init>()V HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;)Lcom/android/internal/util/function/pooled/PooledLambdaImpl; HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;Ljava/lang/Object;IIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/internal/util/function/pooled/PooledLambda; @@ -23162,10 +23187,12 @@ HSPLcom/android/internal/widget/LockPatternUtils;->isManagedProfile(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z -SPLcom/android/libcore/readonly/FeatureFlagsImpl;-><init>()V +HSPLcom/android/libcore/readonly/FeatureFlagsImpl;-><init>()V HSPLcom/android/libcore/readonly/FeatureFlagsImpl;->nativeMetrics()Z -SPLcom/android/libcore/readonly/Flags;-><clinit>()V +SPLcom/android/libcore/readonly/FeatureFlagsImpl;->postCleanupApis()Z +HSPLcom/android/libcore/readonly/Flags;-><clinit>()V HSPLcom/android/libcore/readonly/Flags;->nativeMetrics()Z+]Lcom/android/libcore/readonly/FeatureFlags;Lcom/android/libcore/readonly/FeatureFlagsImpl; +SPLcom/android/libcore/readonly/Flags;->postCleanupApis()Z HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeBoolean(Ljava/lang/String;Ljava/lang/String;)Z+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeFloat(Ljava/lang/String;Ljava/lang/String;)F HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndex(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; @@ -23183,10 +23210,10 @@ HSPLcom/android/net/module/util/NetUtils;->maskRawAddress([BI)V HSPLcom/android/net/module/util/NetworkCapabilitiesUtils;-><clinit>()V HSPLcom/android/os/coregraphics/HwuiStatsLog;->write(IIJI)V HSPLcom/android/server/LocalServices;->getService(Ljava/lang/Class;)Ljava/lang/Object; -SPLcom/android/server/display/feature/flags/FeatureFlagsImpl;-><init>()V -SPLcom/android/server/display/feature/flags/FeatureFlagsImpl;->displayListenerPerformanceImprovements()Z -SPLcom/android/server/display/feature/flags/FeatureFlagsImpl;->subscribeGranularDisplayEvents()Z -SPLcom/android/server/display/feature/flags/Flags;-><clinit>()V +HSPLcom/android/server/display/feature/flags/FeatureFlagsImpl;-><init>()V +HSPLcom/android/server/display/feature/flags/FeatureFlagsImpl;->displayListenerPerformanceImprovements()Z +HSPLcom/android/server/display/feature/flags/FeatureFlagsImpl;->subscribeGranularDisplayEvents()Z +HSPLcom/android/server/display/feature/flags/Flags;-><clinit>()V HSPLcom/android/server/display/feature/flags/Flags;->displayListenerPerformanceImprovements()Z+]Lcom/android/server/display/feature/flags/FeatureFlags;Lcom/android/server/display/feature/flags/FeatureFlagsImpl; HSPLcom/android/server/display/feature/flags/Flags;->subscribeGranularDisplayEvents()Z HSPLcom/android/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I @@ -23334,6 +23361,7 @@ Landroid/accounts/AccountManager$AmsTask$1; Landroid/accounts/AccountManager$AmsTask$Response; Landroid/accounts/AccountManager$AmsTask; Landroid/accounts/AccountManager$BaseFutureTask$1; +Landroid/accounts/AccountManager$BaseFutureTask$Response; Landroid/accounts/AccountManager$BaseFutureTask; Landroid/accounts/AccountManager$Future2Task$1; Landroid/accounts/AccountManager$Future2Task; @@ -23348,6 +23376,7 @@ Landroid/accounts/AuthenticatorDescription$1; Landroid/accounts/AuthenticatorDescription-IA; Landroid/accounts/AuthenticatorDescription; Landroid/accounts/AuthenticatorException; +Landroid/accounts/IAccountAuthenticator$Stub$Proxy; Landroid/accounts/IAccountAuthenticator$Stub; Landroid/accounts/IAccountAuthenticator; Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy; @@ -23356,6 +23385,7 @@ Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/IAccountManager$Stub$Proxy; Landroid/accounts/IAccountManager$Stub; Landroid/accounts/IAccountManager; +Landroid/accounts/IAccountManagerResponse$Stub$Proxy; Landroid/accounts/IAccountManagerResponse$Stub; Landroid/accounts/IAccountManagerResponse; Landroid/accounts/NetworkErrorException; @@ -23497,6 +23527,7 @@ Landroid/app/ActivityManager$$ExternalSyntheticLambda0; Landroid/app/ActivityManager$$ExternalSyntheticLambda1; Landroid/app/ActivityManager$$ExternalSyntheticLambda2; Landroid/app/ActivityManager$1; +Landroid/app/ActivityManager$2; Landroid/app/ActivityManager$3; Landroid/app/ActivityManager$4; Landroid/app/ActivityManager$AppTask; @@ -23547,8 +23578,10 @@ Landroid/app/ActivityThread$2; Landroid/app/ActivityThread$3; Landroid/app/ActivityThread$4; Landroid/app/ActivityThread$5; +Landroid/app/ActivityThread$6; Landroid/app/ActivityThread$ActivityClientRecord$1; Landroid/app/ActivityThread$ActivityClientRecord; +Landroid/app/ActivityThread$AndroidOs; Landroid/app/ActivityThread$AppBindData; Landroid/app/ActivityThread$ApplicationThread$$ExternalSyntheticLambda2; Landroid/app/ActivityThread$ApplicationThread$1; @@ -23582,6 +23615,7 @@ Landroid/app/ActivityTransitionState$1; Landroid/app/ActivityTransitionState; Landroid/app/AlarmManager$AlarmClockInfo$1; Landroid/app/AlarmManager$AlarmClockInfo; +Landroid/app/AlarmManager$ListenerWrapper; Landroid/app/AlarmManager$OnAlarmListener; Landroid/app/AlarmManager; Landroid/app/AlertDialog$Builder; @@ -23602,6 +23636,7 @@ Landroid/app/AppOpsManager$$ExternalSyntheticLambda6; Landroid/app/AppOpsManager$$ExternalSyntheticLambda8; Landroid/app/AppOpsManager$1; Landroid/app/AppOpsManager$2; +Landroid/app/AppOpsManager$3; Landroid/app/AppOpsManager$4; Landroid/app/AppOpsManager$AppOpsCollector; Landroid/app/AppOpsManager$AttributedHistoricalOps$1; @@ -23671,6 +23706,7 @@ Landroid/app/ApplicationPackageManager$HasSystemFeatureQuery; Landroid/app/ApplicationPackageManager$MoveCallbackDelegate; Landroid/app/ApplicationPackageManager$ResourceName; Landroid/app/ApplicationPackageManager-IA; +Landroid/app/ApplicationPackageManager; Landroid/app/AsyncNotedAppOp$1; Landroid/app/AsyncNotedAppOp; Landroid/app/AutomaticZenRule$1; @@ -23699,6 +23735,7 @@ Landroid/app/ContentProviderHolder-IA; Landroid/app/ContentProviderHolder; Landroid/app/ContextImpl$1; Landroid/app/ContextImpl$ApplicationContentResolver; +Landroid/app/ContextImpl; Landroid/app/DexLoadReporter; Landroid/app/Dialog$$ExternalSyntheticLambda0; Landroid/app/Dialog$$ExternalSyntheticLambda1; @@ -23784,6 +23821,7 @@ Landroid/app/IAppTraceRetriever; Landroid/app/IApplicationStartInfoCompleteListener$Stub$Proxy; Landroid/app/IApplicationStartInfoCompleteListener$Stub; Landroid/app/IApplicationStartInfoCompleteListener; +Landroid/app/IApplicationThread$Stub$Proxy; Landroid/app/IApplicationThread$Stub; Landroid/app/IApplicationThread; Landroid/app/IAssistDataReceiver$Stub$Proxy; @@ -23827,11 +23865,13 @@ Landroid/app/IScreenCaptureObserver; Landroid/app/ISearchManager$Stub$Proxy; Landroid/app/ISearchManager$Stub; Landroid/app/ISearchManager; +Landroid/app/IServiceConnection$Stub$Proxy; Landroid/app/IServiceConnection$Stub; Landroid/app/IServiceConnection; Landroid/app/IStopUserCallback$Stub$Proxy; Landroid/app/IStopUserCallback$Stub; Landroid/app/IStopUserCallback; +Landroid/app/ITaskStackListener$Stub$Proxy; Landroid/app/ITaskStackListener$Stub; Landroid/app/ITaskStackListener; Landroid/app/ITransientNotification$Stub$Proxy; @@ -23851,6 +23891,7 @@ Landroid/app/IUiModeManagerCallback; Landroid/app/IUidFrozenStateChangedCallback$Stub$Proxy; Landroid/app/IUidFrozenStateChangedCallback$Stub; Landroid/app/IUidFrozenStateChangedCallback; +Landroid/app/IUidObserver$Stub$Proxy; Landroid/app/IUidObserver$Stub; Landroid/app/IUidObserver; Landroid/app/IUnsafeIntentStrictModeCallback$Stub; @@ -23879,6 +23920,7 @@ Landroid/app/Instrumentation; Landroid/app/IntentReceiverLeaked; Landroid/app/IntentService$ServiceHandler; Landroid/app/IntentService; +Landroid/app/JobSchedulerImpl; Landroid/app/KeyguardManager$1; Landroid/app/KeyguardManager$2; Landroid/app/KeyguardManager$KeyguardDismissCallback; @@ -23886,9 +23928,11 @@ Landroid/app/KeyguardManager; Landroid/app/ListActivity; Landroid/app/LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0; Landroid/app/LoadedApk$ReceiverDispatcher$Args; +Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver; Landroid/app/LoadedApk$ReceiverDispatcher; Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo; Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor; +Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection; Landroid/app/LoadedApk$ServiceDispatcher$RunConnection; Landroid/app/LoadedApk$ServiceDispatcher; Landroid/app/LoadedApk$SplitDependencyLoaderImpl; @@ -23945,6 +23989,7 @@ Landroid/app/NotificationManager$NotificationChannelQuery; Landroid/app/NotificationManager$NotificationKey; Landroid/app/NotificationManager$Policy$1; Landroid/app/NotificationManager$Policy; +Landroid/app/NotificationManager$RateLimiter; Landroid/app/NotificationManager; Landroid/app/OnActivityPausedListener; Landroid/app/PackageInstallObserver$1; @@ -23955,6 +24000,7 @@ Landroid/app/PendingIntent$$ExternalSyntheticLambda2; Landroid/app/PendingIntent$1; Landroid/app/PendingIntent$CancelListener; Landroid/app/PendingIntent$CanceledException; +Landroid/app/PendingIntent$FinishedDispatcher; Landroid/app/PendingIntent$OnFinished; Landroid/app/PendingIntent$OnMarshaledListener; Landroid/app/PendingIntent; @@ -24041,6 +24087,7 @@ Landroid/app/SharedPreferencesImpl$EditorImpl; Landroid/app/SharedPreferencesImpl$MemoryCommitResult; Landroid/app/SharedPreferencesImpl$SharedPreferencesThreadFactory; Landroid/app/SharedPreferencesImpl-IA; +Landroid/app/SharedPreferencesImpl; Landroid/app/StackTrace; Landroid/app/StatusBarManager; Landroid/app/SyncNotedAppOp$1; @@ -24444,6 +24491,7 @@ Landroid/app/job/JobSchedulerFrameworkInitializer; Landroid/app/job/JobService$1; Landroid/app/job/JobService; Landroid/app/job/JobServiceEngine$JobHandler; +Landroid/app/job/JobServiceEngine$JobInterface; Landroid/app/job/JobServiceEngine; Landroid/app/job/JobWorkItem$1; Landroid/app/job/JobWorkItem; @@ -24751,6 +24799,7 @@ Landroid/content/ComponentName$1; Landroid/content/ComponentName$WithComponentName; Landroid/content/ComponentName; Landroid/content/ContentCaptureOptions$1; +Landroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda0; Landroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda1; Landroid/content/ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda2; Landroid/content/ContentCaptureOptions$ContentProtectionOptions; @@ -24772,10 +24821,12 @@ Landroid/content/ContentProviderOperation$BackReference; Landroid/content/ContentProviderOperation$Builder; Landroid/content/ContentProviderOperation-IA; Landroid/content/ContentProviderOperation; +Landroid/content/ContentProviderProxy; Landroid/content/ContentProviderResult$1; Landroid/content/ContentProviderResult; Landroid/content/ContentResolver$1; Landroid/content/ContentResolver$2; +Landroid/content/ContentResolver$CursorWrapperInner; Landroid/content/ContentResolver$OpenResourceIdResult; Landroid/content/ContentResolver$ParcelFileDescriptorInner; Landroid/content/ContentResolver$ResultListener; @@ -24806,6 +24857,7 @@ Landroid/content/IContentProvider; Landroid/content/IContentService$Stub$Proxy; Landroid/content/IContentService$Stub; Landroid/content/IContentService; +Landroid/content/IIntentReceiver$Stub$Proxy; Landroid/content/IIntentReceiver$Stub; Landroid/content/IIntentReceiver; Landroid/content/IIntentSender$Stub$Proxy; @@ -24979,6 +25031,7 @@ Landroid/content/pm/IDexModuleRegisterCallback; Landroid/content/pm/ILauncherApps$Stub$Proxy; Landroid/content/pm/ILauncherApps$Stub; Landroid/content/pm/ILauncherApps; +Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy; Landroid/content/pm/IOnAppsChangedListener$Stub; Landroid/content/pm/IOnAppsChangedListener; Landroid/content/pm/IOnChecksumsReadyListener$Stub$Proxy; @@ -25324,6 +25377,7 @@ Landroid/content/res/StringBlock; Landroid/content/res/ThemedResourceCache; Landroid/content/res/TypedArray; Landroid/content/res/Validator; +Landroid/content/res/XmlBlock$Parser; Landroid/content/res/XmlBlock; Landroid/content/res/XmlResourceParser; Landroid/content/res/loader/AssetsProvider; @@ -25357,6 +25411,7 @@ Landroid/database/CharArrayBuffer; Landroid/database/ContentObservable; Landroid/database/ContentObserver$$ExternalSyntheticLambda0; Landroid/database/ContentObserver$$ExternalSyntheticLambda1; +Landroid/database/ContentObserver$Transport; Landroid/database/ContentObserver; Landroid/database/CrossProcessCursor; Landroid/database/CrossProcessCursorWrapper; @@ -25375,6 +25430,7 @@ Landroid/database/DatabaseUtils$InsertHelper; Landroid/database/DatabaseUtils; Landroid/database/DefaultDatabaseErrorHandler; Landroid/database/IBulkCursor; +Landroid/database/IContentObserver$Stub$Proxy; Landroid/database/IContentObserver$Stub; Landroid/database/IContentObserver; Landroid/database/MatrixCursor$RowBuilder; @@ -25411,6 +25467,7 @@ Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler; Landroid/database/sqlite/SQLiteConnectionPool-IA; Landroid/database/sqlite/SQLiteConnectionPool; Landroid/database/sqlite/SQLiteConstraintException; +Landroid/database/sqlite/SQLiteCursor; Landroid/database/sqlite/SQLiteCursorDriver; Landroid/database/sqlite/SQLiteCustomFunction; Landroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0; @@ -25438,6 +25495,7 @@ Landroid/database/sqlite/SQLiteException; Landroid/database/sqlite/SQLiteFullException; Landroid/database/sqlite/SQLiteGlobal; Landroid/database/sqlite/SQLiteMisuseException; +Landroid/database/sqlite/SQLiteOpenHelper$$ExternalSyntheticLambda0; Landroid/database/sqlite/SQLiteOpenHelper; Landroid/database/sqlite/SQLiteOutOfMemoryException; Landroid/database/sqlite/SQLiteProgram; @@ -25510,6 +25568,7 @@ Landroid/graphics/ColorSpace$Connector; Landroid/graphics/ColorSpace$Lab; Landroid/graphics/ColorSpace$Model; Landroid/graphics/ColorSpace$Named; +Landroid/graphics/ColorSpace$OkLab; Landroid/graphics/ColorSpace$RenderIntent; Landroid/graphics/ColorSpace$Rgb$$ExternalSyntheticLambda0; Landroid/graphics/ColorSpace$Rgb$$ExternalSyntheticLambda1; @@ -25916,6 +25975,7 @@ Landroid/hardware/SystemSensorManager$BaseEventQueue; Landroid/hardware/SystemSensorManager$InjectEventQueue; Landroid/hardware/SystemSensorManager$SensorEventQueue; Landroid/hardware/SystemSensorManager$TriggerEventQueue; +Landroid/hardware/SystemSensorManager; Landroid/hardware/TriggerEvent; Landroid/hardware/TriggerEventListener; Landroid/hardware/biometrics/BiometricAuthenticator$AuthenticationCallback; @@ -26193,6 +26253,7 @@ Landroid/hardware/display/DeviceProductInfo; Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda0; Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda1; Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda2; +Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda3; Landroid/hardware/display/DisplayManager$DisplayListener; Landroid/hardware/display/DisplayManager$WeakDisplayCache; Landroid/hardware/display/DisplayManager-IA; @@ -28250,8 +28311,13 @@ Landroid/inputmethodservice/SoftInputWindow; Landroid/internal/aconfig/storage/AconfigStorageException; Landroid/internal/aconfig/storage/ByteBufferReader; Landroid/internal/aconfig/storage/FileType; +Landroid/internal/aconfig/storage/FlagTable$Header; +Landroid/internal/aconfig/storage/FlagTable; +Landroid/internal/aconfig/storage/FlagValueList$Header; +Landroid/internal/aconfig/storage/FlagValueList; Landroid/internal/aconfig/storage/PackageTable$Header; Landroid/internal/aconfig/storage/PackageTable; +Landroid/internal/aconfig/storage/TableUtils$StorageFilesBundle; Landroid/internal/framework/protobuf/nano/InvalidProtocolBufferNanoException; Landroid/internal/framework/protobuf/nano/MessageNano; Landroid/internal/hidl/base/V1_0/DebugInfo; @@ -28278,6 +28344,7 @@ Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda8; Landroid/internal/telephony/sysprop/TelephonyProperties$$ExternalSyntheticLambda9; Landroid/internal/telephony/sysprop/TelephonyProperties; +Landroid/location/CountryDetector; Landroid/location/Geofence$1; Landroid/location/Geofence; Landroid/location/IFusedGeofenceHardware$Stub$Proxy; @@ -28286,11 +28353,16 @@ Landroid/location/IFusedGeofenceHardware; Landroid/location/IGpsGeofenceHardware$Stub$Proxy; Landroid/location/IGpsGeofenceHardware$Stub; Landroid/location/IGpsGeofenceHardware; +Landroid/location/ILocationManager$Stub$Proxy; +Landroid/location/ILocationManager$Stub; +Landroid/location/ILocationManager; Landroid/location/Location$$ExternalSyntheticLambda0; Landroid/location/Location$1; Landroid/location/Location$BearingDistanceCache; Landroid/location/Location-IA; Landroid/location/Location; +Landroid/location/LocationManager$LocationEnabledCache; +Landroid/location/LocationManager; Landroid/location/LocationTime$1; Landroid/location/LocationTime; Landroid/location/flags/FeatureFlags; @@ -28322,8 +28394,10 @@ Landroid/media/AudioGain; Landroid/media/AudioGainConfig; Landroid/media/AudioHandle; Landroid/media/AudioManager$1; +Landroid/media/AudioManager$2; Landroid/media/AudioManager$3; Landroid/media/AudioManager$4; +Landroid/media/AudioManager$5; Landroid/media/AudioManager$AudioPlaybackCallback; Landroid/media/AudioManager$AudioPlaybackCallbackInfo; Landroid/media/AudioManager$AudioRecordingCallback; @@ -28342,6 +28416,7 @@ Landroid/media/AudioManager$RecordConfigChangeCallbackData; Landroid/media/AudioManager$SafeWaitObject; Landroid/media/AudioManager$ServiceEventHandlerDelegate$1; Landroid/media/AudioManager$ServiceEventHandlerDelegate; +Landroid/media/AudioManager$VolumeCacheQuery; Landroid/media/AudioManager-IA; Landroid/media/AudioManager; Landroid/media/AudioManagerInternal$RingerModeDelegate; @@ -28455,6 +28530,7 @@ Landroid/media/IMediaRouter2$Stub; Landroid/media/IMediaRouter2; Landroid/media/IMediaRouter2Manager$Stub; Landroid/media/IMediaRouter2Manager; +Landroid/media/IMediaRouterClient$Stub$Proxy; Landroid/media/IMediaRouterClient$Stub; Landroid/media/IMediaRouterClient; Landroid/media/IMediaRouterService$Stub$Proxy; @@ -28507,7 +28583,9 @@ Landroid/media/MediaCodec$CryptoException; Landroid/media/MediaCodec$CryptoInfo$Pattern; Landroid/media/MediaCodec$CryptoInfo; Landroid/media/MediaCodec$EventHandler; +Landroid/media/MediaCodec$GlobalResourceInfo; Landroid/media/MediaCodec$IncompatibleWithBlockModelException; +Landroid/media/MediaCodec$InstanceResourceInfo; Landroid/media/MediaCodec$InvalidBufferFlagsException; Landroid/media/MediaCodec$LinearBlock; Landroid/media/MediaCodec$OnFrameRenderedListener; @@ -28857,6 +28935,7 @@ Landroid/media/session/ISessionCallback; Landroid/media/session/ISessionController$Stub$Proxy; Landroid/media/session/ISessionController$Stub; Landroid/media/session/ISessionController; +Landroid/media/session/ISessionControllerCallback$Stub$Proxy; Landroid/media/session/ISessionControllerCallback$Stub; Landroid/media/session/ISessionControllerCallback; Landroid/media/session/ISessionManager$Stub$Proxy; @@ -28985,6 +29064,8 @@ Landroid/net/LocalServerSocket; Landroid/net/LocalSocket; Landroid/net/LocalSocketAddress$Namespace; Landroid/net/LocalSocketAddress; +Landroid/net/LocalSocketImpl$SocketInputStream; +Landroid/net/LocalSocketImpl$SocketOutputStream; Landroid/net/LocalSocketImpl; Landroid/net/MatchAllNetworkSpecifier$1; Landroid/net/MatchAllNetworkSpecifier; @@ -29033,11 +29114,15 @@ Landroid/net/Uri$1; Landroid/net/Uri$AbstractHierarchicalUri; Landroid/net/Uri$AbstractPart; Landroid/net/Uri$Builder; +Landroid/net/Uri$HierarchicalUri; Landroid/net/Uri$NotCachedHolder; +Landroid/net/Uri$OpaqueUri; Landroid/net/Uri$Part$EmptyPart; Landroid/net/Uri$Part; Landroid/net/Uri$PathPart; +Landroid/net/Uri$PathSegments; Landroid/net/Uri$PathSegmentsBuilder; +Landroid/net/Uri$StringUri; Landroid/net/Uri-IA; Landroid/net/Uri; Landroid/net/UriCodec; @@ -29287,7 +29372,6 @@ Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda8; Landroid/nfc/NfcOemExtension$$ExternalSyntheticLambda9; Landroid/nfc/NfcOemExtension$Callback; Landroid/nfc/NfcOemExtension$NfcOemExtensionCallback; -Landroid/nfc/NfcOemExtension-IA; Landroid/nfc/NfcOemExtension; Landroid/nfc/NfcRoutingTableEntry; Landroid/nfc/NfcServiceManager$ServiceRegisterer; @@ -29440,6 +29524,7 @@ Landroid/os/Binder; Landroid/os/BinderProxy$BinderProxyMapSizeException; Landroid/os/BinderProxy$NoImagePreloadHolder; Landroid/os/BinderProxy$ProxyMap; +Landroid/os/BinderProxy; Landroid/os/BluetoothServiceManager$ServiceRegisterer; Landroid/os/BluetoothServiceManager; Landroid/os/BugreportManager; @@ -29676,6 +29761,7 @@ Landroid/os/IpcDataCache; Landroid/os/LimitExceededException; Landroid/os/LocaleList$1; Landroid/os/LocaleList; +Landroid/os/Looper$NoImagePreloadHolder; Landroid/os/Looper$Observer; Landroid/os/Looper; Landroid/os/MemoryFile; @@ -29715,7 +29801,7 @@ Landroid/os/OutcomeReceiver; Landroid/os/PackageTagsList$1; Landroid/os/PackageTagsList; Landroid/os/Parcel$1; -Landroid/os/Parcel$ClassLoaderProvider; +Landroid/os/Parcel$2; Landroid/os/Parcel$LazyValue; Landroid/os/Parcel$ReadWriteHelper; Landroid/os/Parcel$SquashReadHelper; @@ -29844,6 +29930,7 @@ Landroid/os/StrictMode$1; Landroid/os/StrictMode$2; Landroid/os/StrictMode$3; Landroid/os/StrictMode$4; +Landroid/os/StrictMode$5; Landroid/os/StrictMode$6; Landroid/os/StrictMode$7; Landroid/os/StrictMode$8; @@ -30646,6 +30733,7 @@ Landroid/service/notification/NotificationAssistantService; Landroid/service/notification/NotificationListenerFilter$1; Landroid/service/notification/NotificationListenerFilter; Landroid/service/notification/NotificationListenerService$MyHandler; +Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper; Landroid/service/notification/NotificationListenerService$Ranking; Landroid/service/notification/NotificationListenerService$RankingMap$1; Landroid/service/notification/NotificationListenerService$RankingMap; @@ -30660,6 +30748,7 @@ Landroid/service/notification/RateEstimator; Landroid/service/notification/ScheduleCalendar; Landroid/service/notification/SnoozeCriterion$1; Landroid/service/notification/SnoozeCriterion; +Landroid/service/notification/StatusBarNotification$$ExternalSyntheticLambda0; Landroid/service/notification/StatusBarNotification$1; Landroid/service/notification/StatusBarNotification; Landroid/service/notification/ZenDeviceEffects$1; @@ -30839,6 +30928,7 @@ Landroid/system/keystore2/KeyParameters$1; Landroid/system/keystore2/KeyParameters; Landroid/system/keystore2/OperationChallenge$1; Landroid/system/keystore2/OperationChallenge; +Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub$Proxy; Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub; Landroid/system/suspend/internal/ISuspendControlServiceInternal; Landroid/system/suspend/internal/WakeLockInfo$1; @@ -31126,6 +31216,7 @@ Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub$$ExternalSynthetic Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda62; Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda6; Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda9; +Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub; Landroid/telephony/PhoneStateListener; Landroid/telephony/PhysicalChannelConfig$1; Landroid/telephony/PhysicalChannelConfig$Builder; @@ -31232,6 +31323,7 @@ Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticL Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda52; Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda63; Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda65; +Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub; Landroid/telephony/TelephonyCallback$ImsCallDisconnectCauseListener; Landroid/telephony/TelephonyCallback$LinkCapacityEstimateChangedListener; Landroid/telephony/TelephonyCallback$MediaQualityStatusChangedListener; @@ -31293,6 +31385,7 @@ Landroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda0; Landroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda1; Landroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda2; Landroid/telephony/TelephonyRegistryManager$1$$ExternalSyntheticLambda0; +Landroid/telephony/TelephonyRegistryManager$1; Landroid/telephony/TelephonyRegistryManager$2; Landroid/telephony/TelephonyRegistryManager$3; Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0; @@ -31674,6 +31767,7 @@ Landroid/text/SpanSet; Landroid/text/SpanWatcher; Landroid/text/Spannable$Factory; Landroid/text/Spannable; +Landroid/text/SpannableString; Landroid/text/SpannableStringBuilder; Landroid/text/SpannableStringInternal; Landroid/text/Spanned; @@ -31924,6 +32018,7 @@ Landroid/updatabledriver/UpdatableDriverProto$DenylistsOrBuilder; Landroid/util/AndroidException; Landroid/util/AndroidRuntimeException; Landroid/util/ArrayMap$1; +Landroid/util/ArrayMap; Landroid/util/ArraySet$1; Landroid/util/ArraySet; Landroid/util/AtomicFile; @@ -31961,6 +32056,7 @@ Landroid/util/FeatureFlagUtils; Landroid/util/FloatProperty; Landroid/util/Half; Landroid/util/IconDrawableFactory; +Landroid/util/IndentingPrintWriter; Landroid/util/IntArray; Landroid/util/IntProperty; Landroid/util/JsonReader$1; @@ -31992,6 +32088,11 @@ Landroid/util/LongSparseLongArray$Parcelling; Landroid/util/LongSparseLongArray; Landroid/util/LruCache; Landroid/util/MalformedJsonException; +Landroid/util/MapCollections$ArrayIterator; +Landroid/util/MapCollections$EntrySet; +Landroid/util/MapCollections$KeySet; +Landroid/util/MapCollections$MapIterator; +Landroid/util/MapCollections$ValuesCollection; Landroid/util/MapCollections; Landroid/util/MathUtils; Landroid/util/MemoryIntArray$1; @@ -32021,6 +32122,7 @@ Landroid/util/Range; Landroid/util/Rational; Landroid/util/RecurrenceRule$1; Landroid/util/RecurrenceRule$NonrecurringIterator; +Landroid/util/RecurrenceRule$RecurringIterator; Landroid/util/RecurrenceRule; Landroid/util/ReflectiveProperty; Landroid/util/RotationUtils; @@ -32038,6 +32140,7 @@ Landroid/util/SparseIntArray; Landroid/util/SparseLongArray; Landroid/util/SparseSetArray; Landroid/util/Spline$LinearSpline; +Landroid/util/Spline$MonotoneCubicSpline; Landroid/util/Spline; Landroid/util/StateSet; Landroid/util/StringBuilderPrinter; @@ -32220,6 +32323,7 @@ Landroid/view/IDisplayChangeWindowController; Landroid/view/IDisplayFoldListener$Stub$Proxy; Landroid/view/IDisplayFoldListener$Stub; Landroid/view/IDisplayFoldListener; +Landroid/view/IDisplayWindowInsetsController$Stub$Proxy; Landroid/view/IDisplayWindowInsetsController$Stub; Landroid/view/IDisplayWindowInsetsController; Landroid/view/IDisplayWindowListener$Stub$Proxy; @@ -32265,6 +32369,7 @@ Landroid/view/ISurfaceControlViewHostParent$Stub; Landroid/view/ISurfaceControlViewHostParent; Landroid/view/ISystemGestureExclusionListener$Stub; Landroid/view/ISystemGestureExclusionListener; +Landroid/view/IWallpaperVisibilityListener$Stub$Proxy; Landroid/view/IWallpaperVisibilityListener$Stub; Landroid/view/IWallpaperVisibilityListener; Landroid/view/IWindow$Stub; @@ -32658,7 +32763,6 @@ Landroid/view/ViewRootImpl$$ExternalSyntheticLambda7; Landroid/view/ViewRootImpl$$ExternalSyntheticLambda8; Landroid/view/ViewRootImpl$$ExternalSyntheticLambda9; Landroid/view/ViewRootImpl$10; -Landroid/view/ViewRootImpl$11$$ExternalSyntheticLambda3; Landroid/view/ViewRootImpl$11; Landroid/view/ViewRootImpl$1; Landroid/view/ViewRootImpl$2; @@ -32704,6 +32808,7 @@ Landroid/view/ViewRootImpl$UnhandledKeyManager; Landroid/view/ViewRootImpl$ViewPostImeInputStage; Landroid/view/ViewRootImpl$ViewPreImeInputStage; Landroid/view/ViewRootImpl$ViewRootHandler; +Landroid/view/ViewRootImpl$W; Landroid/view/ViewRootImpl$WindowInputEventReceiver; Landroid/view/ViewRootImpl-IA; Landroid/view/ViewRootImpl; @@ -32772,6 +32877,7 @@ Landroid/view/WindowManagerGlobal$2; Landroid/view/WindowManagerGlobal$TrustedPresentationListener; Landroid/view/WindowManagerGlobal-IA; Landroid/view/WindowManagerGlobal; +Landroid/view/WindowManagerImpl; Landroid/view/WindowManagerPolicyConstants$PointerEventListener; Landroid/view/WindowManagerPolicyConstants; Landroid/view/WindowMetrics; @@ -32789,6 +32895,7 @@ Landroid/view/accessibility/AccessibilityManager$$ExternalSyntheticLambda0; Landroid/view/accessibility/AccessibilityManager$$ExternalSyntheticLambda1; Landroid/view/accessibility/AccessibilityManager$$ExternalSyntheticLambda3; Landroid/view/accessibility/AccessibilityManager$1$$ExternalSyntheticLambda0; +Landroid/view/accessibility/AccessibilityManager$1; Landroid/view/accessibility/AccessibilityManager$AccessibilityPolicy; Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener; Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener; @@ -32832,6 +32939,7 @@ Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy; Landroid/view/accessibility/IAccessibilityManager$Stub; Landroid/view/accessibility/IAccessibilityManager; +Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy; Landroid/view/accessibility/IAccessibilityManagerClient$Stub; Landroid/view/accessibility/IAccessibilityManagerClient; Landroid/view/accessibility/WeakSparseArray$WeakReferenceWithId; @@ -33013,6 +33121,7 @@ Landroid/view/inputmethod/IInputMethodSessionInvoker$$ExternalSyntheticLambda6; Landroid/view/inputmethod/IInputMethodSessionInvoker$$ExternalSyntheticLambda8; Landroid/view/inputmethod/IInputMethodSessionInvoker; Landroid/view/inputmethod/ImeTracker$1$$ExternalSyntheticLambda0; +Landroid/view/inputmethod/ImeTracker$1; Landroid/view/inputmethod/ImeTracker$Debug$$ExternalSyntheticLambda0; Landroid/view/inputmethod/ImeTracker$Debug$$ExternalSyntheticLambda1; Landroid/view/inputmethod/ImeTracker$Debug$$ExternalSyntheticLambda2; @@ -33559,10 +33668,12 @@ Landroid/widget/RemoteViews$$ExternalSyntheticLambda4; Landroid/widget/RemoteViews$$ExternalSyntheticLambda5; Landroid/widget/RemoteViews$$ExternalSyntheticLambda6; Landroid/widget/RemoteViews$$ExternalSyntheticLambda7; +Landroid/widget/RemoteViews$$ExternalSyntheticLambda8; Landroid/widget/RemoteViews$1; Landroid/widget/RemoteViews$2; Landroid/widget/RemoteViews$Action; Landroid/widget/RemoteViews$ActionException; +Landroid/widget/RemoteViews$ApplicationInfoCache$$ExternalSyntheticLambda0; Landroid/widget/RemoteViews$ApplicationInfoCache; Landroid/widget/RemoteViews$AsyncApplyTask; Landroid/widget/RemoteViews$AttributeReflectionAction; @@ -33783,6 +33894,12 @@ Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda2; Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda30; Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda31; Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda32; +Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda33; +Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda34; +Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda35; +Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda36; +Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda37; +Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda38; Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda3; Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda4; Landroid/window/DesktopModeFlags$$ExternalSyntheticLambda5; @@ -33817,6 +33934,7 @@ Landroid/window/ISurfaceSyncGroup$Stub; Landroid/window/ISurfaceSyncGroup; Landroid/window/ISurfaceSyncGroupCompletedListener$Stub; Landroid/window/ISurfaceSyncGroupCompletedListener; +Landroid/window/ITaskFragmentOrganizer$Stub$Proxy; Landroid/window/ITaskFragmentOrganizer$Stub; Landroid/window/ITaskFragmentOrganizer; Landroid/window/ITaskFragmentOrganizerController$Stub; @@ -33925,6 +34043,7 @@ Landroid/window/WindowContainerTransaction$HierarchyOp; Landroid/window/WindowContainerTransaction; Landroid/window/WindowContext; Landroid/window/WindowContextController; +Landroid/window/WindowContextInfo$1; Landroid/window/WindowContextInfo; Landroid/window/WindowInfosListener$DisplayInfo; Landroid/window/WindowInfosListener; @@ -34155,6 +34274,7 @@ Lcom/android/i18n/util/Log; Lcom/android/icu/charset/CharsetDecoderICU; Lcom/android/icu/charset/CharsetEncoderICU; Lcom/android/icu/charset/CharsetFactory; +Lcom/android/icu/charset/CharsetICU; Lcom/android/icu/charset/NativeConverter; Lcom/android/icu/text/CompatibleDecimalFormatFactory; Lcom/android/icu/text/DateSorterBridge; @@ -34667,6 +34787,7 @@ Lcom/android/internal/appwidget/IAppWidgetHost; Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy; Lcom/android/internal/appwidget/IAppWidgetService$Stub; Lcom/android/internal/appwidget/IAppWidgetService; +Lcom/android/internal/backup/IBackupTransport$Stub$Proxy; Lcom/android/internal/backup/IBackupTransport$Stub; Lcom/android/internal/backup/IBackupTransport; Lcom/android/internal/colorextraction/ColorExtractor$GradientColors; @@ -34797,6 +34918,7 @@ Lcom/android/internal/hidden_from_bootclasspath/android/security/Flags; Lcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlags; Lcom/android/internal/hidden_from_bootclasspath/android/service/notification/FeatureFlagsImpl; Lcom/android/internal/hidden_from_bootclasspath/android/service/notification/Flags; +Lcom/android/internal/hidden_from_bootclasspath/android/view/contentcapture/flags/Flags; Lcom/android/internal/hidden_from_bootclasspath/com/android/libcore/FeatureFlags; Lcom/android/internal/hidden_from_bootclasspath/com/android/libcore/FeatureFlagsImpl; Lcom/android/internal/hidden_from_bootclasspath/com/android/libcore/Flags; @@ -34851,6 +34973,7 @@ Lcom/android/internal/inputmethod/IInputMethodClient; Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy; Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub; Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations; +Lcom/android/internal/inputmethod/IInputMethodSession$Stub$Proxy; Lcom/android/internal/inputmethod/IInputMethodSession$Stub; Lcom/android/internal/inputmethod/IInputMethodSession; Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection$Stub; @@ -34862,6 +34985,7 @@ Lcom/android/internal/inputmethod/ImeTracing; Lcom/android/internal/inputmethod/ImeTracingClientImpl; Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda3; Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl$$ExternalSyntheticLambda4; +Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl; Lcom/android/internal/inputmethod/ImeTracingServerImpl; Lcom/android/internal/inputmethod/InputBindResult$1; Lcom/android/internal/inputmethod/InputBindResult-IA; @@ -34991,6 +35115,7 @@ Lcom/android/internal/os/CachedDeviceState$Readonly; Lcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch; Lcom/android/internal/os/CachedDeviceState; Lcom/android/internal/os/ClassLoaderFactory; +Lcom/android/internal/os/Clock$1; Lcom/android/internal/os/Clock; Lcom/android/internal/os/DebugStore$DebugStoreNative; Lcom/android/internal/os/DebugStore$DebugStoreNativeImpl; @@ -35066,6 +35191,8 @@ Lcom/android/internal/os/ProcessCpuTracker$1; Lcom/android/internal/os/ProcessCpuTracker$FilterStats; Lcom/android/internal/os/ProcessCpuTracker$Stats; Lcom/android/internal/os/ProcessCpuTracker; +Lcom/android/internal/os/ProcfsMemoryUtil$MemorySnapshot; +Lcom/android/internal/os/ProcfsMemoryUtil; Lcom/android/internal/os/RailStats; Lcom/android/internal/os/RoSystemProperties; Lcom/android/internal/os/RpmStats$PowerStateElement; @@ -35328,6 +35455,7 @@ Lcom/android/internal/telephony/CellBroadcastUtils; Lcom/android/internal/telephony/CellNetworkScanResult$1; Lcom/android/internal/telephony/CellNetworkScanResult; Lcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider$1; +Lcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider; Lcom/android/internal/telephony/CellularNetworkService; Lcom/android/internal/telephony/ClientWakelockAccountant; Lcom/android/internal/telephony/ClientWakelockTracker; @@ -35415,6 +35543,7 @@ Lcom/android/internal/telephony/IMms; Lcom/android/internal/telephony/INumberVerificationCallback$Stub$Proxy; Lcom/android/internal/telephony/INumberVerificationCallback$Stub; Lcom/android/internal/telephony/INumberVerificationCallback; +Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy; Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub; Lcom/android/internal/telephony/IOnSubscriptionsChangedListener; Lcom/android/internal/telephony/IOns$Stub$Proxy; @@ -35520,6 +35649,7 @@ Lcom/android/internal/telephony/NetworkFactoryLegacyImpl$1; Lcom/android/internal/telephony/NetworkFactoryLegacyImpl$NetworkRequestInfo; Lcom/android/internal/telephony/NetworkFactoryLegacyImpl; Lcom/android/internal/telephony/NetworkFactoryShim; +Lcom/android/internal/telephony/NetworkRegistrationManager$NetworkRegStateCallback; Lcom/android/internal/telephony/NetworkRegistrationManager$NetworkServiceConnection; Lcom/android/internal/telephony/NetworkRegistrationManager$RegManagerDeathRecipient; Lcom/android/internal/telephony/NetworkRegistrationManager; @@ -35605,6 +35735,7 @@ Lcom/android/internal/telephony/PhoneSubInfoController$$ExternalSyntheticLambda8 Lcom/android/internal/telephony/PhoneSubInfoController$$ExternalSyntheticLambda9; Lcom/android/internal/telephony/PhoneSubInfoController$CallPhoneMethodHelper; Lcom/android/internal/telephony/PhoneSubInfoController$PermissionCheckHelper; +Lcom/android/internal/telephony/PhoneSubInfoController; Lcom/android/internal/telephony/ProxyController$1; Lcom/android/internal/telephony/ProxyController; Lcom/android/internal/telephony/RIL$RadioProxyDeathRecipient; @@ -36177,6 +36308,7 @@ Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$HoldSwapState; Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$MmTelFeatureListener; Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$PhoneStateListener; Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$SharedPreferenceProxy; +Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$VtDataUsageProvider; Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker; Lcom/android/internal/telephony/imsphone/ImsPhoneCommandInterface; Lcom/android/internal/telephony/imsphone/ImsPhoneConnection$$ExternalSyntheticLambda0; @@ -36713,6 +36845,7 @@ Lcom/android/internal/util/ExponentiallyBucketedHistogram; Lcom/android/internal/util/FastMath; Lcom/android/internal/util/FastPrintWriter$DummyWriter; Lcom/android/internal/util/FastPrintWriter-IA; +Lcom/android/internal/util/FastPrintWriter; Lcom/android/internal/util/FastXmlSerializer; Lcom/android/internal/util/FileRotator$FileInfo; Lcom/android/internal/util/FileRotator$Reader; @@ -36733,6 +36866,7 @@ Lcom/android/internal/util/HeavyHitterSketch; Lcom/android/internal/util/HexDump; Lcom/android/internal/util/IState; Lcom/android/internal/util/ImageUtils; +Lcom/android/internal/util/IndentingPrintWriter; Lcom/android/internal/util/IntPair; Lcom/android/internal/util/JournaledFile; Lcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda0; @@ -36804,6 +36938,7 @@ Lcom/android/internal/util/WakeupMessage; Lcom/android/internal/util/XmlPullParserWrapper; Lcom/android/internal/util/XmlSerializerWrapper; Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; +Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer; Lcom/android/internal/util/XmlUtils$ReadMapCallback; Lcom/android/internal/util/XmlUtils$WriteMapCallback; Lcom/android/internal/util/XmlUtils; @@ -36849,6 +36984,7 @@ Lcom/android/internal/util/function/pooled/PooledLambda; Lcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType$ReturnType; Lcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType; Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool; +Lcom/android/internal/util/function/pooled/PooledLambdaImpl; Lcom/android/internal/util/function/pooled/PooledPredicate; Lcom/android/internal/util/function/pooled/PooledRunnable; Lcom/android/internal/util/function/pooled/PooledSupplier$OfDouble; @@ -37014,6 +37150,10 @@ Lcom/android/net/module/util/ProxyUtils; Lcom/android/nfc/x/android/nfc/FeatureFlags; Lcom/android/nfc/x/android/nfc/FeatureFlagsImpl; Lcom/android/nfc/x/android/nfc/Flags; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey; +Lcom/android/org/conscrypt/OpenSSLRSAPublicKey; +Lcom/android/org/conscrypt/OpenSSLX509Certificate; +Lcom/android/org/kxml2/io/KXmlParser; Lcom/android/os/coregraphics/HwuiStatsLog; Lcom/android/phone/ecc/nano/CodedInputByteBufferNano; Lcom/android/phone/ecc/nano/CodedOutputByteBufferNano$OutOfSpaceException; @@ -37592,6 +37732,80 @@ Lgov/nist/javax/sip/stack/TLSMessageProcessor; Lgov/nist/javax/sip/stack/UDPMessageChannel$PingBackTimerTask; Lgov/nist/javax/sip/stack/UDPMessageChannel; Lgov/nist/javax/sip/stack/UDPMessageProcessor; +Ljava/io/ObjectOutputStream$PutFieldImpl; +Ljava/lang/ThreadLocal$SuppliedThreadLocal; +Ljava/nio/ByteBufferAsFloatBuffer; +Ljava/nio/ByteBufferAsIntBuffer; +Ljava/nio/ByteBufferAsLongBuffer; +Ljava/nio/DirectByteBuffer; +Ljava/nio/HeapByteBuffer; +Ljava/security/MessageDigest$Delegate; +Ljava/time/Clock$SystemClock; +Ljava/util/ArrayDeque$DeqIterator; +Ljava/util/ArrayList$Itr; +Ljava/util/Arrays$ArrayItr; +Ljava/util/Arrays$ArrayList; +Ljava/util/Collections$3; +Ljava/util/Collections$EmptyIterator; +Ljava/util/Collections$EmptyList; +Ljava/util/Collections$EmptySet; +Ljava/util/Collections$SingletonMap; +Ljava/util/Collections$UnmodifiableCollection$1; +Ljava/util/Collections$UnmodifiableCollection; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet; +Ljava/util/Collections$UnmodifiableMap; +Ljava/util/Collections$UnmodifiableRandomAccessList; +Ljava/util/Collections$UnmodifiableSet; +Ljava/util/Collections$UnmodifiableSortedSet; +Ljava/util/HashMap$EntryIterator; +Ljava/util/HashMap$EntrySet; +Ljava/util/HashMap$KeyIterator; +Ljava/util/HashMap$KeySet; +Ljava/util/HashMap$Node; +Ljava/util/HashMap$TreeNode; +Ljava/util/HashMap$ValueIterator; +Ljava/util/HashMap$Values; +Ljava/util/ImmutableCollections$List12; +Ljava/util/ImmutableCollections$ListItr; +Ljava/util/ImmutableCollections$ListN; +Ljava/util/ImmutableCollections$MapN; +Ljava/util/ImmutableCollections$Set12; +Ljava/util/ImmutableCollections$SetN; +Ljava/util/LinkedHashMap$Entry; +Ljava/util/LinkedHashMap$LinkedEntryIterator; +Ljava/util/LinkedHashMap$LinkedEntrySet; +Ljava/util/LinkedHashMap$LinkedKeyIterator; +Ljava/util/LinkedHashMap$LinkedKeySet; +Ljava/util/LinkedHashMap$LinkedValueIterator; +Ljava/util/LinkedHashMap$LinkedValues; +Ljava/util/LinkedList$ListItr; +Ljava/util/TreeMap$EntryIterator; +Ljava/util/TreeMap$EntrySet; +Ljava/util/TreeMap$KeyIterator; +Ljava/util/TreeMap$TreeMapEntry; +Ljava/util/concurrent/ConcurrentHashMap$EntryIterator; +Ljava/util/concurrent/ConcurrentHashMap$EntrySetView; +Ljava/util/concurrent/ConcurrentHashMap$MapEntry; +Ljava/util/concurrent/ConcurrentHashMap$ValueIterator; +Ljava/util/concurrent/ConcurrentHashMap$ValuesView; +Ljava/util/concurrent/ConcurrentLinkedQueue$Itr; +Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator; +Ljava/util/concurrent/Executors$AutoShutdownDelegatedExecutorService; +Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock; +Ljava/util/function/DoubleUnaryOperator$$ExternalSyntheticLambda2; +Ljava/util/stream/DistinctOps$1; +Ljava/util/stream/IntPipeline$10; +Ljava/util/stream/IntPipeline$1; +Ljava/util/stream/IntPipeline$4; +Ljava/util/stream/IntPipeline$Head; +Ljava/util/stream/ReferencePipeline$2; +Ljava/util/stream/ReferencePipeline$3; +Ljava/util/stream/ReferencePipeline$4; +Ljava/util/stream/ReferencePipeline$Head; +Ljava/util/stream/SortedOps$OfRef; Ljavax/microedition/khronos/egl/EGL10; Ljavax/microedition/khronos/egl/EGL11; Ljavax/microedition/khronos/egl/EGL; @@ -37706,6 +37920,8 @@ Ljavax/sip/message/Message; Ljavax/sip/message/MessageFactory; Ljavax/sip/message/Request; Ljavax/sip/message/Response; +Llibcore/util/NativeAllocationRegistry$CleanerRunner; +Llibcore/util/ZoneInfo; Lorg/apache/http/conn/ConnectTimeoutException; Lorg/apache/http/conn/scheme/HostNameResolver; Lorg/apache/http/conn/scheme/LayeredSocketFactory; @@ -37721,6 +37937,7 @@ Lorg/apache/http/conn/ssl/X509HostnameVerifier; Lorg/apache/http/params/CoreConnectionPNames; Lorg/apache/http/params/HttpConnectionParams; Lorg/apache/http/params/HttpParams; +Lorg/ccil/cowan/tagsoup/AttributesImpl; Lorg/ccil/cowan/tagsoup/AutoDetector; Lorg/ccil/cowan/tagsoup/CommandLine; Lorg/ccil/cowan/tagsoup/Element; @@ -37742,6 +37959,7 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAX1ParserAdapter$DocHandlerWrapper; Lorg/ccil/cowan/tagsoup/jaxp/SAX1ParserAdapter; Lorg/ccil/cowan/tagsoup/jaxp/SAXFactoryImpl; Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl; +Lsun/nio/ch/FileChannelImpl; [Landroid/accounts/Account; [Landroid/accounts/AuthenticatorDescription; [Landroid/animation/Animator; diff --git a/boot/preloaded-classes b/boot/preloaded-classes index 47abe6b2a8f6..f87828ec8d9a 100644 --- a/boot/preloaded-classes +++ b/boot/preloaded-classes @@ -59,6 +59,7 @@ android.accounts.AccountManager$AmsTask$1 android.accounts.AccountManager$AmsTask$Response android.accounts.AccountManager$AmsTask android.accounts.AccountManager$BaseFutureTask$1 +android.accounts.AccountManager$BaseFutureTask$Response android.accounts.AccountManager$BaseFutureTask android.accounts.AccountManager$Future2Task$1 android.accounts.AccountManager$Future2Task @@ -73,6 +74,7 @@ android.accounts.AuthenticatorDescription$1 android.accounts.AuthenticatorDescription-IA android.accounts.AuthenticatorDescription android.accounts.AuthenticatorException +android.accounts.IAccountAuthenticator$Stub$Proxy android.accounts.IAccountAuthenticator$Stub android.accounts.IAccountAuthenticator android.accounts.IAccountAuthenticatorResponse$Stub$Proxy @@ -81,6 +83,7 @@ android.accounts.IAccountAuthenticatorResponse android.accounts.IAccountManager$Stub$Proxy android.accounts.IAccountManager$Stub android.accounts.IAccountManager +android.accounts.IAccountManagerResponse$Stub$Proxy android.accounts.IAccountManagerResponse$Stub android.accounts.IAccountManagerResponse android.accounts.NetworkErrorException @@ -93,6 +96,8 @@ android.aconfig.nano.Aconfig$flag_values android.aconfig.nano.Aconfig$parsed_flag android.aconfig.nano.Aconfig$parsed_flags android.aconfig.nano.Aconfig$tracepoint +android.adpf.FeatureFlags +android.adpf.FeatureFlagsImpl android.adpf.Flags android.animation.AnimationHandler$$ExternalSyntheticLambda0 android.animation.AnimationHandler$1 @@ -220,6 +225,7 @@ android.app.ActivityManager$$ExternalSyntheticLambda0 android.app.ActivityManager$$ExternalSyntheticLambda1 android.app.ActivityManager$$ExternalSyntheticLambda2 android.app.ActivityManager$1 +android.app.ActivityManager$2 android.app.ActivityManager$3 android.app.ActivityManager$4 android.app.ActivityManager$AppTask @@ -270,11 +276,14 @@ android.app.ActivityThread$2 android.app.ActivityThread$3 android.app.ActivityThread$4 android.app.ActivityThread$5 +android.app.ActivityThread$6 android.app.ActivityThread$ActivityClientRecord$1 android.app.ActivityThread$ActivityClientRecord +android.app.ActivityThread$AndroidOs android.app.ActivityThread$AppBindData android.app.ActivityThread$ApplicationThread$$ExternalSyntheticLambda2 android.app.ActivityThread$ApplicationThread$1 +android.app.ActivityThread$ApplicationThread android.app.ActivityThread$BindServiceData android.app.ActivityThread$ContextCleanupInfo android.app.ActivityThread$CreateBackupAgentData @@ -304,6 +313,7 @@ android.app.ActivityTransitionState$1 android.app.ActivityTransitionState android.app.AlarmManager$AlarmClockInfo$1 android.app.AlarmManager$AlarmClockInfo +android.app.AlarmManager$ListenerWrapper android.app.AlarmManager$OnAlarmListener android.app.AlarmManager android.app.AlertDialog$Builder @@ -324,6 +334,7 @@ android.app.AppOpsManager$$ExternalSyntheticLambda6 android.app.AppOpsManager$$ExternalSyntheticLambda8 android.app.AppOpsManager$1 android.app.AppOpsManager$2 +android.app.AppOpsManager$3 android.app.AppOpsManager$4 android.app.AppOpsManager$AppOpsCollector android.app.AppOpsManager$AttributedHistoricalOps$1 @@ -367,6 +378,7 @@ android.app.AppOpsManager android.app.AppOpsManagerInternal android.app.Application$ActivityLifecycleCallbacks android.app.Application$OnProvideAssistDataListener +android.app.Application android.app.ApplicationErrorReport$1 android.app.ApplicationErrorReport$AnrInfo android.app.ApplicationErrorReport$BatteryInfo @@ -392,6 +404,7 @@ android.app.ApplicationPackageManager$HasSystemFeatureQuery android.app.ApplicationPackageManager$MoveCallbackDelegate android.app.ApplicationPackageManager$ResourceName android.app.ApplicationPackageManager-IA +android.app.ApplicationPackageManager android.app.AsyncNotedAppOp$1 android.app.AsyncNotedAppOp android.app.AutomaticZenRule$1 @@ -420,6 +433,7 @@ android.app.ContentProviderHolder-IA android.app.ContentProviderHolder android.app.ContextImpl$1 android.app.ContextImpl$ApplicationContentResolver +android.app.ContextImpl android.app.DexLoadReporter android.app.Dialog$$ExternalSyntheticLambda0 android.app.Dialog$$ExternalSyntheticLambda1 @@ -505,6 +519,7 @@ android.app.IAppTraceRetriever android.app.IApplicationStartInfoCompleteListener$Stub$Proxy android.app.IApplicationStartInfoCompleteListener$Stub android.app.IApplicationStartInfoCompleteListener +android.app.IApplicationThread$Stub$Proxy android.app.IApplicationThread$Stub android.app.IApplicationThread android.app.IAssistDataReceiver$Stub$Proxy @@ -519,6 +534,7 @@ android.app.IForegroundServiceObserver android.app.IGameManagerService$Stub$Proxy android.app.IGameManagerService$Stub android.app.IGameManagerService +android.app.IInstantAppResolver$Stub$Proxy android.app.IInstantAppResolver$Stub android.app.IInstantAppResolver android.app.IInstrumentationWatcher$Stub$Proxy @@ -547,11 +563,13 @@ android.app.IScreenCaptureObserver android.app.ISearchManager$Stub$Proxy android.app.ISearchManager$Stub android.app.ISearchManager +android.app.IServiceConnection$Stub$Proxy android.app.IServiceConnection$Stub android.app.IServiceConnection android.app.IStopUserCallback$Stub$Proxy android.app.IStopUserCallback$Stub android.app.IStopUserCallback +android.app.ITaskStackListener$Stub$Proxy android.app.ITaskStackListener$Stub android.app.ITaskStackListener android.app.ITransientNotification$Stub$Proxy @@ -571,6 +589,7 @@ android.app.IUiModeManagerCallback android.app.IUidFrozenStateChangedCallback$Stub$Proxy android.app.IUidFrozenStateChangedCallback$Stub android.app.IUidFrozenStateChangedCallback +android.app.IUidObserver$Stub$Proxy android.app.IUidObserver$Stub android.app.IUidObserver android.app.IUnsafeIntentStrictModeCallback$Stub @@ -599,6 +618,7 @@ android.app.Instrumentation android.app.IntentReceiverLeaked android.app.IntentService$ServiceHandler android.app.IntentService +android.app.JobSchedulerImpl android.app.KeyguardManager$1 android.app.KeyguardManager$2 android.app.KeyguardManager$KeyguardDismissCallback @@ -606,9 +626,11 @@ android.app.KeyguardManager android.app.ListActivity android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0 android.app.LoadedApk$ReceiverDispatcher$Args +android.app.LoadedApk$ReceiverDispatcher$InnerReceiver android.app.LoadedApk$ReceiverDispatcher android.app.LoadedApk$ServiceDispatcher$ConnectionInfo android.app.LoadedApk$ServiceDispatcher$DeathMonitor +android.app.LoadedApk$ServiceDispatcher$InnerConnection android.app.LoadedApk$ServiceDispatcher$RunConnection android.app.LoadedApk$ServiceDispatcher android.app.LoadedApk$SplitDependencyLoaderImpl @@ -665,6 +687,7 @@ android.app.NotificationManager$NotificationChannelQuery android.app.NotificationManager$NotificationKey android.app.NotificationManager$Policy$1 android.app.NotificationManager$Policy +android.app.NotificationManager$RateLimiter android.app.NotificationManager android.app.OnActivityPausedListener android.app.PackageInstallObserver$1 @@ -675,6 +698,7 @@ android.app.PendingIntent$$ExternalSyntheticLambda2 android.app.PendingIntent$1 android.app.PendingIntent$CancelListener android.app.PendingIntent$CanceledException +android.app.PendingIntent$FinishedDispatcher android.app.PendingIntent$OnFinished android.app.PendingIntent$OnMarshaledListener android.app.PendingIntent @@ -760,6 +784,7 @@ android.app.SharedPreferencesImpl$EditorImpl android.app.SharedPreferencesImpl$MemoryCommitResult android.app.SharedPreferencesImpl$SharedPreferencesThreadFactory android.app.SharedPreferencesImpl-IA +android.app.SharedPreferencesImpl android.app.StackTrace android.app.StatusBarManager android.app.SyncNotedAppOp$1 @@ -1161,6 +1186,7 @@ android.app.job.JobSchedulerFrameworkInitializer android.app.job.JobService$1 android.app.job.JobService android.app.job.JobServiceEngine$JobHandler +android.app.job.JobServiceEngine$JobInterface android.app.job.JobServiceEngine android.app.job.JobWorkItem$1 android.app.job.JobWorkItem @@ -1241,7 +1267,10 @@ android.app.servertransaction.TopResumedActivityChangeItem-IA android.app.servertransaction.TopResumedActivityChangeItem android.app.servertransaction.TransactionExecutor android.app.servertransaction.TransactionExecutorHelper +android.app.servertransaction.WindowStateInsetsControlChangeItem$1 +android.app.servertransaction.WindowStateInsetsControlChangeItem android.app.servertransaction.WindowStateTransactionItem$TransactionListener +android.app.servertransaction.WindowStateTransactionItem android.app.slice.ISliceManager$Stub$Proxy android.app.slice.ISliceManager$Stub android.app.slice.ISliceManager @@ -1463,6 +1492,7 @@ android.content.ComponentName$1 android.content.ComponentName$WithComponentName android.content.ComponentName android.content.ContentCaptureOptions$1 +android.content.ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda0 android.content.ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda1 android.content.ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda2 android.content.ContentCaptureOptions$ContentProtectionOptions @@ -1484,10 +1514,12 @@ android.content.ContentProviderOperation$BackReference android.content.ContentProviderOperation$Builder android.content.ContentProviderOperation-IA android.content.ContentProviderOperation +android.content.ContentProviderProxy android.content.ContentProviderResult$1 android.content.ContentProviderResult android.content.ContentResolver$1 android.content.ContentResolver$2 +android.content.ContentResolver$CursorWrapperInner android.content.ContentResolver$OpenResourceIdResult android.content.ContentResolver$ParcelFileDescriptorInner android.content.ContentResolver$ResultListener @@ -1518,6 +1550,7 @@ android.content.IContentProvider android.content.IContentService$Stub$Proxy android.content.IContentService$Stub android.content.IContentService +android.content.IIntentReceiver$Stub$Proxy android.content.IIntentReceiver$Stub android.content.IIntentReceiver android.content.IIntentSender$Stub$Proxy @@ -1691,6 +1724,7 @@ android.content.pm.IDexModuleRegisterCallback android.content.pm.ILauncherApps$Stub$Proxy android.content.pm.ILauncherApps$Stub android.content.pm.ILauncherApps +android.content.pm.IOnAppsChangedListener$Stub$Proxy android.content.pm.IOnAppsChangedListener$Stub android.content.pm.IOnAppsChangedListener android.content.pm.IOnChecksumsReadyListener$Stub$Proxy @@ -2036,6 +2070,7 @@ android.content.res.StringBlock android.content.res.ThemedResourceCache android.content.res.TypedArray android.content.res.Validator +android.content.res.XmlBlock$Parser android.content.res.XmlBlock android.content.res.XmlResourceParser android.content.res.loader.AssetsProvider @@ -2069,6 +2104,7 @@ android.database.CharArrayBuffer android.database.ContentObservable android.database.ContentObserver$$ExternalSyntheticLambda0 android.database.ContentObserver$$ExternalSyntheticLambda1 +android.database.ContentObserver$Transport android.database.ContentObserver android.database.CrossProcessCursor android.database.CrossProcessCursorWrapper @@ -2087,6 +2123,7 @@ android.database.DatabaseUtils$InsertHelper android.database.DatabaseUtils android.database.DefaultDatabaseErrorHandler android.database.IBulkCursor +android.database.IContentObserver$Stub$Proxy android.database.IContentObserver$Stub android.database.IContentObserver android.database.MatrixCursor$RowBuilder @@ -2123,6 +2160,7 @@ android.database.sqlite.SQLiteConnectionPool$IdleConnectionHandler android.database.sqlite.SQLiteConnectionPool-IA android.database.sqlite.SQLiteConnectionPool android.database.sqlite.SQLiteConstraintException +android.database.sqlite.SQLiteCursor android.database.sqlite.SQLiteCursorDriver android.database.sqlite.SQLiteCustomFunction android.database.sqlite.SQLiteDatabase$$ExternalSyntheticLambda0 @@ -2149,6 +2187,7 @@ android.database.sqlite.SQLiteException android.database.sqlite.SQLiteFullException android.database.sqlite.SQLiteGlobal android.database.sqlite.SQLiteMisuseException +android.database.sqlite.SQLiteOpenHelper$$ExternalSyntheticLambda0 android.database.sqlite.SQLiteOpenHelper android.database.sqlite.SQLiteOutOfMemoryException android.database.sqlite.SQLiteProgram @@ -2221,12 +2260,16 @@ android.graphics.ColorSpace$Connector android.graphics.ColorSpace$Lab android.graphics.ColorSpace$Model android.graphics.ColorSpace$Named +android.graphics.ColorSpace$OkLab android.graphics.ColorSpace$RenderIntent android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda0 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda1 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda2 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda3 +android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda4 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda5 +android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda6 +android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda9 android.graphics.ColorSpace$Rgb$Native android.graphics.ColorSpace$Rgb$NoImagePreloadHolder android.graphics.ColorSpace$Rgb$TransferParameters @@ -2532,6 +2575,7 @@ android.graphics.fonts.Font$NoImagePreloadHolder android.graphics.fonts.Font android.graphics.fonts.FontCustomizationParser$Result android.graphics.fonts.FontCustomizationParser +android.graphics.fonts.FontFamily$Builder$NoImagePreloadHolder android.graphics.fonts.FontFamily$Builder android.graphics.fonts.FontFamily android.graphics.fonts.FontFileUtil @@ -2622,6 +2666,7 @@ android.hardware.SystemSensorManager$BaseEventQueue android.hardware.SystemSensorManager$InjectEventQueue android.hardware.SystemSensorManager$SensorEventQueue android.hardware.SystemSensorManager$TriggerEventQueue +android.hardware.SystemSensorManager android.hardware.TriggerEvent android.hardware.TriggerEventListener android.hardware.biometrics.BiometricAuthenticator$AuthenticationCallback @@ -2906,6 +2951,7 @@ android.hardware.display.DisplayManager android.hardware.display.DisplayManagerGlobal$1 android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate$$ExternalSyntheticLambda0 android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate +android.hardware.display.DisplayManagerGlobal$DisplayManagerCallback android.hardware.display.DisplayManagerGlobal android.hardware.display.DisplayManagerInternal$DisplayPowerCallbacks android.hardware.display.DisplayManagerInternal$DisplayPowerRequest @@ -2922,6 +2968,7 @@ android.hardware.display.IColorDisplayManager android.hardware.display.IDisplayManager$Stub$Proxy android.hardware.display.IDisplayManager$Stub android.hardware.display.IDisplayManager +android.hardware.display.IDisplayManagerCallback$Stub$Proxy android.hardware.display.IDisplayManagerCallback$Stub android.hardware.display.IDisplayManagerCallback android.hardware.display.IVirtualDisplayCallback$Stub$Proxy @@ -2996,6 +3043,7 @@ android.hardware.hdmi.HdmiRecordSources$OwnSource android.hardware.hdmi.HdmiRecordSources$RecordSource android.hardware.input.HostUsiVersion$1 android.hardware.input.HostUsiVersion +android.hardware.input.IInputDevicesChangedListener$Stub$Proxy android.hardware.input.IInputDevicesChangedListener$Stub android.hardware.input.IInputDevicesChangedListener android.hardware.input.IInputManager$Stub$Proxy @@ -3011,6 +3059,7 @@ android.hardware.input.InputDeviceIdentifier android.hardware.input.InputManager$InputDeviceListener android.hardware.input.InputManager android.hardware.input.InputManagerGlobal$InputDeviceListenerDelegate +android.hardware.input.InputManagerGlobal$InputDevicesChangedListener android.hardware.input.InputManagerGlobal$OnTabletModeChangedListenerDelegate android.hardware.input.InputManagerGlobal-IA android.hardware.input.InputManagerGlobal @@ -4604,6 +4653,7 @@ android.icu.text.ReplaceableContextIterator android.icu.text.ReplaceableString android.icu.text.RuleBasedBreakIterator$BreakCache android.icu.text.RuleBasedBreakIterator$DictionaryCache +android.icu.text.RuleBasedBreakIterator android.icu.text.RuleBasedCollator$CollationBuffer android.icu.text.RuleBasedCollator$CollationKeyByteSink android.icu.text.RuleBasedCollator$FCDUTF16NFDIterator @@ -4951,8 +5001,13 @@ android.inputmethodservice.SoftInputWindow android.internal.aconfig.storage.AconfigStorageException android.internal.aconfig.storage.ByteBufferReader android.internal.aconfig.storage.FileType +android.internal.aconfig.storage.FlagTable$Header +android.internal.aconfig.storage.FlagTable +android.internal.aconfig.storage.FlagValueList$Header +android.internal.aconfig.storage.FlagValueList android.internal.aconfig.storage.PackageTable$Header android.internal.aconfig.storage.PackageTable +android.internal.aconfig.storage.TableUtils$StorageFilesBundle android.internal.framework.protobuf.nano.InvalidProtocolBufferNanoException android.internal.framework.protobuf.nano.MessageNano android.internal.hidl.base.V1_0.DebugInfo @@ -4979,6 +5034,7 @@ android.internal.telephony.sysprop.TelephonyProperties$$ExternalSyntheticLambda7 android.internal.telephony.sysprop.TelephonyProperties$$ExternalSyntheticLambda8 android.internal.telephony.sysprop.TelephonyProperties$$ExternalSyntheticLambda9 android.internal.telephony.sysprop.TelephonyProperties +android.location.CountryDetector android.location.Geofence$1 android.location.Geofence android.location.IFusedGeofenceHardware$Stub$Proxy @@ -4987,11 +5043,14 @@ android.location.IFusedGeofenceHardware android.location.IGpsGeofenceHardware$Stub$Proxy android.location.IGpsGeofenceHardware$Stub android.location.IGpsGeofenceHardware +android.location.ILocationManager$Stub +android.location.ILocationManager android.location.Location$$ExternalSyntheticLambda0 android.location.Location$1 android.location.Location$BearingDistanceCache android.location.Location-IA android.location.Location +android.location.LocationManager android.location.LocationTime$1 android.location.LocationTime android.location.flags.FeatureFlags @@ -5023,6 +5082,7 @@ android.media.AudioGain android.media.AudioGainConfig android.media.AudioHandle android.media.AudioManager$1 +android.media.AudioManager$2 android.media.AudioManager$3 android.media.AudioManager$4 android.media.AudioManager$AudioPlaybackCallback @@ -5156,6 +5216,7 @@ android.media.IMediaRouter2$Stub android.media.IMediaRouter2 android.media.IMediaRouter2Manager$Stub android.media.IMediaRouter2Manager +android.media.IMediaRouterClient$Stub$Proxy android.media.IMediaRouterClient$Stub android.media.IMediaRouterClient android.media.IMediaRouterService$Stub$Proxy @@ -5318,6 +5379,7 @@ android.media.MediaRouter$Static$1 android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda0 android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda1 android.media.MediaRouter$Static$Client$1 +android.media.MediaRouter$Static$Client android.media.MediaRouter$Static android.media.MediaRouter$UserRouteInfo$SessionVolumeProvider android.media.MediaRouter$UserRouteInfo @@ -5526,6 +5588,7 @@ android.media.projection.MediaProjectionManager android.media.quality.MediaQualityManager android.media.quality.PictureProfileHandle$1 android.media.quality.PictureProfileHandle +android.media.session.IActiveSessionsListener$Stub$Proxy android.media.session.IActiveSessionsListener$Stub android.media.session.IActiveSessionsListener android.media.session.IOnMediaKeyEventDispatchedListener$Stub$Proxy @@ -5552,6 +5615,7 @@ android.media.session.ISessionCallback android.media.session.ISessionController$Stub$Proxy android.media.session.ISessionController$Stub android.media.session.ISessionController +android.media.session.ISessionControllerCallback$Stub$Proxy android.media.session.ISessionControllerCallback$Stub android.media.session.ISessionControllerCallback android.media.session.ISessionManager$Stub$Proxy @@ -5588,6 +5652,7 @@ android.media.session.MediaSessionManager$RemoteSessionCallbackStub android.media.session.MediaSessionManager$RemoteUserInfo android.media.session.MediaSessionManager$Session2TokensChangedWrapper android.media.session.MediaSessionManager$SessionsChangedWrapper$1$$ExternalSyntheticLambda0 +android.media.session.MediaSessionManager$SessionsChangedWrapper$1 android.media.session.MediaSessionManager$SessionsChangedWrapper android.media.session.MediaSessionManager-IA android.media.session.MediaSessionManager @@ -5679,6 +5744,8 @@ android.net.LocalServerSocket android.net.LocalSocket android.net.LocalSocketAddress$Namespace android.net.LocalSocketAddress +android.net.LocalSocketImpl$SocketInputStream +android.net.LocalSocketImpl$SocketOutputStream android.net.LocalSocketImpl android.net.MatchAllNetworkSpecifier$1 android.net.MatchAllNetworkSpecifier @@ -5727,11 +5794,15 @@ android.net.Uri$1 android.net.Uri$AbstractHierarchicalUri android.net.Uri$AbstractPart android.net.Uri$Builder +android.net.Uri$HierarchicalUri android.net.Uri$NotCachedHolder +android.net.Uri$OpaqueUri android.net.Uri$Part$EmptyPart android.net.Uri$Part android.net.Uri$PathPart +android.net.Uri$PathSegments android.net.Uri$PathSegmentsBuilder +android.net.Uri$StringUri android.net.Uri-IA android.net.Uri android.net.UriCodec @@ -5981,7 +6052,6 @@ android.nfc.NfcOemExtension$$ExternalSyntheticLambda8 android.nfc.NfcOemExtension$$ExternalSyntheticLambda9 android.nfc.NfcOemExtension$Callback android.nfc.NfcOemExtension$NfcOemExtensionCallback -android.nfc.NfcOemExtension-IA android.nfc.NfcOemExtension android.nfc.NfcRoutingTableEntry android.nfc.NfcServiceManager$ServiceRegisterer @@ -6134,6 +6204,7 @@ android.os.Binder android.os.BinderProxy$BinderProxyMapSizeException android.os.BinderProxy$NoImagePreloadHolder android.os.BinderProxy$ProxyMap +android.os.BinderProxy android.os.BluetoothServiceManager$ServiceRegisterer android.os.BluetoothServiceManager android.os.BugreportManager @@ -6208,6 +6279,7 @@ android.os.Handler$Callback android.os.Handler$MessengerImpl android.os.Handler-IA android.os.Handler +android.os.HandlerExecutor android.os.HandlerThread android.os.HardwarePropertiesManager android.os.HidlMemory @@ -6292,6 +6364,7 @@ android.os.IRecoverySystem android.os.IRecoverySystemProgressListener$Stub$Proxy android.os.IRecoverySystemProgressListener$Stub android.os.IRecoverySystemProgressListener +android.os.IRemoteCallback$Stub$Proxy android.os.IRemoteCallback$Stub android.os.IRemoteCallback android.os.ISchedulingPolicyService$Stub @@ -6365,6 +6438,7 @@ android.os.IpcDataCache android.os.LimitExceededException android.os.LocaleList$1 android.os.LocaleList +android.os.Looper$NoImagePreloadHolder android.os.Looper$Observer android.os.Looper android.os.MemoryFile @@ -6403,7 +6477,7 @@ android.os.OutcomeReceiver android.os.PackageTagsList$1 android.os.PackageTagsList android.os.Parcel$1 -android.os.Parcel$ClassLoaderProvider +android.os.Parcel$2 android.os.Parcel$LazyValue android.os.Parcel$ReadWriteHelper android.os.Parcel$SquashReadHelper @@ -6412,6 +6486,7 @@ android.os.ParcelDuration$1 android.os.ParcelDuration android.os.ParcelFileDescriptor$1 android.os.ParcelFileDescriptor$2 +android.os.ParcelFileDescriptor$AutoCloseInputStream android.os.ParcelFileDescriptor$AutoCloseOutputStream android.os.ParcelFileDescriptor$OnCloseListener android.os.ParcelFileDescriptor$Status @@ -6531,12 +6606,14 @@ android.os.StrictMode$1 android.os.StrictMode$2 android.os.StrictMode$3 android.os.StrictMode$4 +android.os.StrictMode$5 android.os.StrictMode$6 android.os.StrictMode$7 android.os.StrictMode$8 android.os.StrictMode$9 android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda0 android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda1 +android.os.StrictMode$AndroidBlockGuardPolicy android.os.StrictMode$AndroidCloseGuardReporter android.os.StrictMode$InstanceTracker android.os.StrictMode$OnThreadViolationListener @@ -7009,6 +7086,7 @@ android.security.KeyStoreSecurityLevel$$ExternalSyntheticLambda1 android.security.KeyStoreSecurityLevel android.security.NetworkSecurityPolicy android.security.Scrypt +android.security.advancedprotection.AdvancedProtectionManager android.security.attestationverification.AttestationVerificationManager android.security.authenticationpolicy.AuthenticationPolicyManager android.security.intrusiondetection.IntrusionDetectionManager @@ -7312,6 +7390,7 @@ android.service.notification.Adjustment android.service.notification.Condition$1 android.service.notification.Condition android.service.notification.ConditionProviderService$H +android.service.notification.ConditionProviderService$Provider android.service.notification.ConditionProviderService-IA android.service.notification.ConditionProviderService android.service.notification.IConditionProvider$Stub @@ -7327,6 +7406,7 @@ android.service.notification.NotificationAssistantService android.service.notification.NotificationListenerFilter$1 android.service.notification.NotificationListenerFilter android.service.notification.NotificationListenerService$MyHandler +android.service.notification.NotificationListenerService$NotificationListenerWrapper android.service.notification.NotificationListenerService$Ranking android.service.notification.NotificationListenerService$RankingMap$1 android.service.notification.NotificationListenerService$RankingMap @@ -7341,6 +7421,7 @@ android.service.notification.RateEstimator android.service.notification.ScheduleCalendar android.service.notification.SnoozeCriterion$1 android.service.notification.SnoozeCriterion +android.service.notification.StatusBarNotification$$ExternalSyntheticLambda0 android.service.notification.StatusBarNotification$1 android.service.notification.StatusBarNotification android.service.notification.ZenDeviceEffects$1 @@ -7382,6 +7463,7 @@ android.service.quicksettings.TileService android.service.storage.IExternalStorageService$Stub$Proxy android.service.storage.IExternalStorageService$Stub android.service.storage.IExternalStorageService +android.service.textclassifier.ITextClassifierCallback$Stub$Proxy android.service.textclassifier.ITextClassifierCallback$Stub android.service.textclassifier.ITextClassifierCallback android.service.textclassifier.ITextClassifierService$Stub$Proxy @@ -7516,6 +7598,7 @@ android.system.keystore2.KeyParameters$1 android.system.keystore2.KeyParameters android.system.keystore2.OperationChallenge$1 android.system.keystore2.OperationChallenge +android.system.suspend.internal.ISuspendControlServiceInternal$Stub$Proxy android.system.suspend.internal.ISuspendControlServiceInternal$Stub android.system.suspend.internal.ISuspendControlServiceInternal android.system.suspend.internal.WakeLockInfo$1 @@ -7658,6 +7741,7 @@ android.telephony.CellIdentityCdma android.telephony.CellIdentityGsm$1 android.telephony.CellIdentityGsm android.telephony.CellIdentityLte$1 +android.telephony.CellIdentityLte android.telephony.CellIdentityNr$1 android.telephony.CellIdentityNr android.telephony.CellIdentityTdscdma$1 @@ -7685,6 +7769,7 @@ android.telephony.CellSignalStrengthCdma-IA android.telephony.CellSignalStrengthCdma android.telephony.CellSignalStrengthGsm$1 android.telephony.CellSignalStrengthGsm-IA +android.telephony.CellSignalStrengthGsm android.telephony.CellSignalStrengthLte$1 android.telephony.CellSignalStrengthLte-IA android.telephony.CellSignalStrengthLte @@ -7696,6 +7781,7 @@ android.telephony.CellSignalStrengthTdscdma-IA android.telephony.CellSignalStrengthTdscdma android.telephony.CellSignalStrengthWcdma$1 android.telephony.CellSignalStrengthWcdma-IA +android.telephony.CellSignalStrengthWcdma android.telephony.CellularIdentifierDisclosure android.telephony.ClientRequestStats$1 android.telephony.ClientRequestStats @@ -7800,6 +7886,7 @@ android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticL android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda62 android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda6 android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda9 +android.telephony.PhoneStateListener$IPhoneStateListenerStub android.telephony.PhoneStateListener android.telephony.PhysicalChannelConfig$1 android.telephony.PhysicalChannelConfig$Builder @@ -7906,6 +7993,7 @@ android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLa android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda52 android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda63 android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda65 +android.telephony.TelephonyCallback$IPhoneStateListenerStub android.telephony.TelephonyCallback$ImsCallDisconnectCauseListener android.telephony.TelephonyCallback$LinkCapacityEstimateChangedListener android.telephony.TelephonyCallback$MediaQualityStatusChangedListener @@ -7967,7 +8055,9 @@ android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda0 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda1 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda2 android.telephony.TelephonyRegistryManager$1$$ExternalSyntheticLambda0 +android.telephony.TelephonyRegistryManager$1 android.telephony.TelephonyRegistryManager$2 +android.telephony.TelephonyRegistryManager$3 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2 @@ -8347,6 +8437,7 @@ android.text.SpanSet android.text.SpanWatcher android.text.Spannable$Factory android.text.Spannable +android.text.SpannableString android.text.SpannableStringBuilder android.text.SpannableStringInternal android.text.Spanned @@ -8508,9 +8599,11 @@ android.timezone.TimeZoneFinder android.tracing.FeatureFlags android.tracing.FeatureFlagsImpl android.tracing.Flags +android.tracing.inputmethod.InputMethodDataSource android.tracing.perfetto.CreateIncrementalStateArgs android.tracing.perfetto.CreateTlsStateArgs android.tracing.perfetto.DataSource +android.tracing.perfetto.DataSourceInstance android.tracing.perfetto.DataSourceParams$Builder android.tracing.perfetto.DataSourceParams android.tracing.perfetto.FlushCallbackArguments @@ -8595,6 +8688,7 @@ android.updatabledriver.UpdatableDriverProto$DenylistsOrBuilder android.util.AndroidException android.util.AndroidRuntimeException android.util.ArrayMap$1 +android.util.ArrayMap android.util.ArraySet$1 android.util.ArraySet android.util.AtomicFile @@ -8632,6 +8726,7 @@ android.util.FeatureFlagUtils android.util.FloatProperty android.util.Half android.util.IconDrawableFactory +android.util.IndentingPrintWriter android.util.IntArray android.util.IntProperty android.util.JsonReader$1 @@ -8663,6 +8758,11 @@ android.util.LongSparseLongArray$Parcelling android.util.LongSparseLongArray android.util.LruCache android.util.MalformedJsonException +android.util.MapCollections$ArrayIterator +android.util.MapCollections$EntrySet +android.util.MapCollections$KeySet +android.util.MapCollections$MapIterator +android.util.MapCollections$ValuesCollection android.util.MapCollections android.util.MathUtils android.util.MemoryIntArray$1 @@ -8692,6 +8792,7 @@ android.util.Range android.util.Rational android.util.RecurrenceRule$1 android.util.RecurrenceRule$NonrecurringIterator +android.util.RecurrenceRule$RecurringIterator android.util.RecurrenceRule android.util.ReflectiveProperty android.util.RotationUtils @@ -8709,6 +8810,7 @@ android.util.SparseIntArray android.util.SparseLongArray android.util.SparseSetArray android.util.Spline$LinearSpline +android.util.Spline$MonotoneCubicSpline android.util.Spline android.util.StateSet android.util.StringBuilderPrinter @@ -8890,8 +8992,10 @@ android.view.IDisplayChangeWindowController android.view.IDisplayFoldListener$Stub$Proxy android.view.IDisplayFoldListener$Stub android.view.IDisplayFoldListener +android.view.IDisplayWindowInsetsController$Stub$Proxy android.view.IDisplayWindowInsetsController$Stub android.view.IDisplayWindowInsetsController +android.view.IDisplayWindowListener$Stub$Proxy android.view.IDisplayWindowListener$Stub android.view.IDisplayWindowListener android.view.IDockedStackListener$Stub$Proxy @@ -8934,6 +9038,7 @@ android.view.ISurfaceControlViewHostParent$Stub android.view.ISurfaceControlViewHostParent android.view.ISystemGestureExclusionListener$Stub android.view.ISystemGestureExclusionListener +android.view.IWallpaperVisibilityListener$Stub$Proxy android.view.IWallpaperVisibilityListener$Stub android.view.IWallpaperVisibilityListener android.view.IWindow$Stub @@ -9132,7 +9237,9 @@ android.view.SurfaceControl$RefreshRateRange$1 android.view.SurfaceControl$RefreshRateRange android.view.SurfaceControl$RefreshRateRanges android.view.SurfaceControl$StaticDisplayInfo +android.view.SurfaceControl$Transaction$$ExternalSyntheticLambda0 android.view.SurfaceControl$Transaction$$ExternalSyntheticLambda1 +android.view.SurfaceControl$Transaction$$ExternalSyntheticLambda3 android.view.SurfaceControl$Transaction$1 android.view.SurfaceControl$Transaction$2 android.view.SurfaceControl$Transaction @@ -9250,6 +9357,7 @@ android.view.View$PerformClick android.view.View$ScrollabilityCache android.view.View$SendAccessibilityEventThrottle android.view.View$SendViewScrolledAccessibilityEvent +android.view.View$SensitiveAutofillHintsHelper android.view.View$TintInfo android.view.View$TooltipInfo android.view.View$TransformationInfo @@ -9314,6 +9422,7 @@ android.view.ViewRootImpl$$ExternalSyntheticLambda1 android.view.ViewRootImpl$$ExternalSyntheticLambda20 android.view.ViewRootImpl$$ExternalSyntheticLambda21 android.view.ViewRootImpl$$ExternalSyntheticLambda22 +android.view.ViewRootImpl$$ExternalSyntheticLambda23 android.view.ViewRootImpl$$ExternalSyntheticLambda2 android.view.ViewRootImpl$$ExternalSyntheticLambda3 android.view.ViewRootImpl$$ExternalSyntheticLambda4 @@ -9368,6 +9477,7 @@ android.view.ViewRootImpl$UnhandledKeyManager android.view.ViewRootImpl$ViewPostImeInputStage android.view.ViewRootImpl$ViewPreImeInputStage android.view.ViewRootImpl$ViewRootHandler +android.view.ViewRootImpl$W android.view.ViewRootImpl$WindowInputEventReceiver android.view.ViewRootImpl-IA android.view.ViewRootImpl @@ -9436,6 +9546,7 @@ android.view.WindowManagerGlobal$2 android.view.WindowManagerGlobal$TrustedPresentationListener android.view.WindowManagerGlobal-IA android.view.WindowManagerGlobal +android.view.WindowManagerImpl android.view.WindowManagerPolicyConstants$PointerEventListener android.view.WindowManagerPolicyConstants android.view.WindowMetrics @@ -9453,6 +9564,7 @@ android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda0 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda1 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda3 android.view.accessibility.AccessibilityManager$1$$ExternalSyntheticLambda0 +android.view.accessibility.AccessibilityManager$1 android.view.accessibility.AccessibilityManager$AccessibilityPolicy android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener @@ -9496,6 +9608,7 @@ android.view.accessibility.IAccessibilityInteractionConnectionCallback android.view.accessibility.IAccessibilityManager$Stub$Proxy android.view.accessibility.IAccessibilityManager$Stub android.view.accessibility.IAccessibilityManager +android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy android.view.accessibility.IAccessibilityManagerClient$Stub android.view.accessibility.IAccessibilityManagerClient android.view.accessibility.WeakSparseArray$WeakReferenceWithId @@ -9677,6 +9790,7 @@ android.view.inputmethod.IInputMethodSessionInvoker$$ExternalSyntheticLambda6 android.view.inputmethod.IInputMethodSessionInvoker$$ExternalSyntheticLambda8 android.view.inputmethod.IInputMethodSessionInvoker android.view.inputmethod.ImeTracker$1$$ExternalSyntheticLambda0 +android.view.inputmethod.ImeTracker$1 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda0 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda1 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda2 @@ -10226,6 +10340,7 @@ android.widget.RemoteViews$1 android.widget.RemoteViews$2 android.widget.RemoteViews$Action android.widget.RemoteViews$ActionException +android.widget.RemoteViews$ApplicationInfoCache$$ExternalSyntheticLambda0 android.widget.RemoteViews$ApplicationInfoCache android.widget.RemoteViews$AsyncApplyTask android.widget.RemoteViews$AttributeReflectionAction @@ -10413,6 +10528,7 @@ android.window.BackProgressAnimator$$ExternalSyntheticLambda1 android.window.BackProgressAnimator$1 android.window.BackProgressAnimator$ProgressCallback android.window.BackProgressAnimator +android.window.BackTouchTracker$TouchTrackerState android.window.BackTouchTracker android.window.ClientWindowFrames$1 android.window.ClientWindowFrames-IA @@ -10479,6 +10595,7 @@ android.window.ISurfaceSyncGroup$Stub android.window.ISurfaceSyncGroup android.window.ISurfaceSyncGroupCompletedListener$Stub android.window.ISurfaceSyncGroupCompletedListener +android.window.ITaskFragmentOrganizer$Stub$Proxy android.window.ITaskFragmentOrganizer$Stub android.window.ITaskFragmentOrganizer android.window.ITaskFragmentOrganizerController$Stub @@ -10816,6 +10933,7 @@ com.android.i18n.util.Log com.android.icu.charset.CharsetDecoderICU com.android.icu.charset.CharsetEncoderICU com.android.icu.charset.CharsetFactory +com.android.icu.charset.CharsetICU com.android.icu.charset.NativeConverter com.android.icu.text.CompatibleDecimalFormatFactory com.android.icu.text.DateSorterBridge @@ -11241,6 +11359,7 @@ com.android.internal.app.AlertController$ButtonHandler com.android.internal.app.AlertController$RecycleListView com.android.internal.app.AlertController com.android.internal.app.AssistUtils +com.android.internal.app.IAppOpsActiveCallback$Stub$Proxy com.android.internal.app.IAppOpsActiveCallback$Stub com.android.internal.app.IAppOpsActiveCallback com.android.internal.app.IAppOpsAsyncNotedCallback$Stub @@ -11327,6 +11446,7 @@ com.android.internal.appwidget.IAppWidgetHost com.android.internal.appwidget.IAppWidgetService$Stub$Proxy com.android.internal.appwidget.IAppWidgetService$Stub com.android.internal.appwidget.IAppWidgetService +com.android.internal.backup.IBackupTransport$Stub$Proxy com.android.internal.backup.IBackupTransport$Stub com.android.internal.backup.IBackupTransport com.android.internal.colorextraction.ColorExtractor$GradientColors @@ -11511,6 +11631,7 @@ com.android.internal.inputmethod.IInputMethodClient com.android.internal.inputmethod.IInputMethodPrivilegedOperations$Stub$Proxy com.android.internal.inputmethod.IInputMethodPrivilegedOperations$Stub com.android.internal.inputmethod.IInputMethodPrivilegedOperations +com.android.internal.inputmethod.IInputMethodSession$Stub$Proxy com.android.internal.inputmethod.IInputMethodSession$Stub com.android.internal.inputmethod.IInputMethodSession com.android.internal.inputmethod.IRemoteAccessibilityInputConnection$Stub @@ -11520,6 +11641,9 @@ com.android.internal.inputmethod.IRemoteInputConnection$Stub com.android.internal.inputmethod.IRemoteInputConnection com.android.internal.inputmethod.ImeTracing com.android.internal.inputmethod.ImeTracingClientImpl +com.android.internal.inputmethod.ImeTracingPerfettoImpl$$ExternalSyntheticLambda3 +com.android.internal.inputmethod.ImeTracingPerfettoImpl$$ExternalSyntheticLambda4 +com.android.internal.inputmethod.ImeTracingPerfettoImpl com.android.internal.inputmethod.ImeTracingServerImpl com.android.internal.inputmethod.InputBindResult$1 com.android.internal.inputmethod.InputBindResult-IA @@ -11647,6 +11771,7 @@ com.android.internal.os.CachedDeviceState$Readonly com.android.internal.os.CachedDeviceState$TimeInStateStopwatch com.android.internal.os.CachedDeviceState com.android.internal.os.ClassLoaderFactory +com.android.internal.os.Clock$1 com.android.internal.os.Clock com.android.internal.os.DebugStore$DebugStoreNative com.android.internal.os.DebugStore$DebugStoreNativeImpl @@ -11722,6 +11847,8 @@ com.android.internal.os.ProcessCpuTracker$1 com.android.internal.os.ProcessCpuTracker$FilterStats com.android.internal.os.ProcessCpuTracker$Stats com.android.internal.os.ProcessCpuTracker +com.android.internal.os.ProcfsMemoryUtil$MemorySnapshot +com.android.internal.os.ProcfsMemoryUtil com.android.internal.os.RailStats com.android.internal.os.RoSystemProperties com.android.internal.os.RpmStats$PowerStateElement @@ -11834,8 +11961,14 @@ com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda6 com.android.internal.protolog.PerfettoProtoLogImpl com.android.internal.protolog.ProtoLog com.android.internal.protolog.ProtoLogCacheUpdater +com.android.internal.protolog.ProtoLogDataSource$$ExternalSyntheticLambda0 +com.android.internal.protolog.ProtoLogDataSource$$ExternalSyntheticLambda1 +com.android.internal.protolog.ProtoLogDataSource$$ExternalSyntheticLambda2 +com.android.internal.protolog.ProtoLogDataSource$GroupConfig com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStartCallback com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStopCallback +com.android.internal.protolog.ProtoLogDataSource$Instance +com.android.internal.protolog.ProtoLogDataSource$ProtoLogConfig com.android.internal.protolog.ProtoLogDataSource com.android.internal.protolog.ProtoLogGroup com.android.internal.protolog.ProtoLogImpl @@ -11978,6 +12111,7 @@ com.android.internal.telephony.CellBroadcastUtils com.android.internal.telephony.CellNetworkScanResult$1 com.android.internal.telephony.CellNetworkScanResult com.android.internal.telephony.CellularNetworkService$CellularNetworkServiceProvider$1 +com.android.internal.telephony.CellularNetworkService$CellularNetworkServiceProvider com.android.internal.telephony.CellularNetworkService com.android.internal.telephony.ClientWakelockAccountant com.android.internal.telephony.ClientWakelockTracker @@ -12065,6 +12199,7 @@ com.android.internal.telephony.IMms com.android.internal.telephony.INumberVerificationCallback$Stub$Proxy com.android.internal.telephony.INumberVerificationCallback$Stub com.android.internal.telephony.INumberVerificationCallback +com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub$Proxy com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub com.android.internal.telephony.IOnSubscriptionsChangedListener com.android.internal.telephony.IOns$Stub$Proxy @@ -12170,6 +12305,7 @@ com.android.internal.telephony.NetworkFactoryLegacyImpl$1 com.android.internal.telephony.NetworkFactoryLegacyImpl$NetworkRequestInfo com.android.internal.telephony.NetworkFactoryLegacyImpl com.android.internal.telephony.NetworkFactoryShim +com.android.internal.telephony.NetworkRegistrationManager$NetworkRegStateCallback com.android.internal.telephony.NetworkRegistrationManager$NetworkServiceConnection com.android.internal.telephony.NetworkRegistrationManager$RegManagerDeathRecipient com.android.internal.telephony.NetworkRegistrationManager @@ -12255,6 +12391,7 @@ com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda8 com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda9 com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper +com.android.internal.telephony.PhoneSubInfoController com.android.internal.telephony.ProxyController$1 com.android.internal.telephony.ProxyController com.android.internal.telephony.RIL$RadioProxyDeathRecipient @@ -12827,6 +12964,7 @@ com.android.internal.telephony.imsphone.ImsPhoneCallTracker$HoldSwapState com.android.internal.telephony.imsphone.ImsPhoneCallTracker$MmTelFeatureListener com.android.internal.telephony.imsphone.ImsPhoneCallTracker$PhoneStateListener com.android.internal.telephony.imsphone.ImsPhoneCallTracker$SharedPreferenceProxy +com.android.internal.telephony.imsphone.ImsPhoneCallTracker$VtDataUsageProvider com.android.internal.telephony.imsphone.ImsPhoneCallTracker com.android.internal.telephony.imsphone.ImsPhoneCommandInterface com.android.internal.telephony.imsphone.ImsPhoneConnection$$ExternalSyntheticLambda0 @@ -13363,6 +13501,7 @@ com.android.internal.util.ExponentiallyBucketedHistogram com.android.internal.util.FastMath com.android.internal.util.FastPrintWriter$DummyWriter com.android.internal.util.FastPrintWriter-IA +com.android.internal.util.FastPrintWriter com.android.internal.util.FastXmlSerializer com.android.internal.util.FileRotator$FileInfo com.android.internal.util.FileRotator$Reader @@ -13383,6 +13522,7 @@ com.android.internal.util.HeavyHitterSketch com.android.internal.util.HexDump com.android.internal.util.IState com.android.internal.util.ImageUtils +com.android.internal.util.IndentingPrintWriter com.android.internal.util.IntPair com.android.internal.util.JournaledFile com.android.internal.util.LatencyTracker$$ExternalSyntheticLambda0 @@ -13452,6 +13592,7 @@ com.android.internal.util.WakeupMessage com.android.internal.util.XmlPullParserWrapper com.android.internal.util.XmlSerializerWrapper com.android.internal.util.XmlUtils$ForcedTypedXmlPullParser +com.android.internal.util.XmlUtils$ForcedTypedXmlSerializer com.android.internal.util.XmlUtils$ReadMapCallback com.android.internal.util.XmlUtils$WriteMapCallback com.android.internal.util.XmlUtils @@ -13497,6 +13638,7 @@ com.android.internal.util.function.pooled.PooledLambda com.android.internal.util.function.pooled.PooledLambdaImpl$LambdaType$ReturnType com.android.internal.util.function.pooled.PooledLambdaImpl$LambdaType com.android.internal.util.function.pooled.PooledLambdaImpl$Pool +com.android.internal.util.function.pooled.PooledLambdaImpl com.android.internal.util.function.pooled.PooledPredicate com.android.internal.util.function.pooled.PooledRunnable com.android.internal.util.function.pooled.PooledSupplier$OfDouble @@ -13662,6 +13804,11 @@ com.android.net.module.util.ProxyUtils com.android.nfc.x.android.nfc.FeatureFlags com.android.nfc.x.android.nfc.FeatureFlagsImpl com.android.nfc.x.android.nfc.Flags +com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.BCDSAPublicKey +com.android.org.conscrypt.OpenSSLRSAPublicKey +com.android.org.conscrypt.OpenSSLX509Certificate +com.android.org.kxml2.io.KXmlParser +com.android.os.coregraphics.HwuiStatsLog com.android.phone.ecc.nano.CodedInputByteBufferNano com.android.phone.ecc.nano.CodedOutputByteBufferNano$OutOfSpaceException com.android.phone.ecc.nano.CodedOutputByteBufferNano @@ -14238,6 +14385,75 @@ gov.nist.javax.sip.stack.TLSMessageProcessor gov.nist.javax.sip.stack.UDPMessageChannel$PingBackTimerTask gov.nist.javax.sip.stack.UDPMessageChannel gov.nist.javax.sip.stack.UDPMessageProcessor +java.lang.ThreadLocal$SuppliedThreadLocal +java.nio.ByteBufferAsFloatBuffer +java.nio.ByteBufferAsIntBuffer +java.nio.ByteBufferAsLongBuffer +java.nio.DirectByteBuffer +java.nio.HeapByteBuffer +java.security.MessageDigest$Delegate +java.time.Clock$SystemClock +java.util.ArrayDeque$DeqIterator +java.util.ArrayList$Itr +java.util.Arrays$ArrayItr +java.util.Arrays$ArrayList +java.util.Collections$3 +java.util.Collections$EmptyIterator +java.util.Collections$EmptyList +java.util.Collections$EmptySet +java.util.Collections$SingletonMap +java.util.Collections$UnmodifiableCollection$1 +java.util.Collections$UnmodifiableCollection +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1 +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet +java.util.Collections$UnmodifiableMap +java.util.Collections$UnmodifiableRandomAccessList +java.util.Collections$UnmodifiableSet +java.util.Collections$UnmodifiableSortedSet +java.util.HashMap$EntryIterator +java.util.HashMap$EntrySet +java.util.HashMap$KeyIterator +java.util.HashMap$KeySet +java.util.HashMap$Node +java.util.HashMap$TreeNode +java.util.HashMap$ValueIterator +java.util.HashMap$Values +java.util.ImmutableCollections$List12 +java.util.ImmutableCollections$ListItr +java.util.ImmutableCollections$ListN +java.util.ImmutableCollections$MapN +java.util.ImmutableCollections$Set12 +java.util.ImmutableCollections$SetN +java.util.LinkedHashMap$LinkedKeyIterator +java.util.LinkedHashMap$LinkedKeySet +java.util.LinkedHashMap$LinkedValueIterator +java.util.LinkedHashMap$LinkedValues +java.util.LinkedList$ListItr +java.util.TreeMap$EntryIterator +java.util.TreeMap$EntrySet +java.util.TreeMap$KeyIterator +java.util.TreeMap$TreeMapEntry +java.util.concurrent.ConcurrentHashMap$EntryIterator +java.util.concurrent.ConcurrentHashMap$EntrySetView +java.util.concurrent.ConcurrentHashMap$MapEntry +java.util.concurrent.ConcurrentHashMap$ValueIterator +java.util.concurrent.ConcurrentHashMap$ValuesView +java.util.concurrent.ConcurrentLinkedQueue$Itr +java.util.concurrent.CopyOnWriteArrayList$COWIterator +java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService +java.util.concurrent.Executors$DelegatedScheduledExecutorService +java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock +java.util.function.DoubleUnaryOperator$$ExternalSyntheticLambda2 +java.util.stream.IntPipeline$10 +java.util.stream.IntPipeline$1 +java.util.stream.IntPipeline$4 +java.util.stream.IntPipeline$Head +java.util.stream.ReferencePipeline$2 +java.util.stream.ReferencePipeline$3 +java.util.stream.ReferencePipeline$4 +java.util.stream.ReferencePipeline$Head +java.util.stream.SortedOps$OfRef javax.microedition.khronos.egl.EGL10 javax.microedition.khronos.egl.EGL11 javax.microedition.khronos.egl.EGL @@ -14352,6 +14568,7 @@ javax.sip.message.Message javax.sip.message.MessageFactory javax.sip.message.Request javax.sip.message.Response +libcore.util.ZoneInfo org.apache.http.conn.ConnectTimeoutException org.apache.http.conn.scheme.HostNameResolver org.apache.http.conn.scheme.LayeredSocketFactory @@ -14366,6 +14583,7 @@ org.apache.http.conn.ssl.X509HostnameVerifier org.apache.http.params.CoreConnectionPNames org.apache.http.params.HttpConnectionParams org.apache.http.params.HttpParams +org.ccil.cowan.tagsoup.AttributesImpl org.ccil.cowan.tagsoup.AutoDetector org.ccil.cowan.tagsoup.CommandLine org.ccil.cowan.tagsoup.Element @@ -14387,6 +14605,7 @@ org.ccil.cowan.tagsoup.jaxp.SAX1ParserAdapter$DocHandlerWrapper org.ccil.cowan.tagsoup.jaxp.SAX1ParserAdapter org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl org.ccil.cowan.tagsoup.jaxp.SAXParserImpl +sun.nio.ch.FileChannelImpl [Landroid.accounts.Account; [Landroid.accounts.AuthenticatorDescription; [Landroid.animation.Animator; @@ -14812,6 +15031,7 @@ org.ccil.cowan.tagsoup.jaxp.SAXParserImpl [Landroid.widget.SpellChecker$SpellParser; [Landroid.widget.TextView$BufferType; [Landroid.widget.TextView$ChangeWatcher; +[Landroid.window.BackTouchTracker$TouchTrackerState; [Landroid.window.DesktopModeFlags$ToggleOverride; [Landroid.window.DesktopModeFlags; [Landroid.window.TransitionFilter$Requirement; diff --git a/cmds/idmap2/OWNERS b/cmds/idmap2/OWNERS index 062ffd41348a..def9f401e51f 100644 --- a/cmds/idmap2/OWNERS +++ b/cmds/idmap2/OWNERS @@ -1,4 +1,3 @@ set noparent -toddke@google.com patb@google.com zyy@google.com diff --git a/cmds/incidentd/OWNERS b/cmds/incidentd/OWNERS index bcdcfc3cafed..db8fa9f09725 100644 --- a/cmds/incidentd/OWNERS +++ b/cmds/incidentd/OWNERS @@ -1,4 +1,3 @@ joeo@google.com yaochen@google.com yanmin@google.com -zhouwenjie@google.com diff --git a/config/preloaded-classes b/config/preloaded-classes index 70a94a0895ab..4147fd7c4ae6 100644 --- a/config/preloaded-classes +++ b/config/preloaded-classes @@ -59,6 +59,7 @@ android.accounts.AccountManager$AmsTask$1 android.accounts.AccountManager$AmsTask$Response android.accounts.AccountManager$AmsTask android.accounts.AccountManager$BaseFutureTask$1 +android.accounts.AccountManager$BaseFutureTask$Response android.accounts.AccountManager$BaseFutureTask android.accounts.AccountManager$Future2Task$1 android.accounts.AccountManager$Future2Task @@ -73,6 +74,7 @@ android.accounts.AuthenticatorDescription$1 android.accounts.AuthenticatorDescription-IA android.accounts.AuthenticatorDescription android.accounts.AuthenticatorException +android.accounts.IAccountAuthenticator$Stub$Proxy android.accounts.IAccountAuthenticator$Stub android.accounts.IAccountAuthenticator android.accounts.IAccountAuthenticatorResponse$Stub$Proxy @@ -81,6 +83,7 @@ android.accounts.IAccountAuthenticatorResponse android.accounts.IAccountManager$Stub$Proxy android.accounts.IAccountManager$Stub android.accounts.IAccountManager +android.accounts.IAccountManagerResponse$Stub$Proxy android.accounts.IAccountManagerResponse$Stub android.accounts.IAccountManagerResponse android.accounts.NetworkErrorException @@ -93,6 +96,8 @@ android.aconfig.nano.Aconfig$flag_values android.aconfig.nano.Aconfig$parsed_flag android.aconfig.nano.Aconfig$parsed_flags android.aconfig.nano.Aconfig$tracepoint +android.adpf.FeatureFlags +android.adpf.FeatureFlagsImpl android.adpf.Flags android.animation.AnimationHandler$$ExternalSyntheticLambda0 android.animation.AnimationHandler$1 @@ -220,6 +225,7 @@ android.app.ActivityManager$$ExternalSyntheticLambda0 android.app.ActivityManager$$ExternalSyntheticLambda1 android.app.ActivityManager$$ExternalSyntheticLambda2 android.app.ActivityManager$1 +android.app.ActivityManager$2 android.app.ActivityManager$3 android.app.ActivityManager$4 android.app.ActivityManager$AppTask @@ -270,11 +276,14 @@ android.app.ActivityThread$2 android.app.ActivityThread$3 android.app.ActivityThread$4 android.app.ActivityThread$5 +android.app.ActivityThread$6 android.app.ActivityThread$ActivityClientRecord$1 android.app.ActivityThread$ActivityClientRecord +android.app.ActivityThread$AndroidOs android.app.ActivityThread$AppBindData android.app.ActivityThread$ApplicationThread$$ExternalSyntheticLambda2 android.app.ActivityThread$ApplicationThread$1 +android.app.ActivityThread$ApplicationThread android.app.ActivityThread$BindServiceData android.app.ActivityThread$ContextCleanupInfo android.app.ActivityThread$CreateBackupAgentData @@ -304,6 +313,7 @@ android.app.ActivityTransitionState$1 android.app.ActivityTransitionState android.app.AlarmManager$AlarmClockInfo$1 android.app.AlarmManager$AlarmClockInfo +android.app.AlarmManager$ListenerWrapper android.app.AlarmManager$OnAlarmListener android.app.AlarmManager android.app.AlertDialog$Builder @@ -324,6 +334,7 @@ android.app.AppOpsManager$$ExternalSyntheticLambda6 android.app.AppOpsManager$$ExternalSyntheticLambda8 android.app.AppOpsManager$1 android.app.AppOpsManager$2 +android.app.AppOpsManager$3 android.app.AppOpsManager$4 android.app.AppOpsManager$AppOpsCollector android.app.AppOpsManager$AttributedHistoricalOps$1 @@ -367,6 +378,7 @@ android.app.AppOpsManager android.app.AppOpsManagerInternal android.app.Application$ActivityLifecycleCallbacks android.app.Application$OnProvideAssistDataListener +android.app.Application android.app.ApplicationErrorReport$1 android.app.ApplicationErrorReport$AnrInfo android.app.ApplicationErrorReport$BatteryInfo @@ -392,6 +404,7 @@ android.app.ApplicationPackageManager$HasSystemFeatureQuery android.app.ApplicationPackageManager$MoveCallbackDelegate android.app.ApplicationPackageManager$ResourceName android.app.ApplicationPackageManager-IA +android.app.ApplicationPackageManager android.app.AsyncNotedAppOp$1 android.app.AsyncNotedAppOp android.app.AutomaticZenRule$1 @@ -420,6 +433,7 @@ android.app.ContentProviderHolder-IA android.app.ContentProviderHolder android.app.ContextImpl$1 android.app.ContextImpl$ApplicationContentResolver +android.app.ContextImpl android.app.DexLoadReporter android.app.Dialog$$ExternalSyntheticLambda0 android.app.Dialog$$ExternalSyntheticLambda1 @@ -505,6 +519,7 @@ android.app.IAppTraceRetriever android.app.IApplicationStartInfoCompleteListener$Stub$Proxy android.app.IApplicationStartInfoCompleteListener$Stub android.app.IApplicationStartInfoCompleteListener +android.app.IApplicationThread$Stub$Proxy android.app.IApplicationThread$Stub android.app.IApplicationThread android.app.IAssistDataReceiver$Stub$Proxy @@ -519,6 +534,7 @@ android.app.IForegroundServiceObserver android.app.IGameManagerService$Stub$Proxy android.app.IGameManagerService$Stub android.app.IGameManagerService +android.app.IInstantAppResolver$Stub$Proxy android.app.IInstantAppResolver$Stub android.app.IInstantAppResolver android.app.IInstrumentationWatcher$Stub$Proxy @@ -547,11 +563,13 @@ android.app.IScreenCaptureObserver android.app.ISearchManager$Stub$Proxy android.app.ISearchManager$Stub android.app.ISearchManager +android.app.IServiceConnection$Stub$Proxy android.app.IServiceConnection$Stub android.app.IServiceConnection android.app.IStopUserCallback$Stub$Proxy android.app.IStopUserCallback$Stub android.app.IStopUserCallback +android.app.ITaskStackListener$Stub$Proxy android.app.ITaskStackListener$Stub android.app.ITaskStackListener android.app.ITransientNotification$Stub$Proxy @@ -571,6 +589,7 @@ android.app.IUiModeManagerCallback android.app.IUidFrozenStateChangedCallback$Stub$Proxy android.app.IUidFrozenStateChangedCallback$Stub android.app.IUidFrozenStateChangedCallback +android.app.IUidObserver$Stub$Proxy android.app.IUidObserver$Stub android.app.IUidObserver android.app.IUnsafeIntentStrictModeCallback$Stub @@ -599,6 +618,7 @@ android.app.Instrumentation android.app.IntentReceiverLeaked android.app.IntentService$ServiceHandler android.app.IntentService +android.app.JobSchedulerImpl android.app.KeyguardManager$1 android.app.KeyguardManager$2 android.app.KeyguardManager$KeyguardDismissCallback @@ -606,9 +626,11 @@ android.app.KeyguardManager android.app.ListActivity android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0 android.app.LoadedApk$ReceiverDispatcher$Args +android.app.LoadedApk$ReceiverDispatcher$InnerReceiver android.app.LoadedApk$ReceiverDispatcher android.app.LoadedApk$ServiceDispatcher$ConnectionInfo android.app.LoadedApk$ServiceDispatcher$DeathMonitor +android.app.LoadedApk$ServiceDispatcher$InnerConnection android.app.LoadedApk$ServiceDispatcher$RunConnection android.app.LoadedApk$ServiceDispatcher android.app.LoadedApk$SplitDependencyLoaderImpl @@ -665,6 +687,7 @@ android.app.NotificationManager$NotificationChannelQuery android.app.NotificationManager$NotificationKey android.app.NotificationManager$Policy$1 android.app.NotificationManager$Policy +android.app.NotificationManager$RateLimiter android.app.NotificationManager android.app.OnActivityPausedListener android.app.PackageInstallObserver$1 @@ -675,6 +698,7 @@ android.app.PendingIntent$$ExternalSyntheticLambda2 android.app.PendingIntent$1 android.app.PendingIntent$CancelListener android.app.PendingIntent$CanceledException +android.app.PendingIntent$FinishedDispatcher android.app.PendingIntent$OnFinished android.app.PendingIntent$OnMarshaledListener android.app.PendingIntent @@ -760,6 +784,7 @@ android.app.SharedPreferencesImpl$EditorImpl android.app.SharedPreferencesImpl$MemoryCommitResult android.app.SharedPreferencesImpl$SharedPreferencesThreadFactory android.app.SharedPreferencesImpl-IA +android.app.SharedPreferencesImpl android.app.StackTrace android.app.StatusBarManager android.app.SyncNotedAppOp$1 @@ -1161,6 +1186,7 @@ android.app.job.JobSchedulerFrameworkInitializer android.app.job.JobService$1 android.app.job.JobService android.app.job.JobServiceEngine$JobHandler +android.app.job.JobServiceEngine$JobInterface android.app.job.JobServiceEngine android.app.job.JobWorkItem$1 android.app.job.JobWorkItem @@ -1241,7 +1267,10 @@ android.app.servertransaction.TopResumedActivityChangeItem-IA android.app.servertransaction.TopResumedActivityChangeItem android.app.servertransaction.TransactionExecutor android.app.servertransaction.TransactionExecutorHelper +android.app.servertransaction.WindowStateInsetsControlChangeItem$1 +android.app.servertransaction.WindowStateInsetsControlChangeItem android.app.servertransaction.WindowStateTransactionItem$TransactionListener +android.app.servertransaction.WindowStateTransactionItem android.app.slice.ISliceManager$Stub$Proxy android.app.slice.ISliceManager$Stub android.app.slice.ISliceManager @@ -1467,6 +1496,7 @@ android.content.ComponentName$1 android.content.ComponentName$WithComponentName android.content.ComponentName android.content.ContentCaptureOptions$1 +android.content.ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda0 android.content.ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda1 android.content.ContentCaptureOptions$ContentProtectionOptions$$ExternalSyntheticLambda2 android.content.ContentCaptureOptions$ContentProtectionOptions @@ -1488,10 +1518,12 @@ android.content.ContentProviderOperation$BackReference android.content.ContentProviderOperation$Builder android.content.ContentProviderOperation-IA android.content.ContentProviderOperation +android.content.ContentProviderProxy android.content.ContentProviderResult$1 android.content.ContentProviderResult android.content.ContentResolver$1 android.content.ContentResolver$2 +android.content.ContentResolver$CursorWrapperInner android.content.ContentResolver$OpenResourceIdResult android.content.ContentResolver$ParcelFileDescriptorInner android.content.ContentResolver$ResultListener @@ -1522,6 +1554,7 @@ android.content.IContentProvider android.content.IContentService$Stub$Proxy android.content.IContentService$Stub android.content.IContentService +android.content.IIntentReceiver$Stub$Proxy android.content.IIntentReceiver$Stub android.content.IIntentReceiver android.content.IIntentSender$Stub$Proxy @@ -1695,6 +1728,7 @@ android.content.pm.IDexModuleRegisterCallback android.content.pm.ILauncherApps$Stub$Proxy android.content.pm.ILauncherApps$Stub android.content.pm.ILauncherApps +android.content.pm.IOnAppsChangedListener$Stub$Proxy android.content.pm.IOnAppsChangedListener$Stub android.content.pm.IOnAppsChangedListener android.content.pm.IOnChecksumsReadyListener$Stub$Proxy @@ -2040,6 +2074,7 @@ android.content.res.StringBlock android.content.res.ThemedResourceCache android.content.res.TypedArray android.content.res.Validator +android.content.res.XmlBlock$Parser android.content.res.XmlBlock android.content.res.XmlResourceParser android.content.res.loader.AssetsProvider @@ -2074,6 +2109,7 @@ android.database.CharArrayBuffer android.database.ContentObservable android.database.ContentObserver$$ExternalSyntheticLambda0 android.database.ContentObserver$$ExternalSyntheticLambda1 +android.database.ContentObserver$Transport android.database.ContentObserver android.database.CrossProcessCursor android.database.CrossProcessCursorWrapper @@ -2092,6 +2128,7 @@ android.database.DatabaseUtils$InsertHelper android.database.DatabaseUtils android.database.DefaultDatabaseErrorHandler android.database.IBulkCursor +android.database.IContentObserver$Stub$Proxy android.database.IContentObserver$Stub android.database.IContentObserver android.database.MatrixCursor$RowBuilder @@ -2128,6 +2165,7 @@ android.database.sqlite.SQLiteConnectionPool$IdleConnectionHandler android.database.sqlite.SQLiteConnectionPool-IA android.database.sqlite.SQLiteConnectionPool android.database.sqlite.SQLiteConstraintException +android.database.sqlite.SQLiteCursor android.database.sqlite.SQLiteCursorDriver android.database.sqlite.SQLiteCustomFunction android.database.sqlite.SQLiteDatabase$$ExternalSyntheticLambda0 @@ -2154,6 +2192,7 @@ android.database.sqlite.SQLiteException android.database.sqlite.SQLiteFullException android.database.sqlite.SQLiteGlobal android.database.sqlite.SQLiteMisuseException +android.database.sqlite.SQLiteOpenHelper$$ExternalSyntheticLambda0 android.database.sqlite.SQLiteOpenHelper android.database.sqlite.SQLiteOutOfMemoryException android.database.sqlite.SQLiteProgram @@ -2226,12 +2265,16 @@ android.graphics.ColorSpace$Connector android.graphics.ColorSpace$Lab android.graphics.ColorSpace$Model android.graphics.ColorSpace$Named +android.graphics.ColorSpace$OkLab android.graphics.ColorSpace$RenderIntent android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda0 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda1 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda2 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda3 +android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda4 android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda5 +android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda6 +android.graphics.ColorSpace$Rgb$$ExternalSyntheticLambda9 android.graphics.ColorSpace$Rgb$Native android.graphics.ColorSpace$Rgb$NoImagePreloadHolder android.graphics.ColorSpace$Rgb$TransferParameters @@ -2537,6 +2580,7 @@ android.graphics.fonts.Font$NoImagePreloadHolder android.graphics.fonts.Font android.graphics.fonts.FontCustomizationParser$Result android.graphics.fonts.FontCustomizationParser +android.graphics.fonts.FontFamily$Builder$NoImagePreloadHolder android.graphics.fonts.FontFamily$Builder android.graphics.fonts.FontFamily android.graphics.fonts.FontFileUtil @@ -2627,6 +2671,7 @@ android.hardware.SystemSensorManager$BaseEventQueue android.hardware.SystemSensorManager$InjectEventQueue android.hardware.SystemSensorManager$SensorEventQueue android.hardware.SystemSensorManager$TriggerEventQueue +android.hardware.SystemSensorManager android.hardware.TriggerEvent android.hardware.TriggerEventListener android.hardware.biometrics.BiometricAuthenticator$AuthenticationCallback @@ -2911,6 +2956,7 @@ android.hardware.display.DisplayManager android.hardware.display.DisplayManagerGlobal$1 android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate$$ExternalSyntheticLambda0 android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate +android.hardware.display.DisplayManagerGlobal$DisplayManagerCallback android.hardware.display.DisplayManagerGlobal android.hardware.display.DisplayManagerInternal$DisplayPowerCallbacks android.hardware.display.DisplayManagerInternal$DisplayPowerRequest @@ -2927,6 +2973,7 @@ android.hardware.display.IColorDisplayManager android.hardware.display.IDisplayManager$Stub$Proxy android.hardware.display.IDisplayManager$Stub android.hardware.display.IDisplayManager +android.hardware.display.IDisplayManagerCallback$Stub$Proxy android.hardware.display.IDisplayManagerCallback$Stub android.hardware.display.IDisplayManagerCallback android.hardware.display.IVirtualDisplayCallback$Stub$Proxy @@ -3001,6 +3048,7 @@ android.hardware.hdmi.HdmiRecordSources$OwnSource android.hardware.hdmi.HdmiRecordSources$RecordSource android.hardware.input.HostUsiVersion$1 android.hardware.input.HostUsiVersion +android.hardware.input.IInputDevicesChangedListener$Stub$Proxy android.hardware.input.IInputDevicesChangedListener$Stub android.hardware.input.IInputDevicesChangedListener android.hardware.input.IInputManager$Stub$Proxy @@ -3016,6 +3064,7 @@ android.hardware.input.InputDeviceIdentifier android.hardware.input.InputManager$InputDeviceListener android.hardware.input.InputManager android.hardware.input.InputManagerGlobal$InputDeviceListenerDelegate +android.hardware.input.InputManagerGlobal$InputDevicesChangedListener android.hardware.input.InputManagerGlobal$OnTabletModeChangedListenerDelegate android.hardware.input.InputManagerGlobal-IA android.hardware.input.InputManagerGlobal @@ -4609,6 +4658,7 @@ android.icu.text.ReplaceableContextIterator android.icu.text.ReplaceableString android.icu.text.RuleBasedBreakIterator$BreakCache android.icu.text.RuleBasedBreakIterator$DictionaryCache +android.icu.text.RuleBasedBreakIterator android.icu.text.RuleBasedCollator$CollationBuffer android.icu.text.RuleBasedCollator$CollationKeyByteSink android.icu.text.RuleBasedCollator$FCDUTF16NFDIterator @@ -4956,8 +5006,13 @@ android.inputmethodservice.SoftInputWindow android.internal.aconfig.storage.AconfigStorageException android.internal.aconfig.storage.ByteBufferReader android.internal.aconfig.storage.FileType +android.internal.aconfig.storage.FlagTable$Header +android.internal.aconfig.storage.FlagTable +android.internal.aconfig.storage.FlagValueList$Header +android.internal.aconfig.storage.FlagValueList android.internal.aconfig.storage.PackageTable$Header android.internal.aconfig.storage.PackageTable +android.internal.aconfig.storage.TableUtils$StorageFilesBundle android.internal.framework.protobuf.nano.InvalidProtocolBufferNanoException android.internal.framework.protobuf.nano.MessageNano android.internal.hidl.base.V1_0.DebugInfo @@ -4984,6 +5039,7 @@ android.internal.telephony.sysprop.TelephonyProperties$$ExternalSyntheticLambda7 android.internal.telephony.sysprop.TelephonyProperties$$ExternalSyntheticLambda8 android.internal.telephony.sysprop.TelephonyProperties$$ExternalSyntheticLambda9 android.internal.telephony.sysprop.TelephonyProperties +android.location.CountryDetector android.location.Geofence$1 android.location.Geofence android.location.IFusedGeofenceHardware$Stub$Proxy @@ -4992,11 +5048,14 @@ android.location.IFusedGeofenceHardware android.location.IGpsGeofenceHardware$Stub$Proxy android.location.IGpsGeofenceHardware$Stub android.location.IGpsGeofenceHardware +android.location.ILocationManager$Stub +android.location.ILocationManager android.location.Location$$ExternalSyntheticLambda0 android.location.Location$1 android.location.Location$BearingDistanceCache android.location.Location-IA android.location.Location +android.location.LocationManager android.location.LocationTime$1 android.location.LocationTime android.location.flags.FeatureFlags @@ -5028,6 +5087,7 @@ android.media.AudioGain android.media.AudioGainConfig android.media.AudioHandle android.media.AudioManager$1 +android.media.AudioManager$2 android.media.AudioManager$3 android.media.AudioManager$4 android.media.AudioManager$AudioPlaybackCallback @@ -5161,6 +5221,7 @@ android.media.IMediaRouter2$Stub android.media.IMediaRouter2 android.media.IMediaRouter2Manager$Stub android.media.IMediaRouter2Manager +android.media.IMediaRouterClient$Stub$Proxy android.media.IMediaRouterClient$Stub android.media.IMediaRouterClient android.media.IMediaRouterService$Stub$Proxy @@ -5323,6 +5384,7 @@ android.media.MediaRouter$Static$1 android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda0 android.media.MediaRouter$Static$Client$$ExternalSyntheticLambda1 android.media.MediaRouter$Static$Client$1 +android.media.MediaRouter$Static$Client android.media.MediaRouter$Static android.media.MediaRouter$UserRouteInfo$SessionVolumeProvider android.media.MediaRouter$UserRouteInfo @@ -5531,6 +5593,7 @@ android.media.projection.MediaProjectionManager android.media.quality.MediaQualityManager android.media.quality.PictureProfileHandle$1 android.media.quality.PictureProfileHandle +android.media.session.IActiveSessionsListener$Stub$Proxy android.media.session.IActiveSessionsListener$Stub android.media.session.IActiveSessionsListener android.media.session.IOnMediaKeyEventDispatchedListener$Stub$Proxy @@ -5557,6 +5620,7 @@ android.media.session.ISessionCallback android.media.session.ISessionController$Stub$Proxy android.media.session.ISessionController$Stub android.media.session.ISessionController +android.media.session.ISessionControllerCallback$Stub$Proxy android.media.session.ISessionControllerCallback$Stub android.media.session.ISessionControllerCallback android.media.session.ISessionManager$Stub$Proxy @@ -5593,6 +5657,7 @@ android.media.session.MediaSessionManager$RemoteSessionCallbackStub android.media.session.MediaSessionManager$RemoteUserInfo android.media.session.MediaSessionManager$Session2TokensChangedWrapper android.media.session.MediaSessionManager$SessionsChangedWrapper$1$$ExternalSyntheticLambda0 +android.media.session.MediaSessionManager$SessionsChangedWrapper$1 android.media.session.MediaSessionManager$SessionsChangedWrapper android.media.session.MediaSessionManager-IA android.media.session.MediaSessionManager @@ -5684,6 +5749,8 @@ android.net.LocalServerSocket android.net.LocalSocket android.net.LocalSocketAddress$Namespace android.net.LocalSocketAddress +android.net.LocalSocketImpl$SocketInputStream +android.net.LocalSocketImpl$SocketOutputStream android.net.LocalSocketImpl android.net.MatchAllNetworkSpecifier$1 android.net.MatchAllNetworkSpecifier @@ -5732,11 +5799,15 @@ android.net.Uri$1 android.net.Uri$AbstractHierarchicalUri android.net.Uri$AbstractPart android.net.Uri$Builder +android.net.Uri$HierarchicalUri android.net.Uri$NotCachedHolder +android.net.Uri$OpaqueUri android.net.Uri$Part$EmptyPart android.net.Uri$Part android.net.Uri$PathPart +android.net.Uri$PathSegments android.net.Uri$PathSegmentsBuilder +android.net.Uri$StringUri android.net.Uri-IA android.net.Uri android.net.UriCodec @@ -5986,7 +6057,6 @@ android.nfc.NfcOemExtension$$ExternalSyntheticLambda8 android.nfc.NfcOemExtension$$ExternalSyntheticLambda9 android.nfc.NfcOemExtension$Callback android.nfc.NfcOemExtension$NfcOemExtensionCallback -android.nfc.NfcOemExtension-IA android.nfc.NfcOemExtension android.nfc.NfcRoutingTableEntry android.nfc.NfcServiceManager$ServiceRegisterer @@ -6139,6 +6209,7 @@ android.os.Binder android.os.BinderProxy$BinderProxyMapSizeException android.os.BinderProxy$NoImagePreloadHolder android.os.BinderProxy$ProxyMap +android.os.BinderProxy android.os.BluetoothServiceManager$ServiceRegisterer android.os.BluetoothServiceManager android.os.BugreportManager @@ -6213,6 +6284,7 @@ android.os.Handler$Callback android.os.Handler$MessengerImpl android.os.Handler-IA android.os.Handler +android.os.HandlerExecutor android.os.HandlerThread android.os.HardwarePropertiesManager android.os.HidlMemory @@ -6297,6 +6369,7 @@ android.os.IRecoverySystem android.os.IRecoverySystemProgressListener$Stub$Proxy android.os.IRecoverySystemProgressListener$Stub android.os.IRecoverySystemProgressListener +android.os.IRemoteCallback$Stub$Proxy android.os.IRemoteCallback$Stub android.os.IRemoteCallback android.os.ISchedulingPolicyService$Stub @@ -6370,6 +6443,7 @@ android.os.IpcDataCache android.os.LimitExceededException android.os.LocaleList$1 android.os.LocaleList +android.os.Looper$NoImagePreloadHolder android.os.Looper$Observer android.os.Looper android.os.MemoryFile @@ -6408,7 +6482,7 @@ android.os.OutcomeReceiver android.os.PackageTagsList$1 android.os.PackageTagsList android.os.Parcel$1 -android.os.Parcel$ClassLoaderProvider +android.os.Parcel$2 android.os.Parcel$LazyValue android.os.Parcel$ReadWriteHelper android.os.Parcel$SquashReadHelper @@ -6417,6 +6491,7 @@ android.os.ParcelDuration$1 android.os.ParcelDuration android.os.ParcelFileDescriptor$1 android.os.ParcelFileDescriptor$2 +android.os.ParcelFileDescriptor$AutoCloseInputStream android.os.ParcelFileDescriptor$AutoCloseOutputStream android.os.ParcelFileDescriptor$OnCloseListener android.os.ParcelFileDescriptor$Status @@ -6536,12 +6611,14 @@ android.os.StrictMode$1 android.os.StrictMode$2 android.os.StrictMode$3 android.os.StrictMode$4 +android.os.StrictMode$5 android.os.StrictMode$6 android.os.StrictMode$7 android.os.StrictMode$8 android.os.StrictMode$9 android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda0 android.os.StrictMode$AndroidBlockGuardPolicy$$ExternalSyntheticLambda1 +android.os.StrictMode$AndroidBlockGuardPolicy android.os.StrictMode$AndroidCloseGuardReporter android.os.StrictMode$InstanceTracker android.os.StrictMode$OnThreadViolationListener @@ -7014,6 +7091,7 @@ android.security.KeyStoreSecurityLevel$$ExternalSyntheticLambda1 android.security.KeyStoreSecurityLevel android.security.NetworkSecurityPolicy android.security.Scrypt +android.security.advancedprotection.AdvancedProtectionManager android.security.attestationverification.AttestationVerificationManager android.security.authenticationpolicy.AuthenticationPolicyManager android.security.intrusiondetection.IntrusionDetectionManager @@ -7317,6 +7395,7 @@ android.service.notification.Adjustment android.service.notification.Condition$1 android.service.notification.Condition android.service.notification.ConditionProviderService$H +android.service.notification.ConditionProviderService$Provider android.service.notification.ConditionProviderService-IA android.service.notification.ConditionProviderService android.service.notification.IConditionProvider$Stub @@ -7332,6 +7411,7 @@ android.service.notification.NotificationAssistantService android.service.notification.NotificationListenerFilter$1 android.service.notification.NotificationListenerFilter android.service.notification.NotificationListenerService$MyHandler +android.service.notification.NotificationListenerService$NotificationListenerWrapper android.service.notification.NotificationListenerService$Ranking android.service.notification.NotificationListenerService$RankingMap$1 android.service.notification.NotificationListenerService$RankingMap @@ -7346,6 +7426,7 @@ android.service.notification.RateEstimator android.service.notification.ScheduleCalendar android.service.notification.SnoozeCriterion$1 android.service.notification.SnoozeCriterion +android.service.notification.StatusBarNotification$$ExternalSyntheticLambda0 android.service.notification.StatusBarNotification$1 android.service.notification.StatusBarNotification android.service.notification.ZenDeviceEffects$1 @@ -7387,6 +7468,7 @@ android.service.quicksettings.TileService android.service.storage.IExternalStorageService$Stub$Proxy android.service.storage.IExternalStorageService$Stub android.service.storage.IExternalStorageService +android.service.textclassifier.ITextClassifierCallback$Stub$Proxy android.service.textclassifier.ITextClassifierCallback$Stub android.service.textclassifier.ITextClassifierCallback android.service.textclassifier.ITextClassifierService$Stub$Proxy @@ -7549,6 +7631,7 @@ android.system.keystore2.KeyParameters$1 android.system.keystore2.KeyParameters android.system.keystore2.OperationChallenge$1 android.system.keystore2.OperationChallenge +android.system.suspend.internal.ISuspendControlServiceInternal$Stub$Proxy android.system.suspend.internal.ISuspendControlServiceInternal$Stub android.system.suspend.internal.ISuspendControlServiceInternal android.system.suspend.internal.WakeLockInfo$1 @@ -7691,6 +7774,7 @@ android.telephony.CellIdentityCdma android.telephony.CellIdentityGsm$1 android.telephony.CellIdentityGsm android.telephony.CellIdentityLte$1 +android.telephony.CellIdentityLte android.telephony.CellIdentityNr$1 android.telephony.CellIdentityNr android.telephony.CellIdentityTdscdma$1 @@ -7718,6 +7802,7 @@ android.telephony.CellSignalStrengthCdma-IA android.telephony.CellSignalStrengthCdma android.telephony.CellSignalStrengthGsm$1 android.telephony.CellSignalStrengthGsm-IA +android.telephony.CellSignalStrengthGsm android.telephony.CellSignalStrengthLte$1 android.telephony.CellSignalStrengthLte-IA android.telephony.CellSignalStrengthLte @@ -7729,6 +7814,7 @@ android.telephony.CellSignalStrengthTdscdma-IA android.telephony.CellSignalStrengthTdscdma android.telephony.CellSignalStrengthWcdma$1 android.telephony.CellSignalStrengthWcdma-IA +android.telephony.CellSignalStrengthWcdma android.telephony.CellularIdentifierDisclosure android.telephony.ClientRequestStats$1 android.telephony.ClientRequestStats @@ -7833,6 +7919,7 @@ android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticL android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda62 android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda6 android.telephony.PhoneStateListener$IPhoneStateListenerStub$$ExternalSyntheticLambda9 +android.telephony.PhoneStateListener$IPhoneStateListenerStub android.telephony.PhoneStateListener android.telephony.PhysicalChannelConfig$1 android.telephony.PhysicalChannelConfig$Builder @@ -7939,6 +8026,7 @@ android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLa android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda52 android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda63 android.telephony.TelephonyCallback$IPhoneStateListenerStub$$ExternalSyntheticLambda65 +android.telephony.TelephonyCallback$IPhoneStateListenerStub android.telephony.TelephonyCallback$ImsCallDisconnectCauseListener android.telephony.TelephonyCallback$LinkCapacityEstimateChangedListener android.telephony.TelephonyCallback$MediaQualityStatusChangedListener @@ -8000,7 +8088,9 @@ android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda0 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda1 android.telephony.TelephonyRegistryManager$$ExternalSyntheticLambda2 android.telephony.TelephonyRegistryManager$1$$ExternalSyntheticLambda0 +android.telephony.TelephonyRegistryManager$1 android.telephony.TelephonyRegistryManager$2 +android.telephony.TelephonyRegistryManager$3 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda0 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda1 android.telephony.TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper$$ExternalSyntheticLambda2 @@ -8380,6 +8470,7 @@ android.text.SpanSet android.text.SpanWatcher android.text.Spannable$Factory android.text.Spannable +android.text.SpannableString android.text.SpannableStringBuilder android.text.SpannableStringInternal android.text.Spanned @@ -8541,9 +8632,11 @@ android.timezone.TimeZoneFinder android.tracing.FeatureFlags android.tracing.FeatureFlagsImpl android.tracing.Flags +android.tracing.inputmethod.InputMethodDataSource android.tracing.perfetto.CreateIncrementalStateArgs android.tracing.perfetto.CreateTlsStateArgs android.tracing.perfetto.DataSource +android.tracing.perfetto.DataSourceInstance android.tracing.perfetto.DataSourceParams$Builder android.tracing.perfetto.DataSourceParams android.tracing.perfetto.FlushCallbackArguments @@ -8628,6 +8721,7 @@ android.updatabledriver.UpdatableDriverProto$DenylistsOrBuilder android.util.AndroidException android.util.AndroidRuntimeException android.util.ArrayMap$1 +android.util.ArrayMap android.util.ArraySet$1 android.util.ArraySet android.util.AtomicFile @@ -8665,6 +8759,7 @@ android.util.FeatureFlagUtils android.util.FloatProperty android.util.Half android.util.IconDrawableFactory +android.util.IndentingPrintWriter android.util.IntArray android.util.IntProperty android.util.JsonReader$1 @@ -8696,6 +8791,11 @@ android.util.LongSparseLongArray$Parcelling android.util.LongSparseLongArray android.util.LruCache android.util.MalformedJsonException +android.util.MapCollections$ArrayIterator +android.util.MapCollections$EntrySet +android.util.MapCollections$KeySet +android.util.MapCollections$MapIterator +android.util.MapCollections$ValuesCollection android.util.MapCollections android.util.MathUtils android.util.MemoryIntArray$1 @@ -8725,6 +8825,7 @@ android.util.Range android.util.Rational android.util.RecurrenceRule$1 android.util.RecurrenceRule$NonrecurringIterator +android.util.RecurrenceRule$RecurringIterator android.util.RecurrenceRule android.util.ReflectiveProperty android.util.RotationUtils @@ -8742,6 +8843,7 @@ android.util.SparseIntArray android.util.SparseLongArray android.util.SparseSetArray android.util.Spline$LinearSpline +android.util.Spline$MonotoneCubicSpline android.util.Spline android.util.StateSet android.util.StringBuilderPrinter @@ -8923,8 +9025,10 @@ android.view.IDisplayChangeWindowController android.view.IDisplayFoldListener$Stub$Proxy android.view.IDisplayFoldListener$Stub android.view.IDisplayFoldListener +android.view.IDisplayWindowInsetsController$Stub$Proxy android.view.IDisplayWindowInsetsController$Stub android.view.IDisplayWindowInsetsController +android.view.IDisplayWindowListener$Stub$Proxy android.view.IDisplayWindowListener$Stub android.view.IDisplayWindowListener android.view.IDockedStackListener$Stub$Proxy @@ -8967,6 +9071,7 @@ android.view.ISurfaceControlViewHostParent$Stub android.view.ISurfaceControlViewHostParent android.view.ISystemGestureExclusionListener$Stub android.view.ISystemGestureExclusionListener +android.view.IWallpaperVisibilityListener$Stub$Proxy android.view.IWallpaperVisibilityListener$Stub android.view.IWallpaperVisibilityListener android.view.IWindow$Stub @@ -9165,7 +9270,9 @@ android.view.SurfaceControl$RefreshRateRange$1 android.view.SurfaceControl$RefreshRateRange android.view.SurfaceControl$RefreshRateRanges android.view.SurfaceControl$StaticDisplayInfo +android.view.SurfaceControl$Transaction$$ExternalSyntheticLambda0 android.view.SurfaceControl$Transaction$$ExternalSyntheticLambda1 +android.view.SurfaceControl$Transaction$$ExternalSyntheticLambda3 android.view.SurfaceControl$Transaction$1 android.view.SurfaceControl$Transaction$2 android.view.SurfaceControl$Transaction @@ -9283,6 +9390,7 @@ android.view.View$PerformClick android.view.View$ScrollabilityCache android.view.View$SendAccessibilityEventThrottle android.view.View$SendViewScrolledAccessibilityEvent +android.view.View$SensitiveAutofillHintsHelper android.view.View$TintInfo android.view.View$TooltipInfo android.view.View$TransformationInfo @@ -9347,6 +9455,7 @@ android.view.ViewRootImpl$$ExternalSyntheticLambda1 android.view.ViewRootImpl$$ExternalSyntheticLambda20 android.view.ViewRootImpl$$ExternalSyntheticLambda21 android.view.ViewRootImpl$$ExternalSyntheticLambda22 +android.view.ViewRootImpl$$ExternalSyntheticLambda23 android.view.ViewRootImpl$$ExternalSyntheticLambda2 android.view.ViewRootImpl$$ExternalSyntheticLambda3 android.view.ViewRootImpl$$ExternalSyntheticLambda4 @@ -9401,6 +9510,7 @@ android.view.ViewRootImpl$UnhandledKeyManager android.view.ViewRootImpl$ViewPostImeInputStage android.view.ViewRootImpl$ViewPreImeInputStage android.view.ViewRootImpl$ViewRootHandler +android.view.ViewRootImpl$W android.view.ViewRootImpl$WindowInputEventReceiver android.view.ViewRootImpl-IA android.view.ViewRootImpl @@ -9469,6 +9579,7 @@ android.view.WindowManagerGlobal$2 android.view.WindowManagerGlobal$TrustedPresentationListener android.view.WindowManagerGlobal-IA android.view.WindowManagerGlobal +android.view.WindowManagerImpl android.view.WindowManagerPolicyConstants$PointerEventListener android.view.WindowManagerPolicyConstants android.view.WindowMetrics @@ -9486,6 +9597,7 @@ android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda0 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda1 android.view.accessibility.AccessibilityManager$$ExternalSyntheticLambda3 android.view.accessibility.AccessibilityManager$1$$ExternalSyntheticLambda0 +android.view.accessibility.AccessibilityManager$1 android.view.accessibility.AccessibilityManager$AccessibilityPolicy android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener @@ -9529,6 +9641,7 @@ android.view.accessibility.IAccessibilityInteractionConnectionCallback android.view.accessibility.IAccessibilityManager$Stub$Proxy android.view.accessibility.IAccessibilityManager$Stub android.view.accessibility.IAccessibilityManager +android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy android.view.accessibility.IAccessibilityManagerClient$Stub android.view.accessibility.IAccessibilityManagerClient android.view.accessibility.WeakSparseArray$WeakReferenceWithId @@ -9710,6 +9823,7 @@ android.view.inputmethod.IInputMethodSessionInvoker$$ExternalSyntheticLambda6 android.view.inputmethod.IInputMethodSessionInvoker$$ExternalSyntheticLambda8 android.view.inputmethod.IInputMethodSessionInvoker android.view.inputmethod.ImeTracker$1$$ExternalSyntheticLambda0 +android.view.inputmethod.ImeTracker$1 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda0 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda1 android.view.inputmethod.ImeTracker$Debug$$ExternalSyntheticLambda2 @@ -10259,6 +10373,7 @@ android.widget.RemoteViews$1 android.widget.RemoteViews$2 android.widget.RemoteViews$Action android.widget.RemoteViews$ActionException +android.widget.RemoteViews$ApplicationInfoCache$$ExternalSyntheticLambda0 android.widget.RemoteViews$ApplicationInfoCache android.widget.RemoteViews$AsyncApplyTask android.widget.RemoteViews$AttributeReflectionAction @@ -10446,6 +10561,7 @@ android.window.BackProgressAnimator$$ExternalSyntheticLambda1 android.window.BackProgressAnimator$1 android.window.BackProgressAnimator$ProgressCallback android.window.BackProgressAnimator +android.window.BackTouchTracker$TouchTrackerState android.window.BackTouchTracker android.window.ClientWindowFrames$1 android.window.ClientWindowFrames-IA @@ -10512,6 +10628,7 @@ android.window.ISurfaceSyncGroup$Stub android.window.ISurfaceSyncGroup android.window.ISurfaceSyncGroupCompletedListener$Stub android.window.ISurfaceSyncGroupCompletedListener +android.window.ITaskFragmentOrganizer$Stub$Proxy android.window.ITaskFragmentOrganizer$Stub android.window.ITaskFragmentOrganizer android.window.ITaskFragmentOrganizerController$Stub @@ -10852,6 +10969,7 @@ com.android.i18n.util.Log com.android.icu.charset.CharsetDecoderICU com.android.icu.charset.CharsetEncoderICU com.android.icu.charset.CharsetFactory +com.android.icu.charset.CharsetICU com.android.icu.charset.NativeConverter com.android.icu.text.CompatibleDecimalFormatFactory com.android.icu.text.DateSorterBridge @@ -11277,6 +11395,7 @@ com.android.internal.app.AlertController$ButtonHandler com.android.internal.app.AlertController$RecycleListView com.android.internal.app.AlertController com.android.internal.app.AssistUtils +com.android.internal.app.IAppOpsActiveCallback$Stub$Proxy com.android.internal.app.IAppOpsActiveCallback$Stub com.android.internal.app.IAppOpsActiveCallback com.android.internal.app.IAppOpsAsyncNotedCallback$Stub @@ -11363,6 +11482,7 @@ com.android.internal.appwidget.IAppWidgetHost com.android.internal.appwidget.IAppWidgetService$Stub$Proxy com.android.internal.appwidget.IAppWidgetService$Stub com.android.internal.appwidget.IAppWidgetService +com.android.internal.backup.IBackupTransport$Stub$Proxy com.android.internal.backup.IBackupTransport$Stub com.android.internal.backup.IBackupTransport com.android.internal.colorextraction.ColorExtractor$GradientColors @@ -11547,6 +11667,7 @@ com.android.internal.inputmethod.IInputMethodClient com.android.internal.inputmethod.IInputMethodPrivilegedOperations$Stub$Proxy com.android.internal.inputmethod.IInputMethodPrivilegedOperations$Stub com.android.internal.inputmethod.IInputMethodPrivilegedOperations +com.android.internal.inputmethod.IInputMethodSession$Stub$Proxy com.android.internal.inputmethod.IInputMethodSession$Stub com.android.internal.inputmethod.IInputMethodSession com.android.internal.inputmethod.IRemoteAccessibilityInputConnection$Stub @@ -11556,6 +11677,9 @@ com.android.internal.inputmethod.IRemoteInputConnection$Stub com.android.internal.inputmethod.IRemoteInputConnection com.android.internal.inputmethod.ImeTracing com.android.internal.inputmethod.ImeTracingClientImpl +com.android.internal.inputmethod.ImeTracingPerfettoImpl$$ExternalSyntheticLambda3 +com.android.internal.inputmethod.ImeTracingPerfettoImpl$$ExternalSyntheticLambda4 +com.android.internal.inputmethod.ImeTracingPerfettoImpl com.android.internal.inputmethod.ImeTracingServerImpl com.android.internal.inputmethod.InputBindResult$1 com.android.internal.inputmethod.InputBindResult-IA @@ -11683,6 +11807,7 @@ com.android.internal.os.CachedDeviceState$Readonly com.android.internal.os.CachedDeviceState$TimeInStateStopwatch com.android.internal.os.CachedDeviceState com.android.internal.os.ClassLoaderFactory +com.android.internal.os.Clock$1 com.android.internal.os.Clock com.android.internal.os.DebugStore$DebugStoreNative com.android.internal.os.DebugStore$DebugStoreNativeImpl @@ -11758,6 +11883,8 @@ com.android.internal.os.ProcessCpuTracker$1 com.android.internal.os.ProcessCpuTracker$FilterStats com.android.internal.os.ProcessCpuTracker$Stats com.android.internal.os.ProcessCpuTracker +com.android.internal.os.ProcfsMemoryUtil$MemorySnapshot +com.android.internal.os.ProcfsMemoryUtil com.android.internal.os.RailStats com.android.internal.os.RoSystemProperties com.android.internal.os.RpmStats$PowerStateElement @@ -11870,8 +11997,14 @@ com.android.internal.protolog.PerfettoProtoLogImpl$$ExternalSyntheticLambda6 com.android.internal.protolog.PerfettoProtoLogImpl com.android.internal.protolog.ProtoLog com.android.internal.protolog.ProtoLogCacheUpdater +com.android.internal.protolog.ProtoLogDataSource$$ExternalSyntheticLambda0 +com.android.internal.protolog.ProtoLogDataSource$$ExternalSyntheticLambda1 +com.android.internal.protolog.ProtoLogDataSource$$ExternalSyntheticLambda2 +com.android.internal.protolog.ProtoLogDataSource$GroupConfig com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStartCallback com.android.internal.protolog.ProtoLogDataSource$Instance$TracingInstanceStopCallback +com.android.internal.protolog.ProtoLogDataSource$Instance +com.android.internal.protolog.ProtoLogDataSource$ProtoLogConfig com.android.internal.protolog.ProtoLogDataSource com.android.internal.protolog.ProtoLogGroup com.android.internal.protolog.ProtoLogImpl @@ -12014,6 +12147,7 @@ com.android.internal.telephony.CellBroadcastUtils com.android.internal.telephony.CellNetworkScanResult$1 com.android.internal.telephony.CellNetworkScanResult com.android.internal.telephony.CellularNetworkService$CellularNetworkServiceProvider$1 +com.android.internal.telephony.CellularNetworkService$CellularNetworkServiceProvider com.android.internal.telephony.CellularNetworkService com.android.internal.telephony.ClientWakelockAccountant com.android.internal.telephony.ClientWakelockTracker @@ -12101,6 +12235,7 @@ com.android.internal.telephony.IMms com.android.internal.telephony.INumberVerificationCallback$Stub$Proxy com.android.internal.telephony.INumberVerificationCallback$Stub com.android.internal.telephony.INumberVerificationCallback +com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub$Proxy com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub com.android.internal.telephony.IOnSubscriptionsChangedListener com.android.internal.telephony.IOns$Stub$Proxy @@ -12206,6 +12341,7 @@ com.android.internal.telephony.NetworkFactoryLegacyImpl$1 com.android.internal.telephony.NetworkFactoryLegacyImpl$NetworkRequestInfo com.android.internal.telephony.NetworkFactoryLegacyImpl com.android.internal.telephony.NetworkFactoryShim +com.android.internal.telephony.NetworkRegistrationManager$NetworkRegStateCallback com.android.internal.telephony.NetworkRegistrationManager$NetworkServiceConnection com.android.internal.telephony.NetworkRegistrationManager$RegManagerDeathRecipient com.android.internal.telephony.NetworkRegistrationManager @@ -12291,6 +12427,7 @@ com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda8 com.android.internal.telephony.PhoneSubInfoController$$ExternalSyntheticLambda9 com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper +com.android.internal.telephony.PhoneSubInfoController com.android.internal.telephony.ProxyController$1 com.android.internal.telephony.ProxyController com.android.internal.telephony.RIL$RadioProxyDeathRecipient @@ -12863,6 +13000,7 @@ com.android.internal.telephony.imsphone.ImsPhoneCallTracker$HoldSwapState com.android.internal.telephony.imsphone.ImsPhoneCallTracker$MmTelFeatureListener com.android.internal.telephony.imsphone.ImsPhoneCallTracker$PhoneStateListener com.android.internal.telephony.imsphone.ImsPhoneCallTracker$SharedPreferenceProxy +com.android.internal.telephony.imsphone.ImsPhoneCallTracker$VtDataUsageProvider com.android.internal.telephony.imsphone.ImsPhoneCallTracker com.android.internal.telephony.imsphone.ImsPhoneCommandInterface com.android.internal.telephony.imsphone.ImsPhoneConnection$$ExternalSyntheticLambda0 @@ -13399,6 +13537,7 @@ com.android.internal.util.ExponentiallyBucketedHistogram com.android.internal.util.FastMath com.android.internal.util.FastPrintWriter$DummyWriter com.android.internal.util.FastPrintWriter-IA +com.android.internal.util.FastPrintWriter com.android.internal.util.FastXmlSerializer com.android.internal.util.FileRotator$FileInfo com.android.internal.util.FileRotator$Reader @@ -13419,6 +13558,7 @@ com.android.internal.util.HeavyHitterSketch com.android.internal.util.HexDump com.android.internal.util.IState com.android.internal.util.ImageUtils +com.android.internal.util.IndentingPrintWriter com.android.internal.util.IntPair com.android.internal.util.JournaledFile com.android.internal.util.LatencyTracker$$ExternalSyntheticLambda0 @@ -13488,6 +13628,7 @@ com.android.internal.util.WakeupMessage com.android.internal.util.XmlPullParserWrapper com.android.internal.util.XmlSerializerWrapper com.android.internal.util.XmlUtils$ForcedTypedXmlPullParser +com.android.internal.util.XmlUtils$ForcedTypedXmlSerializer com.android.internal.util.XmlUtils$ReadMapCallback com.android.internal.util.XmlUtils$WriteMapCallback com.android.internal.util.XmlUtils @@ -13533,6 +13674,7 @@ com.android.internal.util.function.pooled.PooledLambda com.android.internal.util.function.pooled.PooledLambdaImpl$LambdaType$ReturnType com.android.internal.util.function.pooled.PooledLambdaImpl$LambdaType com.android.internal.util.function.pooled.PooledLambdaImpl$Pool +com.android.internal.util.function.pooled.PooledLambdaImpl com.android.internal.util.function.pooled.PooledPredicate com.android.internal.util.function.pooled.PooledRunnable com.android.internal.util.function.pooled.PooledSupplier$OfDouble @@ -14025,6 +14167,7 @@ com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA com.android.org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi +com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.BCDSAPublicKey com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.DSAUtil com.android.org.bouncycastle.jcajce.provider.asymmetric.dsa.KeyFactorySpi com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi$NoPadding @@ -14134,8 +14277,13 @@ com.android.org.bouncycastle.util.encoders.Encoder com.android.org.bouncycastle.util.encoders.Hex com.android.org.bouncycastle.util.encoders.HexEncoder com.android.org.bouncycastle.util.io.Streams +com.android.org.conscrypt.OpenSSLRSAPublicKey +com.android.org.conscrypt.OpenSSLX509Certificate com.android.org.kxml2.io.KXmlParser$ContentSource com.android.org.kxml2.io.KXmlParser$ValueContext +com.android.org.kxml2.io.KXmlParser +com.android.org.kxml2.io.KXmlSerializer +com.android.os.coregraphics.HwuiStatsLog com.android.phone.ecc.nano.CodedInputByteBufferNano com.android.phone.ecc.nano.CodedOutputByteBufferNano$OutOfSpaceException com.android.phone.ecc.nano.CodedOutputByteBufferNano @@ -14303,6 +14451,7 @@ dalvik.annotation.optimization.NeverInline dalvik.system.AppSpecializationHooks dalvik.system.BaseDexClassLoader$Reporter dalvik.system.BaseDexClassLoader +dalvik.system.BlockGuard$1 dalvik.system.BlockGuard$2 dalvik.system.BlockGuard$3 dalvik.system.BlockGuard$BlockGuardPolicyException @@ -14761,6 +14910,7 @@ java.awt.font.NumericShaper java.awt.font.TextAttribute java.io.Bits java.io.BufferedInputStream +java.io.BufferedOutputStream java.io.BufferedReader java.io.BufferedWriter java.io.ByteArrayInputStream @@ -14827,6 +14977,7 @@ java.io.ObjectOutputStream$Caches java.io.ObjectOutputStream$DebugTraceInfoStack java.io.ObjectOutputStream$HandleTable java.io.ObjectOutputStream$PutField +java.io.ObjectOutputStream$PutFieldImpl java.io.ObjectOutputStream$ReplaceTable java.io.ObjectOutputStream java.io.ObjectStreamClass$$ExternalSyntheticLambda0 @@ -15039,6 +15190,7 @@ java.lang.Thread$WeakClassKey java.lang.Thread java.lang.ThreadDeath java.lang.ThreadGroup +java.lang.ThreadLocal$SuppliedThreadLocal java.lang.ThreadLocal$ThreadLocalMap$Entry java.lang.ThreadLocal$ThreadLocalMap java.lang.ThreadLocal-IA @@ -15054,8 +15206,10 @@ java.lang.UNIXProcess$1 java.lang.UNIXProcess$2 java.lang.UNIXProcess$3 java.lang.UNIXProcess$ProcessPipeInputStream +java.lang.UNIXProcess$ProcessPipeOutputStream java.lang.UNIXProcess$ProcessReaperThreadFactory$1 java.lang.UNIXProcess$ProcessReaperThreadFactory +java.lang.UNIXProcess java.lang.UnsatisfiedLinkError java.lang.UnsupportedClassVersionError java.lang.UnsupportedOperationException @@ -15310,8 +15464,10 @@ java.net.SocketAddress java.net.SocketException java.net.SocketImpl java.net.SocketImplFactory +java.net.SocketInputStream java.net.SocketOption java.net.SocketOptions +java.net.SocketOutputStream java.net.SocketPermission java.net.SocketTimeoutException java.net.SocksConsts @@ -15338,12 +15494,18 @@ java.nio.BufferUnderflowException java.nio.ByteBuffer java.nio.ByteBufferAsCharBuffer java.nio.ByteBufferAsDoubleBuffer +java.nio.ByteBufferAsFloatBuffer +java.nio.ByteBufferAsIntBuffer +java.nio.ByteBufferAsLongBuffer java.nio.ByteBufferAsShortBuffer java.nio.ByteOrder java.nio.CharBuffer java.nio.DirectByteBuffer$MemoryRef +java.nio.DirectByteBuffer java.nio.DoubleBuffer java.nio.FloatBuffer +java.nio.HeapByteBuffer +java.nio.HeapCharBuffer java.nio.HeapIntBuffer java.nio.IntBuffer java.nio.InvalidMarkException @@ -15495,6 +15657,7 @@ java.security.KeyStore$TrustedCertificateEntry java.security.KeyStore java.security.KeyStoreException java.security.KeyStoreSpi +java.security.MessageDigest$Delegate java.security.MessageDigest java.security.MessageDigestSpi java.security.NoSuchAlgorithmException @@ -15656,6 +15819,7 @@ java.text.ParsePosition java.text.RuleBasedCollator java.text.SimpleDateFormat java.text.StringCharacterIterator +java.time.Clock$SystemClock java.time.Clock java.time.DateTimeException java.time.DayOfWeek @@ -15674,6 +15838,7 @@ java.time.Period java.time.Year java.time.ZoneId java.time.ZoneOffset +java.time.ZoneRegion java.time.ZonedDateTime$$ExternalSyntheticLambda0 java.time.ZonedDateTime$1 java.time.ZonedDateTime @@ -15764,6 +15929,7 @@ java.time.zone.ZoneRules java.time.zone.ZoneRulesException java.time.zone.ZoneRulesProvider java.util.AbstractCollection +java.util.AbstractList$Itr java.util.AbstractList$ListItr java.util.AbstractList$RandomAccessSpliterator java.util.AbstractList$RandomAccessSubList @@ -15773,6 +15939,7 @@ java.util.AbstractList-IA java.util.AbstractList java.util.AbstractMap$1 java.util.AbstractMap$2$1 +java.util.AbstractMap$2 java.util.AbstractMap$SimpleEntry java.util.AbstractMap$SimpleImmutableEntry java.util.AbstractMap$ViewCollection @@ -15781,10 +15948,15 @@ java.util.AbstractQueue java.util.AbstractSequentialList java.util.AbstractSet java.util.ArrayDeque$$ExternalSyntheticLambda1 +java.util.ArrayDeque$DeqIterator +java.util.ArrayDeque$DescendingIterator java.util.ArrayDeque java.util.ArrayList$ArrayListSpliterator +java.util.ArrayList$Itr java.util.ArrayList$ListItr +java.util.ArrayList$SubList$1 java.util.ArrayList$SubList$2 +java.util.ArrayList$SubList java.util.ArrayList java.util.ArrayPrefixHelpers$CumulateTask java.util.ArrayPrefixHelpers$DoubleCumulateTask @@ -15794,6 +15966,8 @@ java.util.Arrays$$ExternalSyntheticLambda0 java.util.Arrays$$ExternalSyntheticLambda1 java.util.Arrays$$ExternalSyntheticLambda2 java.util.Arrays$$ExternalSyntheticLambda3 +java.util.Arrays$ArrayItr +java.util.Arrays$ArrayList java.util.Arrays$NaturalOrder java.util.Arrays java.util.ArraysParallelSortHelpers$FJObject$Sorter @@ -15805,7 +15979,9 @@ java.util.Calendar$$ExternalSyntheticLambda0 java.util.Calendar$Builder java.util.Calendar java.util.Collection +java.util.Collections$1 java.util.Collections$2 +java.util.Collections$3 java.util.Collections$AsLIFOQueue java.util.Collections$CheckedCollection java.util.Collections$CheckedList @@ -15819,29 +15995,50 @@ java.util.Collections$CheckedSortedMap java.util.Collections$CheckedSortedSet java.util.Collections$CopiesList java.util.Collections$EmptyEnumeration +java.util.Collections$EmptyIterator +java.util.Collections$EmptyList java.util.Collections$EmptyListIterator +java.util.Collections$EmptyMap +java.util.Collections$EmptySet java.util.Collections$ReverseComparator2 java.util.Collections$ReverseComparator java.util.Collections$SequencedSetFromMap java.util.Collections$SetFromMap +java.util.Collections$SingletonList +java.util.Collections$SingletonMap +java.util.Collections$SingletonSet +java.util.Collections$SynchronizedCollection java.util.Collections$SynchronizedList +java.util.Collections$SynchronizedMap java.util.Collections$SynchronizedNavigableMap java.util.Collections$SynchronizedNavigableSet +java.util.Collections$SynchronizedRandomAccessList +java.util.Collections$SynchronizedSet java.util.Collections$SynchronizedSortedMap java.util.Collections$SynchronizedSortedSet +java.util.Collections$UnmodifiableCollection$1 +java.util.Collections$UnmodifiableCollection java.util.Collections$UnmodifiableList$1 java.util.Collections$UnmodifiableList +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1 +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet +java.util.Collections$UnmodifiableMap java.util.Collections$UnmodifiableNavigableMap$EmptyNavigableMap java.util.Collections$UnmodifiableNavigableMap java.util.Collections$UnmodifiableNavigableSet$EmptyNavigableSet java.util.Collections$UnmodifiableNavigableSet +java.util.Collections$UnmodifiableRandomAccessList java.util.Collections$UnmodifiableSequencedCollection java.util.Collections$UnmodifiableSequencedMap java.util.Collections$UnmodifiableSequencedSet +java.util.Collections$UnmodifiableSet java.util.Collections$UnmodifiableSortedMap +java.util.Collections$UnmodifiableSortedSet java.util.Collections-IA java.util.Collections java.util.ComparableTimSort +java.util.Comparator$$ExternalSyntheticLambda0 java.util.Comparator$$ExternalSyntheticLambda1 java.util.Comparator$$ExternalSyntheticLambda2 java.util.Comparator$$ExternalSyntheticLambda3 @@ -15888,15 +16085,25 @@ java.util.Formatter$FormatSpecifierParser java.util.Formatter$FormatString java.util.Formatter java.util.FormatterClosedException +java.util.GregorianCalendar +java.util.HashMap$EntryIterator +java.util.HashMap$EntrySet java.util.HashMap$EntrySpliterator java.util.HashMap$HashIterator java.util.HashMap$HashMapSpliterator +java.util.HashMap$KeyIterator +java.util.HashMap$KeySet java.util.HashMap$KeySpliterator +java.util.HashMap$Node +java.util.HashMap$TreeNode java.util.HashMap$UnsafeHolder +java.util.HashMap$ValueIterator java.util.HashMap$ValueSpliterator +java.util.HashMap$Values java.util.HashMap java.util.HashSet java.util.Hashtable$EntrySet +java.util.Hashtable$Enumerator java.util.Hashtable$HashtableEntry java.util.Hashtable$KeySet java.util.Hashtable$ValueCollection @@ -15927,9 +16134,16 @@ java.util.ImmutableCollections$AbstractImmutableMap java.util.ImmutableCollections$AbstractImmutableSet java.util.ImmutableCollections$Access$1 java.util.ImmutableCollections$Access +java.util.ImmutableCollections$List12 +java.util.ImmutableCollections$ListItr +java.util.ImmutableCollections$ListN +java.util.ImmutableCollections$Map1 java.util.ImmutableCollections$MapN$1 java.util.ImmutableCollections$MapN$MapNIterator +java.util.ImmutableCollections$MapN +java.util.ImmutableCollections$Set12 java.util.ImmutableCollections$SetN$SetNIterator +java.util.ImmutableCollections$SetN java.util.ImmutableCollections$SubList java.util.ImmutableCollections-IA java.util.InputMismatchException @@ -15937,10 +16151,19 @@ java.util.Iterator java.util.JumboEnumSet$EnumSetIterator java.util.JumboEnumSet java.util.KeyValueHolder +java.util.LinkedHashMap$Entry +java.util.LinkedHashMap$LinkedEntryIterator +java.util.LinkedHashMap$LinkedEntrySet java.util.LinkedHashMap$LinkedHashIterator +java.util.LinkedHashMap$LinkedKeyIterator +java.util.LinkedHashMap$LinkedKeySet +java.util.LinkedHashMap$LinkedValueIterator +java.util.LinkedHashMap$LinkedValues java.util.LinkedHashMap$ReversedLinkedHashMapView java.util.LinkedHashMap java.util.LinkedHashSet +java.util.LinkedList$DescendingIterator +java.util.LinkedList$ListItr java.util.LinkedList$Node java.util.LinkedList java.util.List @@ -15977,6 +16200,7 @@ java.util.OptionalInt java.util.PrimitiveIterator$OfInt$$ExternalSyntheticLambda0 java.util.PrimitiveIterator$OfInt java.util.PrimitiveIterator +java.util.PriorityQueue$Itr java.util.PriorityQueue java.util.Properties$EntrySet java.util.Properties$LineReader @@ -16048,13 +16272,18 @@ java.util.TooManyListenersException java.util.TreeMap$AscendingSubMap$AscendingEntrySetView java.util.TreeMap$AscendingSubMap java.util.TreeMap$DescendingSubMap +java.util.TreeMap$EntryIterator +java.util.TreeMap$EntrySet +java.util.TreeMap$KeyIterator java.util.TreeMap$KeySet java.util.TreeMap$NavigableSubMap$DescendingSubMapKeyIterator java.util.TreeMap$NavigableSubMap$EntrySetView java.util.TreeMap$NavigableSubMap$SubMapEntryIterator java.util.TreeMap$NavigableSubMap$SubMapIterator +java.util.TreeMap$NavigableSubMap$SubMapKeyIterator java.util.TreeMap$NavigableSubMap java.util.TreeMap$PrivateEntryIterator +java.util.TreeMap$TreeMapEntry java.util.TreeMap$ValueIterator java.util.TreeMap$Values java.util.TreeMap @@ -16073,6 +16302,8 @@ java.util.WeakHashMap$Entry java.util.WeakHashMap$EntryIterator java.util.WeakHashMap$EntrySet java.util.WeakHashMap$HashIterator +java.util.WeakHashMap$KeyIterator +java.util.WeakHashMap$KeySet java.util.WeakHashMap$ValueIterator java.util.WeakHashMap$Values java.util.WeakHashMap-IA @@ -16099,6 +16330,8 @@ java.util.concurrent.ConcurrentHashMap$BaseIterator java.util.concurrent.ConcurrentHashMap$BulkTask java.util.concurrent.ConcurrentHashMap$CollectionView java.util.concurrent.ConcurrentHashMap$CounterCell +java.util.concurrent.ConcurrentHashMap$EntryIterator +java.util.concurrent.ConcurrentHashMap$EntrySetView java.util.concurrent.ConcurrentHashMap$ForEachEntryTask java.util.concurrent.ConcurrentHashMap$ForEachKeyTask java.util.concurrent.ConcurrentHashMap$ForEachMappingTask @@ -16111,6 +16344,7 @@ java.util.concurrent.ConcurrentHashMap$ForwardingNode java.util.concurrent.ConcurrentHashMap$KeyIterator java.util.concurrent.ConcurrentHashMap$KeySetView java.util.concurrent.ConcurrentHashMap$KeySpliterator +java.util.concurrent.ConcurrentHashMap$MapEntry java.util.concurrent.ConcurrentHashMap$MapReduceEntriesTask java.util.concurrent.ConcurrentHashMap$MapReduceEntriesToDoubleTask java.util.concurrent.ConcurrentHashMap$MapReduceEntriesToIntTask @@ -16141,11 +16375,14 @@ java.util.concurrent.ConcurrentHashMap$TableStack java.util.concurrent.ConcurrentHashMap$Traverser java.util.concurrent.ConcurrentHashMap$TreeBin java.util.concurrent.ConcurrentHashMap$TreeNode +java.util.concurrent.ConcurrentHashMap$ValueIterator +java.util.concurrent.ConcurrentHashMap$ValuesView java.util.concurrent.ConcurrentHashMap java.util.concurrent.ConcurrentLinkedDeque$Node java.util.concurrent.ConcurrentLinkedDeque java.util.concurrent.ConcurrentLinkedQueue$$ExternalSyntheticLambda0 java.util.concurrent.ConcurrentLinkedQueue$$ExternalSyntheticLambda2 +java.util.concurrent.ConcurrentLinkedQueue$Itr java.util.concurrent.ConcurrentLinkedQueue$Node java.util.concurrent.ConcurrentLinkedQueue java.util.concurrent.ConcurrentMap$$ExternalSyntheticLambda0 @@ -16160,6 +16397,8 @@ java.util.concurrent.ConcurrentSkipListMap$Values java.util.concurrent.ConcurrentSkipListMap java.util.concurrent.ConcurrentSkipListSet java.util.concurrent.CopyOnWriteArrayList$$ExternalSyntheticLambda2 +java.util.concurrent.CopyOnWriteArrayList$COWIterator +java.util.concurrent.CopyOnWriteArrayList java.util.concurrent.CopyOnWriteArraySet java.util.concurrent.CountDownLatch$Sync java.util.concurrent.CountDownLatch @@ -16170,8 +16409,11 @@ java.util.concurrent.ExecutionException java.util.concurrent.Executor java.util.concurrent.ExecutorService java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$ExternalSyntheticLambda0 +java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService$$ExternalSyntheticLambda1 +java.util.concurrent.Executors$AutoShutdownDelegatedExecutorService java.util.concurrent.Executors$DefaultThreadFactory java.util.concurrent.Executors$DelegatedExecutorService +java.util.concurrent.Executors$DelegatedScheduledExecutorService java.util.concurrent.Executors$RunnableAdapter java.util.concurrent.Executors java.util.concurrent.ForkJoinPool$1 @@ -16206,6 +16448,8 @@ java.util.concurrent.ScheduledExecutorService java.util.concurrent.ScheduledFuture java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue +java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask +java.util.concurrent.ScheduledThreadPoolExecutor java.util.concurrent.Semaphore$FairSync java.util.concurrent.Semaphore$NonfairSync java.util.concurrent.Semaphore$Sync @@ -16216,6 +16460,7 @@ java.util.concurrent.ThreadFactory java.util.concurrent.ThreadPoolExecutor$AbortPolicy java.util.concurrent.ThreadPoolExecutor$DiscardPolicy java.util.concurrent.ThreadPoolExecutor$Worker +java.util.concurrent.ThreadPoolExecutor java.util.concurrent.TimeUnit$1 java.util.concurrent.TimeUnit java.util.concurrent.TimeoutException @@ -16255,9 +16500,11 @@ java.util.concurrent.locks.ReentrantLock$Sync java.util.concurrent.locks.ReentrantLock java.util.concurrent.locks.ReentrantReadWriteLock$FairSync java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync +java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock java.util.concurrent.locks.ReentrantReadWriteLock$Sync$HoldCounter java.util.concurrent.locks.ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter java.util.concurrent.locks.ReentrantReadWriteLock$Sync +java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock java.util.concurrent.locks.ReentrantReadWriteLock java.util.function.BiConsumer java.util.function.BiFunction$$ExternalSyntheticLambda0 @@ -16273,6 +16520,7 @@ java.util.function.DoubleConsumer java.util.function.DoubleSupplier java.util.function.DoubleUnaryOperator$$ExternalSyntheticLambda0 java.util.function.DoubleUnaryOperator$$ExternalSyntheticLambda1 +java.util.function.DoubleUnaryOperator$$ExternalSyntheticLambda2 java.util.function.DoubleUnaryOperator java.util.function.Function$$ExternalSyntheticLambda0 java.util.function.Function$$ExternalSyntheticLambda1 @@ -16426,6 +16674,7 @@ java.util.stream.Collectors$CollectorImpl java.util.stream.Collectors java.util.stream.DistinctOps$1$1 java.util.stream.DistinctOps$1$2 +java.util.stream.DistinctOps$1 java.util.stream.DistinctOps java.util.stream.DoublePipeline$$ExternalSyntheticLambda0 java.util.stream.DoublePipeline$$ExternalSyntheticLambda4 @@ -16457,8 +16706,12 @@ java.util.stream.IntPipeline$$ExternalSyntheticLambda5 java.util.stream.IntPipeline$$ExternalSyntheticLambda7 java.util.stream.IntPipeline$$ExternalSyntheticLambda8 java.util.stream.IntPipeline$1$1 +java.util.stream.IntPipeline$10 +java.util.stream.IntPipeline$1 java.util.stream.IntPipeline$4$1 +java.util.stream.IntPipeline$4 java.util.stream.IntPipeline$9 +java.util.stream.IntPipeline$Head java.util.stream.IntPipeline$StatelessOp java.util.stream.IntPipeline java.util.stream.IntStream @@ -16529,14 +16782,18 @@ java.util.stream.ReferencePipeline$$ExternalSyntheticLambda1 java.util.stream.ReferencePipeline$15$1 java.util.stream.ReferencePipeline$15 java.util.stream.ReferencePipeline$2$1 +java.util.stream.ReferencePipeline$2 java.util.stream.ReferencePipeline$3$1 +java.util.stream.ReferencePipeline$3 java.util.stream.ReferencePipeline$4$1 +java.util.stream.ReferencePipeline$4 java.util.stream.ReferencePipeline$5$1 java.util.stream.ReferencePipeline$5 java.util.stream.ReferencePipeline$6$1 java.util.stream.ReferencePipeline$6 java.util.stream.ReferencePipeline$7$1 java.util.stream.ReferencePipeline$7 +java.util.stream.ReferencePipeline$Head java.util.stream.ReferencePipeline$StatefulOp java.util.stream.ReferencePipeline$StatelessOp java.util.stream.ReferencePipeline @@ -16550,6 +16807,7 @@ java.util.stream.SliceOps$1$1 java.util.stream.SliceOps$1 java.util.stream.SliceOps java.util.stream.SortedOps$AbstractRefSortingSink +java.util.stream.SortedOps$OfRef java.util.stream.SortedOps$RefSortingSink$$ExternalSyntheticLambda0 java.util.stream.SortedOps$RefSortingSink java.util.stream.SortedOps$SizedRefSortingSink @@ -16875,6 +17133,7 @@ jdk.internal.misc.UnsafeConstants jdk.internal.misc.VM jdk.internal.misc.VirtualThreads jdk.internal.ref.CleanerFactory +jdk.internal.ref.CleanerImpl$PhantomCleanableRef jdk.internal.ref.CleanerImpl jdk.internal.ref.PhantomCleanable jdk.internal.reflect.Reflection @@ -16975,6 +17234,7 @@ libcore.util.NativeAllocationRegistry libcore.util.Objects libcore.util.SneakyThrow libcore.util.XmlObjectFactory +libcore.util.ZoneInfo org.apache.harmony.dalvik.ddmc.Chunk org.apache.harmony.dalvik.ddmc.ChunkHandler org.apache.harmony.dalvik.ddmc.DdmServer @@ -17021,6 +17281,7 @@ org.apache.http.conn.ssl.X509HostnameVerifier org.apache.http.params.CoreConnectionPNames org.apache.http.params.HttpConnectionParams org.apache.http.params.HttpParams +org.ccil.cowan.tagsoup.AttributesImpl org.ccil.cowan.tagsoup.AutoDetector org.ccil.cowan.tagsoup.CommandLine org.ccil.cowan.tagsoup.Element @@ -17137,6 +17398,7 @@ sun.nio.ch.DirectBuffer sun.nio.ch.FileChannelImpl$SimpleFileLockTable sun.nio.ch.FileChannelImpl$Unmapper sun.nio.ch.FileChannelImpl-IA +sun.nio.ch.FileChannelImpl sun.nio.ch.FileDescriptorHolderSocketImpl sun.nio.ch.FileDispatcher sun.nio.ch.FileDispatcherImpl @@ -17408,6 +17670,7 @@ sun.util.locale.BaseLocale-IA sun.util.locale.BaseLocale sun.util.locale.Extension sun.util.locale.InternalLocaleBuilder$CaseInsensitiveChar +sun.util.locale.InternalLocaleBuilder$CaseInsensitiveString sun.util.locale.InternalLocaleBuilder-IA sun.util.locale.InternalLocaleBuilder sun.util.locale.LanguageTag @@ -17865,6 +18128,7 @@ sun.util.logging.PlatformLogger [Landroid.widget.SpellChecker$SpellParser; [Landroid.widget.TextView$BufferType; [Landroid.widget.TextView$ChangeWatcher; +[Landroid.window.BackTouchTracker$TouchTrackerState; [Landroid.window.DesktopModeFlags$ToggleOverride; [Landroid.window.DesktopModeFlags; [Landroid.window.TransitionFilter$Requirement; @@ -17976,6 +18240,7 @@ sun.util.logging.PlatformLogger [Ljava.io.ObjectStreamClass$ClassDataSlot; [Ljava.io.ObjectStreamClass$MemberSignature; [Ljava.io.ObjectStreamField; +[Ljava.io.Serializable; [Ljava.lang.Boolean; [Ljava.lang.Byte; [Ljava.lang.CharSequence; @@ -17989,6 +18254,7 @@ sun.util.logging.PlatformLogger [Ljava.lang.Double; [Ljava.lang.Enum; [Ljava.lang.Integer; +[Ljava.lang.Iterable; [Ljava.lang.Long; [Ljava.lang.Number; [Ljava.lang.Object; @@ -18004,6 +18270,7 @@ sun.util.logging.PlatformLogger [Ljava.lang.Thread; [Ljava.lang.ThreadGroup; [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry; +[Ljava.lang.ThreadLocal; [Ljava.lang.Throwable; [Ljava.lang.Void; [Ljava.lang.annotation.Annotation; @@ -18085,6 +18352,7 @@ sun.util.logging.PlatformLogger [Ljava.time.zone.ZoneOffsetTransitionRule$TimeDefinition; [Ljava.time.zone.ZoneOffsetTransitionRule; [Ljava.util.ArrayList; +[Ljava.util.Comparator; [Ljava.util.Comparators$NaturalOrderComparator; [Ljava.util.Enumeration; [Ljava.util.Formatter$Flags; @@ -18097,7 +18365,9 @@ sun.util.logging.PlatformLogger [Ljava.util.Locale$IsoCountryCode; [Ljava.util.Locale; [Ljava.util.Map$Entry; +[Ljava.util.Set; [Ljava.util.TimerTask; +[Ljava.util.UUID; [Ljava.util.WeakHashMap$Entry; [Ljava.util.concurrent.ConcurrentHashMap$CounterCell; [Ljava.util.concurrent.ConcurrentHashMap$Node; @@ -18107,6 +18377,7 @@ sun.util.logging.PlatformLogger [Ljava.util.concurrent.Future$State; [Ljava.util.concurrent.RunnableScheduledFuture; [Ljava.util.concurrent.TimeUnit; +[Ljava.util.concurrent.atomic.AtomicReference; [Ljava.util.concurrent.atomic.Striped64$Cell; [Ljava.util.logging.Handler; [Ljava.util.prefs.AbstractPreferences; diff --git a/core/api/current.txt b/core/api/current.txt index 3539ec181b52..13127537e6d9 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -18112,7 +18112,7 @@ package android.graphics.drawable { method public void setThickness(@Px int); method public void setThicknessRatio(@FloatRange(from=0.0f, fromInclusive=false) float); method public void setUseLevel(boolean); - field @FlaggedApi("com.android.graphics.flags.gradient_drawable_shape_rounded_cap") public static final int ARC = 4; // 0x4 + field @FlaggedApi("com.android.graphics.flags.gradient_drawable_shape_arc_for_rounded_cap") public static final int ARC = 4; // 0x4 field public static final int LINE = 2; // 0x2 field public static final int LINEAR_GRADIENT = 0; // 0x0 field public static final int OVAL = 1; // 0x1 diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 3bd6451b4c95..248f191cb8b8 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -3437,6 +3437,15 @@ public class AppOpsManager { } /** + * Returns whether the provided {@code op} is a valid op code or not. + * + * @hide + */ + public static boolean isValidOp(int op) { + return op >= 0 && op < sAppOpInfos.length; + } + + /** * @hide */ public static int strDebugOpToOp(String op) { diff --git a/core/java/android/app/AutomaticZenRule.java b/core/java/android/app/AutomaticZenRule.java index fa977c93113a..2daa52b47102 100644 --- a/core/java/android/app/AutomaticZenRule.java +++ b/core/java/android/app/AutomaticZenRule.java @@ -228,7 +228,7 @@ public final class AutomaticZenRule implements Parcelable { public AutomaticZenRule(Parcel source) { enabled = source.readInt() == ENABLED; if (source.readInt() == ENABLED) { - name = getTrimmedString(source.readString()); + name = getTrimmedString(source.readString8()); } interruptionFilter = source.readInt(); conditionId = getTrimmedUri(source.readParcelable(null, android.net.Uri.class)); @@ -238,11 +238,11 @@ public final class AutomaticZenRule implements Parcelable { source.readParcelable(null, android.content.ComponentName.class)); creationTime = source.readLong(); mZenPolicy = source.readParcelable(null, ZenPolicy.class); - mPkg = source.readString(); + mPkg = source.readString8(); mDeviceEffects = source.readParcelable(null, ZenDeviceEffects.class); mAllowManualInvocation = source.readBoolean(); mIconResId = source.readInt(); - mTriggerDescription = getTrimmedString(source.readString(), MAX_DESC_LENGTH); + mTriggerDescription = getTrimmedString(source.readString8(), MAX_DESC_LENGTH); mType = source.readInt(); } @@ -514,7 +514,7 @@ public final class AutomaticZenRule implements Parcelable { dest.writeInt(enabled ? ENABLED : DISABLED); if (name != null) { dest.writeInt(1); - dest.writeString(name); + dest.writeString8(name); } else { dest.writeInt(0); } @@ -524,11 +524,11 @@ public final class AutomaticZenRule implements Parcelable { dest.writeParcelable(configurationActivity, 0); dest.writeLong(creationTime); dest.writeParcelable(mZenPolicy, 0); - dest.writeString(mPkg); + dest.writeString8(mPkg); dest.writeParcelable(mDeviceEffects, 0); dest.writeBoolean(mAllowManualInvocation); dest.writeInt(mIconResId); - dest.writeString(mTriggerDescription); + dest.writeString8(mTriggerDescription); dest.writeInt(mType); } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 719e4389d92d..1b71e73db852 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -25,6 +25,9 @@ import static android.app.admin.DevicePolicyResources.Drawables.WORK_PROFILE_ICO import static android.app.admin.DevicePolicyResources.UNDEFINED; import static android.graphics.drawable.Icon.TYPE_URI; import static android.graphics.drawable.Icon.TYPE_URI_ADAPTIVE_BITMAP; +import static android.util.TypedValue.COMPLEX_UNIT_PX; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static java.util.Objects.requireNonNull; @@ -6001,6 +6004,8 @@ public class Notification implements Parcelable contentView.setViewVisibility(p.mTextViewId, View.GONE); contentView.setTextViewText(p.mTextViewId, null); } + + updateExpanderAlignment(contentView, p, hasSecondLine); setHeaderlessVerticalMargins(contentView, p, hasSecondLine); // Update margins to leave space for the top line (but not for headerless views like @@ -6010,12 +6015,29 @@ public class Notification implements Parcelable int margin = getContentMarginTop(mContext, R.dimen.notification_2025_content_margin_top); contentView.setViewLayoutMargin(R.id.notification_main_column, - RemoteViews.MARGIN_TOP, margin, TypedValue.COMPLEX_UNIT_PX); + RemoteViews.MARGIN_TOP, margin, COMPLEX_UNIT_PX); } return contentView; } + private static void updateExpanderAlignment(RemoteViews contentView, + StandardTemplateParams p, boolean hasSecondLine) { + if (notificationsRedesignTemplates() && p.mHeaderless) { + if (!hasSecondLine) { + // If there's no text, let's center the expand button vertically to align things + // more nicely. This is handled separately for notifications that use a + // NotificationHeaderView, see NotificationHeaderView#centerTopLine. + contentView.setViewLayoutHeight(R.id.expand_button, MATCH_PARENT, + COMPLEX_UNIT_PX); + } else { + // Otherwise, just use the default height for the button to keep it top-aligned. + contentView.setViewLayoutHeight(R.id.expand_button, WRAP_CONTENT, + COMPLEX_UNIT_PX); + } + } + } + private static void setHeaderlessVerticalMargins(RemoteViews contentView, StandardTemplateParams p, boolean hasSecondLine) { if (Flags.notificationsRedesignTemplates() || !p.mHeaderless) { @@ -9560,7 +9582,7 @@ public class Notification implements Parcelable int marginStart = res.getDimensionPixelSize( R.dimen.notification_2025_content_margin_start); contentView.setViewLayoutMargin(R.id.title, - RemoteViews.MARGIN_START, marginStart, TypedValue.COMPLEX_UNIT_PX); + RemoteViews.MARGIN_START, marginStart, COMPLEX_UNIT_PX); } if (isLegacyHeaderless) { // Collapsed legacy messaging style has a 1-line limit. diff --git a/core/java/android/app/OWNERS b/core/java/android/app/OWNERS index 7a811a1cdfb8..5b0cf1158d99 100644 --- a/core/java/android/app/OWNERS +++ b/core/java/android/app/OWNERS @@ -132,7 +132,7 @@ per-file Window* = file:/services/core/java/com/android/server/wm/OWNERS per-file ConfigurationController.java = file:/services/core/java/com/android/server/wm/OWNERS per-file *ScreenCapture* = file:/services/core/java/com/android/server/wm/OWNERS per-file ComponentOptions.java = file:/services/core/java/com/android/server/wm/OWNERS - +per-file Presentation.java = file:/services/core/java/com/android/server/wm/OWNERS # Multitasking per-file multitasking.aconfig = file:/services/core/java/com/android/server/wm/OWNERS diff --git a/core/java/android/app/Presentation.java b/core/java/android/app/Presentation.java index bdab39dcd2ac..f39e2dd8cfa2 100644 --- a/core/java/android/app/Presentation.java +++ b/core/java/android/app/Presentation.java @@ -20,6 +20,8 @@ import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE; import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION; import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION; +import static com.android.window.flags.Flags.enablePresentationForConnectedDisplays; + import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; @@ -34,6 +36,8 @@ import android.view.ContextThemeWrapper; import android.view.Display; import android.view.Gravity; import android.view.Window; +import android.view.WindowInsets; +import android.view.WindowInsetsController; import android.view.WindowManager; import android.view.WindowManager.LayoutParams.WindowType; @@ -277,6 +281,11 @@ public class Presentation extends Dialog { @Override public void show() { super.show(); + + WindowInsetsController controller = getWindow().getInsetsController(); + if (controller != null && enablePresentationForConnectedDisplays()) { + controller.hide(WindowInsets.Type.systemBars()); + } } /** diff --git a/core/java/android/app/TEST_MAPPING b/core/java/android/app/TEST_MAPPING index e93d8bdb9c57..3a02188e5a23 100644 --- a/core/java/android/app/TEST_MAPPING +++ b/core/java/android/app/TEST_MAPPING @@ -169,6 +169,23 @@ "name": "CtsWindowManagerBackgroundActivityTestCases" } ], + // v2/sysui/suite/test-mapping-sysui-screenshot-test + "sysui-screenshot-test": [ + { + "name": "SystemUIGoogleScreenshotTests", + "options": [ + { + "exclude-annotation": "org.junit.Ignore" + }, + { + "exclude-annotation": "androidx.test.filters.FlakyTest" + }, + { + "exclude-annotation": "android.platform.test.annotations.Postsubmit" + } + ] + } + ], "postsubmit": [ { "file_patterns": ["(/|^)ActivityThreadClientTest.java"], diff --git a/core/java/android/app/contentsuggestions/OWNERS b/core/java/android/app/contentsuggestions/OWNERS index 5f8de77c9dda..3d21a6a2b58f 100644 --- a/core/java/android/app/contentsuggestions/OWNERS +++ b/core/java/android/app/contentsuggestions/OWNERS @@ -1,4 +1,3 @@ # Bug component: 643919 hackz@google.com -volnov@google.com diff --git a/core/java/android/app/people/OWNERS b/core/java/android/app/people/OWNERS index 7371a88df237..399511a0e0cb 100644 --- a/core/java/android/app/people/OWNERS +++ b/core/java/android/app/people/OWNERS @@ -1,4 +1,3 @@ # Bug component: 978868 -danningc@google.com -juliacr@google.com
\ No newline at end of file +juliacr@google.com diff --git a/core/java/android/app/wearable/OWNERS b/core/java/android/app/wearable/OWNERS index 497eaf0e40f1..56c8ca57a293 100644 --- a/core/java/android/app/wearable/OWNERS +++ b/core/java/android/app/wearable/OWNERS @@ -2,4 +2,3 @@ charliewang@google.com hackz@google.com oni@google.com tomchan@google.com -volnov@google.com
\ No newline at end of file diff --git a/core/java/android/companion/virtual/flags/flags.aconfig b/core/java/android/companion/virtual/flags/flags.aconfig index 67ade79e1b94..0085e4f42397 100644 --- a/core/java/android/companion/virtual/flags/flags.aconfig +++ b/core/java/android/companion/virtual/flags/flags.aconfig @@ -143,3 +143,10 @@ flag { is_fixed_read_only: true bug: "370928384" } + +flag { + name: "device_aware_settings_override" + namespace: "virtual_devices" + description: "Settings override for virtual devices" + bug: "371801645" +} diff --git a/core/java/android/content/integrity/OWNERS b/core/java/android/content/integrity/OWNERS index 20c758aedd67..ca65fdab99b1 100644 --- a/core/java/android/content/integrity/OWNERS +++ b/core/java/android/content/integrity/OWNERS @@ -1,5 +1,4 @@ # Bug component: 722021 toddke@android.com -toddke@google.com patb@google.com diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index e6450606d450..fd59ea9d18fb 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -1347,6 +1347,33 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { 314961188L; /** + * Excludes the packages the override is applied to from the camera compatibility treatment for + * fixed-orientation apps, which simulates running on a portrait device, in the orientation + * requested by the app. + * + * <p>This treatment aims to mitigate camera issues on large screens, like stretched or sideways + * previews. It simulates running on a portrait device by: + * <ul> + * <li>Letterboxing the app window, + * <li>Cropping the camera buffer to match the app's requested orientation, + * <li>Setting the camera sensor orientation to portrait. + * <li>Setting the display rotation to match the app's requested orientation, given portrait + * natural orientation, + * <li>Refreshes the activity to trigger new camera setup, with sandboxed values. + * </ul> + * + * <p>By setting this override to {@code true}, it disables the camera compatibility treatment + * which simulates app's requested orientation. + * + * @hide + */ + @ChangeId + @Overridable + @Disabled + public static final long OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION = + 398195815L; // buganizer id + + /** * This change id forces the packages it is applied to sandbox {@link android.view.View} API to * an activity bounds for: * diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 9e91f5944504..49fd6344270e 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -5000,10 +5000,9 @@ public abstract class PackageManager { * supports the Android XR Spatial APIs. The feature version indicates the highest version of * the Android XR Spatial APIs supported by the device. * - * <p>Also see <a href="https://developer.android.com/xr">Getting started with Spatializing - * your app</a>. + * <p>Also see <a href="https://developer.android.com/develop/xr">Develop with the Android XR + * SDK</a>. */ - // TODO(b/374330735): update public documentation once link content is finalized @FlaggedApi(android.xr.Flags.FLAG_XR_MANIFEST_ENTRIES) @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_XR_API_SPATIAL = diff --git a/core/java/android/content/pm/parsing/OWNERS b/core/java/android/content/pm/parsing/OWNERS index 8049d5cb7fa2..445a8330037b 100644 --- a/core/java/android/content/pm/parsing/OWNERS +++ b/core/java/android/content/pm/parsing/OWNERS @@ -2,4 +2,3 @@ chiuwinson@google.com patb@google.com -toddke@google.com diff --git a/core/java/android/content/pm/permission/OWNERS b/core/java/android/content/pm/permission/OWNERS index cf7e6890876a..8ef84745c99f 100644 --- a/core/java/android/content/pm/permission/OWNERS +++ b/core/java/android/content/pm/permission/OWNERS @@ -3,6 +3,5 @@ include platform/frameworks/base:/core/java/android/permission/OWNERS toddke@android.com -toddke@google.com patb@google.com diff --git a/core/java/android/hardware/serial/OWNERS b/core/java/android/hardware/serial/OWNERS new file mode 100644 index 000000000000..bc2c66ae7ecd --- /dev/null +++ b/core/java/android/hardware/serial/OWNERS @@ -0,0 +1,6 @@ +kkaplon@google.com +mjel@google.com +chominskib@google.com +wzwonarz@google.com +gstepniewski@google.com +xutan@google.com
\ No newline at end of file diff --git a/core/java/android/hardware/serial/flags/flags.aconfig b/core/java/android/hardware/serial/flags/flags.aconfig new file mode 100644 index 000000000000..d8244ba55fcc --- /dev/null +++ b/core/java/android/hardware/serial/flags/flags.aconfig @@ -0,0 +1,10 @@ +package: "android.hardware.serial" +container: "system" + +flag { + name: "enable_serial_api" + namespace: "serial" + description: "Feature flag to enable serial API" + bug: "369155426" + is_exported: true +}
\ No newline at end of file diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index 1e6469c57fa9..0ceafa01017e 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -1515,7 +1515,7 @@ public class Build { VERSION_CODES.VANILLA_ICE_CREAM * SDK_INT_MULTIPLIER; /** - * The upcoming, not yet finalized, version of Android. + * Android 36.0. */ public static final int BAKLAVA = VERSION_CODES.BAKLAVA * SDK_INT_MULTIPLIER; } diff --git a/core/java/android/os/CombinedMessageQueue/MessageQueue.java b/core/java/android/os/CombinedMessageQueue/MessageQueue.java index 74972346bf2e..33efb914e24f 100644 --- a/core/java/android/os/CombinedMessageQueue/MessageQueue.java +++ b/core/java/android/os/CombinedMessageQueue/MessageQueue.java @@ -223,7 +223,7 @@ public final class MessageQueue { traceMessageCount(); PerfettoTrace.instant(PerfettoTrace.MQ_CATEGORY, "message_queue_send") - .addFlow(msg.mEventId.get()) + .setFlow(msg.mEventId.get()) .beginProto() .beginNested(2004 /* message_queue */) .addField(2 /* receiving_thread_name */, mThread.getName()) diff --git a/core/java/android/os/IBinder.java b/core/java/android/os/IBinder.java index 8cfd32449537..48e6249d004a 100644 --- a/core/java/android/os/IBinder.java +++ b/core/java/android/os/IBinder.java @@ -451,7 +451,7 @@ public interface IBinder { * @param executor The executor on which to run the callback. * @param callback The callback used to deliver state change notifications. * - * <p>@throws {@link UnsupportedOperationException} if the kernel binder driver does not support + * @throws {@link UnsupportedOperationException} if the kernel binder driver does not support * this feature. */ @FlaggedApi(Flags.FLAG_BINDER_FROZEN_STATE_CHANGE_CALLBACK) diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java index 1329b90538bb..3ff6e052335e 100644 --- a/core/java/android/os/Looper.java +++ b/core/java/android/os/Looper.java @@ -205,7 +205,7 @@ public final class Looper { .addField(1 /* sending_thread_name */, msg.mSendingThreadName) .endNested() .endProto() - .addTerminatingFlow(msg.mEventId.get()) + .setTerminatingFlow(msg.mEventId.get()) .emit(); // This must be in a local variabe, in case a UI event sets the logger diff --git a/core/java/android/os/Message.java b/core/java/android/os/Message.java index b22d1774d967..69e84e3b097a 100644 --- a/core/java/android/os/Message.java +++ b/core/java/android/os/Message.java @@ -23,7 +23,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; /** * @@ -43,7 +43,7 @@ public final class Message implements Parcelable { * * @hide Only for use within the system server. */ - public final AtomicInteger mEventId = new AtomicInteger(); + public final AtomicLong mEventId = new AtomicLong(); /** * User-defined message code so that the recipient can identify diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS index 727dcbaca4bf..a6785bab56f3 100644 --- a/core/java/android/os/OWNERS +++ b/core/java/android/os/OWNERS @@ -78,7 +78,7 @@ per-file Trace.java = file:/TRACE_OWNERS per-file PatternMatcher* = file:/PACKAGE_MANAGER_OWNERS # PermissionEnforcer -per-file PermissionEnforcer.java = tweek@google.com, brufino@google.com +per-file PermissionEnforcer.java = tweek@google.com # RemoteCallbackList per-file RemoteCallbackList.java = shayba@google.com diff --git a/core/java/android/os/PerfettoTrackEventExtra.java b/core/java/android/os/PerfettoTrackEventExtra.java index f4b5dfe76f88..2848bcb8ad34 100644 --- a/core/java/android/os/PerfettoTrackEventExtra.java +++ b/core/java/android/os/PerfettoTrackEventExtra.java @@ -172,7 +172,6 @@ public final class PerfettoTrackEventExtra { private final Pool<FieldDouble> mFieldDoubleCache; private final Pool<FieldString> mFieldStringCache; private final Pool<FieldNested> mFieldNestedCache; - private final Pool<Flow> mFlowCache; private final Pool<Builder> mBuilderCache; private Builder() { @@ -187,7 +186,6 @@ public final class PerfettoTrackEventExtra { mFieldDoubleCache = mExtra.mFieldDoubleCache; mFieldStringCache = mExtra.mFieldStringCache; mFieldNestedCache = mExtra.mFieldNestedCache; - mFlowCache = mExtra.mFlowCache; mBuilderCache = mExtra.mBuilderCache; mCounterInt64 = mExtra.getCounterInt64(); @@ -227,7 +225,6 @@ public final class PerfettoTrackEventExtra { mFieldStringCache.reset(); mFieldNestedCache.reset(); mBuilderCache.reset(); - mFlowCache.reset(); mExtra.reset(); // Reset after on init in case the thread created builders without calling emit @@ -325,39 +322,7 @@ public final class PerfettoTrackEventExtra { /** * Adds a flow with {@code id}. */ - public Builder addFlow(int id) { - if (!mIsCategoryEnabled) { - return this; - } - if (DEBUG) { - checkParent(); - } - Flow flow = mFlowCache.get(sFlowSupplier); - flow.setProcessFlow(id); - mExtra.addPerfettoPointer(flow); - return this; - } - - /** - * Adds a terminating flow with {@code id}. - */ - public Builder addTerminatingFlow(int id) { - if (!mIsCategoryEnabled) { - return this; - } - if (DEBUG) { - checkParent(); - } - Flow flow = mFlowCache.get(sFlowSupplier); - flow.setProcessTerminatingFlow(id); - mExtra.addPerfettoPointer(flow); - return this; - } - - /** - * Adds a flow with {@code id}. - */ - public Builder setFlow(int id) { + public Builder setFlow(long id) { if (!mIsCategoryEnabled) { return this; } @@ -372,7 +337,7 @@ public final class PerfettoTrackEventExtra { /** * Adds a terminating flow with {@code id}. */ - public Builder setTerminatingFlow(int id) { + public Builder setTerminatingFlow(long id) { if (!mIsCategoryEnabled) { return this; } @@ -670,7 +635,6 @@ public final class PerfettoTrackEventExtra { private final Pool<FieldDouble> mFieldDoubleCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE); private final Pool<FieldString> mFieldStringCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE); private final Pool<FieldNested> mFieldNestedCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE); - private final Pool<Flow> mFlowCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE); private final Pool<Builder> mBuilderCache = new Pool(DEFAULT_EXTRA_CACHE_SIZE); private static final NativeAllocationRegistry sRegistry = diff --git a/core/java/android/preference/OWNERS b/core/java/android/preference/OWNERS index b4cb9ec7ceda..38a5abd8ff56 100644 --- a/core/java/android/preference/OWNERS +++ b/core/java/android/preference/OWNERS @@ -1,5 +1,4 @@ lpf@google.com -pavlis@google.com clarabayarri@google.com -per-file SeekBarVolumizer.java = jmtrivi@google.com
\ No newline at end of file +per-file SeekBarVolumizer.java = jmtrivi@google.com diff --git a/core/java/android/print/OWNERS b/core/java/android/print/OWNERS index ce79f5d0c669..15f640650868 100644 --- a/core/java/android/print/OWNERS +++ b/core/java/android/print/OWNERS @@ -1,5 +1,4 @@ # Bug component: 47273 anothermark@google.com -kumarashishg@google.com bmgordon@google.com diff --git a/core/java/android/printservice/OWNERS b/core/java/android/printservice/OWNERS index ce79f5d0c669..15f640650868 100644 --- a/core/java/android/printservice/OWNERS +++ b/core/java/android/printservice/OWNERS @@ -1,5 +1,4 @@ # Bug component: 47273 anothermark@google.com -kumarashishg@google.com bmgordon@google.com diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java index 4cbd5beb3a8c..1cf43d455be8 100644 --- a/core/java/android/service/notification/ZenModeConfig.java +++ b/core/java/android/service/notification/ZenModeConfig.java @@ -2636,7 +2636,7 @@ public class ZenModeConfig implements Parcelable { enabled = source.readInt() == 1; snoozing = source.readInt() == 1; if (source.readInt() == 1) { - name = source.readString(); + name = source.readString8(); } zenMode = source.readInt(); conditionId = source.readParcelable(null, android.net.Uri.class); @@ -2644,18 +2644,18 @@ public class ZenModeConfig implements Parcelable { component = source.readParcelable(null, android.content.ComponentName.class); configurationActivity = source.readParcelable(null, android.content.ComponentName.class); if (source.readInt() == 1) { - id = source.readString(); + id = source.readString8(); } creationTime = source.readLong(); if (source.readInt() == 1) { - enabler = source.readString(); + enabler = source.readString8(); } zenPolicy = source.readParcelable(null, android.service.notification.ZenPolicy.class); zenDeviceEffects = source.readParcelable(null, ZenDeviceEffects.class); - pkg = source.readString(); + pkg = source.readString8(); allowManualInvocation = source.readBoolean(); - iconResName = source.readString(); - triggerDescription = source.readString(); + iconResName = source.readString8(); + triggerDescription = source.readString8(); type = source.readInt(); userModifiedFields = source.readInt(); zenPolicyUserModifiedFields = source.readInt(); @@ -2703,7 +2703,7 @@ public class ZenModeConfig implements Parcelable { dest.writeInt(snoozing ? 1 : 0); if (name != null) { dest.writeInt(1); - dest.writeString(name); + dest.writeString8(name); } else { dest.writeInt(0); } @@ -2714,23 +2714,23 @@ public class ZenModeConfig implements Parcelable { dest.writeParcelable(configurationActivity, 0); if (id != null) { dest.writeInt(1); - dest.writeString(id); + dest.writeString8(id); } else { dest.writeInt(0); } dest.writeLong(creationTime); if (enabler != null) { dest.writeInt(1); - dest.writeString(enabler); + dest.writeString8(enabler); } else { dest.writeInt(0); } dest.writeParcelable(zenPolicy, 0); dest.writeParcelable(zenDeviceEffects, 0); - dest.writeString(pkg); + dest.writeString8(pkg); dest.writeBoolean(allowManualInvocation); - dest.writeString(iconResName); - dest.writeString(triggerDescription); + dest.writeString8(iconResName); + dest.writeString8(triggerDescription); dest.writeInt(type); dest.writeInt(userModifiedFields); dest.writeInt(zenPolicyUserModifiedFields); diff --git a/core/java/android/speech/OWNERS b/core/java/android/speech/OWNERS index 32f482264103..f228ba46be0c 100644 --- a/core/java/android/speech/OWNERS +++ b/core/java/android/speech/OWNERS @@ -1,3 +1,2 @@ -volnov@google.com eugeniom@google.com schfan@google.com diff --git a/core/java/android/util/apk/OWNERS b/core/java/android/util/apk/OWNERS index 0f4e869f8b9a..f267f9a4edb6 100644 --- a/core/java/android/util/apk/OWNERS +++ b/core/java/android/util/apk/OWNERS @@ -1,3 +1,2 @@ include /core/java/android/content/pm/OWNERS -cbrubaker@google.com mpgroover@google.com diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index f58baffb1367..4fc894ca9ff4 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -789,6 +789,12 @@ interface IWindowManager in @nullable ImeTracker.Token statsToken); /** + * Updates the currently animating insets types of a remote process. + */ + @EnforcePermission("MANAGE_APP_TOKENS") + void updateDisplayWindowAnimatingTypes(int displayId, int animatingTypes); + + /** * Called to get the expected window insets. * * @return {@code true} if system bars are always consumed. diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl index 1f8f0820ca3a..7d6d5a269b4c 100644 --- a/core/java/android/view/IWindowSession.aidl +++ b/core/java/android/view/IWindowSession.aidl @@ -272,6 +272,15 @@ interface IWindowSession { in @nullable ImeTracker.Token imeStatsToken); /** + * Notifies WindowState what insets types are currently running within the Window. + * see {@link com.android.server.wm.WindowState#mInsetsAnimationRunning). + * + * @param window The window that is insets animaiton is running. + * @param animatingTypes Indicates the currently animating insets types. + */ + oneway void updateAnimatingTypes(IWindow window, int animatingTypes); + + /** * Called when the system gesture exclusion has changed. */ oneway void reportSystemGestureExclusionChanged(IWindow window, in List<Rect> exclusionRects); @@ -372,14 +381,4 @@ interface IWindowSession { */ oneway void notifyImeWindowVisibilityChangedFromClient(IWindow window, boolean visible, in ImeTracker.Token statsToken); - - /** - * Notifies WindowState whether inset animations are currently running within the Window. - * This value is used by the server to vote for refresh rate. - * see {@link com.android.server.wm.WindowState#mInsetsAnimationRunning). - * - * @param window The window that is insets animaiton is running. - * @param running Indicates the insets animation state. - */ - oneway void notifyInsetsAnimationRunningStateChanged(IWindow window, boolean running); } diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index 0d82acd2bdf0..462c5c630759 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -211,12 +211,12 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } /** - * Notifies when the state of running animation is changed. The state is either "running" or - * "idle". + * Notifies when the insets types of running animation have changed. The animatingTypes + * contain all types, which have an ongoing animation. * - * @param running {@code true} if there is any animation running; {@code false} otherwise. + * @param animatingTypes the {@link InsetsType}s that are currently animating */ - default void notifyAnimationRunningStateChanged(boolean running) {} + default void updateAnimatingTypes(@InsetsType int animatingTypes) {} /** @see ViewRootImpl#isHandlingPointerEvent */ default boolean isHandlingPointerEvent() { @@ -665,6 +665,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation /** Set of inset types which are requested visible which are reported to the host */ private @InsetsType int mReportedRequestedVisibleTypes = WindowInsets.Type.defaultVisible(); + /** Set of insets types which are currently animating */ + private @InsetsType int mAnimatingTypes = 0; + /** Set of inset types that we have controls of */ private @InsetsType int mControllableTypes; @@ -745,9 +748,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation mFrame, mFromState, mToState, RESIZE_INTERPOLATOR, ANIMATION_DURATION_RESIZE, mTypes, InsetsController.this); if (mRunningAnimations.isEmpty()) { - mHost.notifyAnimationRunningStateChanged(true); + mHost.updateAnimatingTypes(runner.getTypes()); } mRunningAnimations.add(new RunningAnimation(runner, runner.getAnimationType())); + mAnimatingTypes |= runner.getTypes(); } }; @@ -1564,9 +1568,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } } ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_ANIMATION_RUNNING); - if (mRunningAnimations.isEmpty()) { - mHost.notifyAnimationRunningStateChanged(true); - } + mAnimatingTypes |= runner.getTypes(); + mHost.updateAnimatingTypes(mAnimatingTypes); mRunningAnimations.add(new RunningAnimation(runner, animationType)); if (DEBUG) Log.d(TAG, "Animation added to runner. useInsetsAnimationThread: " + useInsetsAnimationThread); @@ -1827,7 +1830,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation dispatchAnimationEnd(runningAnimation.runner.getAnimation()); } else { if (Flags.refactorInsetsController()) { - if (removedTypes == ime() + if ((removedTypes & ime()) != 0 && control.getAnimationType() == ANIMATION_TYPE_HIDE) { if (mHost != null) { // if the (hide) animation is cancelled, the @@ -1842,9 +1845,11 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation break; } } - if (mRunningAnimations.isEmpty()) { - mHost.notifyAnimationRunningStateChanged(false); + if (removedTypes > 0) { + mAnimatingTypes &= ~removedTypes; + mHost.updateAnimatingTypes(mAnimatingTypes); } + onAnimationStateChanged(removedTypes, false /* running */); } @@ -1969,14 +1974,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation return animatingTypes; } - private @InsetsType int computeAnimatingTypes() { - int animatingTypes = 0; - for (int i = 0; i < mRunningAnimations.size(); i++) { - animatingTypes |= mRunningAnimations.get(i).runner.getTypes(); - } - return animatingTypes; - } - /** * Called when finishing setting requested visible types or finishing setting controls. * @@ -1989,7 +1986,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation // report its requested visibility at the end of the animation, otherwise we would // lose the leash, and it would disappear during the animation // TODO(b/326377046) revisit this part and see if we can make it more general - typesToReport = mRequestedVisibleTypes | (computeAnimatingTypes() & ime()); + typesToReport = mRequestedVisibleTypes | (mAnimatingTypes & ime()); } else { typesToReport = mRequestedVisibleTypes; } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 9498407fb33b..7fd7be8585a4 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -2540,11 +2540,12 @@ public final class ViewRootImpl implements ViewParent, } /** - * Notify the when the running state of a insets animation changed. + * Notify the when the animating insets types have changed. */ @VisibleForTesting - public void notifyInsetsAnimationRunningStateChanged(boolean running) { + public void updateAnimatingTypes(@InsetsType int animatingTypes) { if (sToolkitSetFrameRateReadOnlyFlagValue) { + boolean running = animatingTypes != 0; if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) { Trace.instant(Trace.TRACE_TAG_VIEW, TextUtils.formatSimple("notifyInsetsAnimationRunningStateChanged(%s)", @@ -2552,7 +2553,7 @@ public final class ViewRootImpl implements ViewParent, } mInsetsAnimationRunning = running; try { - mWindowSession.notifyInsetsAnimationRunningStateChanged(mWindow, running); + mWindowSession.updateAnimatingTypes(mWindow, animatingTypes); } catch (RemoteException e) { } } diff --git a/core/java/android/view/ViewRootInsetsControllerHost.java b/core/java/android/view/ViewRootInsetsControllerHost.java index 889acca4b8b1..8954df6b1aaa 100644 --- a/core/java/android/view/ViewRootInsetsControllerHost.java +++ b/core/java/android/view/ViewRootInsetsControllerHost.java @@ -171,6 +171,13 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host { } @Override + public void updateAnimatingTypes(@WindowInsets.Type.InsetsType int animatingTypes) { + if (mViewRoot != null) { + mViewRoot.updateAnimatingTypes(animatingTypes); + } + } + + @Override public boolean hasAnimationCallbacks() { if (mViewRoot.mView == null) { return false; @@ -275,13 +282,6 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host { } @Override - public void notifyAnimationRunningStateChanged(boolean running) { - if (mViewRoot != null) { - mViewRoot.notifyInsetsAnimationRunningStateChanged(running); - } - } - - @Override public boolean isHandlingPointerEvent() { return mViewRoot != null && mViewRoot.isHandlingPointerEvent(); } diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java index 72a595d95ec2..0a86ff89c53c 100644 --- a/core/java/android/view/WindowlessWindowManager.java +++ b/core/java/android/view/WindowlessWindowManager.java @@ -597,6 +597,11 @@ public class WindowlessWindowManager implements IWindowSession { } @Override + public void updateAnimatingTypes(IWindow window, @InsetsType int animatingTypes) { + // NO-OP + } + + @Override public void reportSystemGestureExclusionChanged(android.view.IWindow window, List<Rect> exclusionRects) { } @@ -679,11 +684,6 @@ public class WindowlessWindowManager implements IWindowSession { @NonNull ImeTracker.Token statsToken) { } - @Override - public void notifyInsetsAnimationRunningStateChanged(IWindow window, boolean running) { - // NO-OP - } - void setParentInterface(@Nullable ISurfaceControlViewHostParent parentInterface) { IBinder oldInterface = mParentInterface == null ? null : mParentInterface.asBinder(); IBinder newInterface = parentInterface == null ? null : parentInterface.asBinder(); diff --git a/core/java/android/view/inputmethod/ImeTracker.java b/core/java/android/view/inputmethod/ImeTracker.java index aa0111a13b8e..60178cde249f 100644 --- a/core/java/android/view/inputmethod/ImeTracker.java +++ b/core/java/android/view/inputmethod/ImeTracker.java @@ -225,6 +225,7 @@ public interface ImeTracker { PHASE_SERVER_UPDATE_CLIENT_VISIBILITY, PHASE_WM_DISPLAY_IME_CONTROLLER_SET_IME_REQUESTED_VISIBLE, PHASE_WM_UPDATE_DISPLAY_WINDOW_REQUESTED_VISIBLE_TYPES, + PHASE_WM_REQUESTED_VISIBLE_TYPES_NOT_CHANGED, }) @Retention(RetentionPolicy.SOURCE) @interface Phase {} @@ -445,6 +446,9 @@ public interface ImeTracker { /** The control target reported its requestedVisibleTypes back to WindowManagerService. */ int PHASE_WM_UPDATE_DISPLAY_WINDOW_REQUESTED_VISIBLE_TYPES = ImeProtoEnums.PHASE_WM_UPDATE_DISPLAY_WINDOW_REQUESTED_VISIBLE_TYPES; + /** The requestedVisibleTypes have not been changed, so this request is not continued. */ + int PHASE_WM_REQUESTED_VISIBLE_TYPES_NOT_CHANGED = + ImeProtoEnums.PHASE_WM_REQUESTED_VISIBLE_TYPES_NOT_CHANGED; /** * Called when an IME request is started. diff --git a/core/java/android/view/inputmethod/flags.aconfig b/core/java/android/view/inputmethod/flags.aconfig index 16f41146fd6b..a4ea64e5811e 100644 --- a/core/java/android/view/inputmethod/flags.aconfig +++ b/core/java/android/view/inputmethod/flags.aconfig @@ -196,3 +196,21 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "report_animating_insets_types" + namespace: "input_method" + description: "Adding animating insets types and report IME visibility at the beginning of hiding" + bug: "393049691" +} + +flag { + name: "lower_ime_oom_importance" + namespace: "input_method" + description: "Lower keyboard app process oom importance to PERCEPTIBLE_APP_ADJ + 1." + bug: "372511805" + is_fixed_read_only: true + metadata { + purpose: PURPOSE_BUGFIX + } +} diff --git a/core/java/android/view/textclassifier/intent/OWNERS b/core/java/android/view/textclassifier/intent/OWNERS index dc18514ce949..4a5dfd8501be 100644 --- a/core/java/android/view/textclassifier/intent/OWNERS +++ b/core/java/android/view/textclassifier/intent/OWNERS @@ -2,5 +2,4 @@ toki@google.com svetoslavganov@android.com -svetoslavganov@google.com joannechung@google.com diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 99fe0cbdca25..5e828ba46df7 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -5211,7 +5211,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener */ @Nullable public String getFontVariationSettings() { - return mTextPaint.getFontVariationSettings(); + if (Flags.typefaceRedesignReadonly()) { + return mTextPaint.getFontVariationOverride(); + } else { + return mTextPaint.getFontVariationSettings(); + } } /** @@ -5567,10 +5571,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener Math.clamp(400 + mFontWeightAdjustment, FontStyle.FONT_WEIGHT_MIN, FontStyle.FONT_WEIGHT_MAX))); } - mTextPaint.setFontVariationSettings( + mTextPaint.setFontVariationOverride( FontVariationAxis.toFontVariationSettings(axes)); } else { - mTextPaint.setFontVariationSettings(fontVariationSettings); + mTextPaint.setFontVariationOverride(fontVariationSettings); } effective = true; } else { diff --git a/core/java/android/widget/flags/notification_widget_flags.aconfig b/core/java/android/widget/flags/notification_widget_flags.aconfig index 56a2cf72a075..732eabed0744 100644 --- a/core/java/android/widget/flags/notification_widget_flags.aconfig +++ b/core/java/android/widget/flags/notification_widget_flags.aconfig @@ -66,4 +66,14 @@ flag { metadata { purpose: PURPOSE_BUGFIX } +} + +flag { + name: "drop_non_existing_messages" + namespace: "systemui" + description: "Drops all group and message entries that no longer exist." + bug: "378101061" + metadata { + purpose: PURPOSE_BUGFIX + } }
\ No newline at end of file diff --git a/core/java/android/window/DesktopModeFlags.java b/core/java/android/window/DesktopModeFlags.java index 4aeedbb72903..e74a87536c57 100644 --- a/core/java/android/window/DesktopModeFlags.java +++ b/core/java/android/window/DesktopModeFlags.java @@ -43,6 +43,8 @@ import java.util.function.BooleanSupplier; public enum DesktopModeFlags { // All desktop mode related flags to be overridden by developer option toggle will be added here // go/keep-sorted start + DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX( + Flags::disableDesktopLaunchParamsOutsideDesktopBugFix, false), DISABLE_NON_RESIZABLE_APP_SNAP_RESIZE(Flags::disableNonResizableAppSnapResizing, true), ENABLE_ACCESSIBLE_CUSTOM_HEADERS(Flags::enableAccessibleCustomHeaders, true), ENABLE_APP_HEADER_WITH_TASK_DENSITY(Flags::enableAppHeaderWithTaskDensity, true), @@ -97,6 +99,8 @@ public enum DesktopModeFlags { ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY(Flags::enableDesktopWindowingWallpaperActivity, true), ENABLE_DRAG_RESIZE_SET_UP_IN_BG_THREAD(Flags::enableDragResizeSetUpInBgThread, false), + ENABLE_DRAG_TO_DESKTOP_INCOMING_TRANSITIONS_BUGFIX( + Flags::enableDragToDesktopIncomingTransitionsBugfix, false), ENABLE_FULLY_IMMERSIVE_IN_DESKTOP(Flags::enableFullyImmersiveInDesktop, true), ENABLE_HANDLE_INPUT_FIX(Flags::enableHandleInputFix, true), ENABLE_HOLD_TO_DRAG_APP_HANDLE(Flags::enableHoldToDragAppHandle, true), @@ -111,6 +115,7 @@ public enum DesktopModeFlags { ENABLE_START_LAUNCH_TRANSITION_FROM_TASKBAR_BUGFIX( Flags::enableStartLaunchTransitionFromTaskbarBugfix, true), ENABLE_TASKBAR_OVERFLOW(Flags::enableTaskbarOverflow, false), + ENABLE_TASKBAR_RECENTS_LAYOUT_TRANSITION(Flags::enableTaskbarRecentsLayoutTransition, false), ENABLE_TASK_RESIZING_KEYBOARD_SHORTCUTS(Flags::enableTaskResizingKeyboardShortcuts, true), ENABLE_TASK_STACK_OBSERVER_IN_SHELL(Flags::enableTaskStackObserverInShell, true), ENABLE_THEMED_APP_HEADERS(Flags::enableThemedAppHeaders, true), diff --git a/core/java/android/window/flags/lse_desktop_experience.aconfig b/core/java/android/window/flags/lse_desktop_experience.aconfig index 2e36e9a205bf..355a87d72203 100644 --- a/core/java/android/window/flags/lse_desktop_experience.aconfig +++ b/core/java/android/window/flags/lse_desktop_experience.aconfig @@ -100,6 +100,17 @@ flag { } flag { + name: "disable_desktop_launch_params_outside_desktop_bug_fix" + namespace: "lse_desktop_experience" + description: "Prevents DesktopModeLaunchParamsModifier from modifying launch params for non /n" + "desktop launches." + bug: "396108436" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "enable_desktop_windowing_wallpaper_activity" namespace: "lse_desktop_experience" description: "Enables desktop wallpaper activity to show wallpaper in the desktop mode" @@ -811,4 +822,34 @@ flag { metadata { purpose: PURPOSE_BUGFIX } +} + +flag { + name: "enable_drag_to_desktop_incoming_transitions_bugfix" + namespace: "lse_desktop_experience" + description: "Enables bugfix handling incoming transitions during the DragToDesktop transition." + bug: "397135730" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { + name: "enable_taskbar_recents_layout_transition" + namespace: "lse_desktop_experience" + description: "Enable Taskbar LayoutTransition for Recent Apps" + bug: "343521765" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { + name: "enable_desktop_opening_deeplink_minimize_animation_bugfix" + namespace: "lse_desktop_experience" + description: "Enabling a minimize animation when a new window is opened via deeplink and the Desktop Windowing open windows limit is reached." + bug: "360329773" + metadata { + purpose: PURPOSE_BUGFIX + } }
\ No newline at end of file diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig index dee1d8cadcdf..0e19eb2d3219 100644 --- a/core/java/android/window/flags/windowing_frontend.aconfig +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -471,4 +471,15 @@ flag { metadata { purpose: PURPOSE_BUGFIX } +} + +flag { + name: "reduce_task_snapshot_memory_usage" + namespace: "windowing_frontend" + description: "Reduce task snapshot memory usage in either heap and dmabuf." + bug: "238206323" + is_fixed_read_only: true + metadata { + purpose: PURPOSE_BUGFIX + } }
\ No newline at end of file diff --git a/core/java/com/android/internal/app/MediaRouteControllerContentManager.java b/core/java/com/android/internal/app/MediaRouteControllerContentManager.java index 3a8b94f222ba..11093f110f8a 100644 --- a/core/java/com/android/internal/app/MediaRouteControllerContentManager.java +++ b/core/java/com/android/internal/app/MediaRouteControllerContentManager.java @@ -206,6 +206,13 @@ public class MediaRouteControllerContentManager { mDelegate.dismissView(); } + /** + * Request the media route to update volume. + */ + public void requestUpdateRouteVolume(int direction) { + mRoute.requestUpdateVolume(direction); + } + private boolean isVolumeControlAvailable() { return mRoute.getVolumeHandling() == MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE; } diff --git a/core/java/com/android/internal/app/MediaRouteControllerDialog.java b/core/java/com/android/internal/app/MediaRouteControllerDialog.java index 5899963f4550..73f95155907a 100644 --- a/core/java/com/android/internal/app/MediaRouteControllerDialog.java +++ b/core/java/com/android/internal/app/MediaRouteControllerDialog.java @@ -42,19 +42,11 @@ import com.android.internal.R; */ public class MediaRouteControllerDialog extends AlertDialog implements MediaRouteControllerContentManager.Delegate { - // TODO(b/360050020): Eventually these 2 variables should be in the content manager instead of - // here. So these should be removed when the migration is completed. - private final MediaRouter mRouter; - private final MediaRouter.RouteInfo mRoute; - private final MediaRouteControllerContentManager mContentManager; public MediaRouteControllerDialog(Context context, int theme) { super(context, theme); - mContentManager = new MediaRouteControllerContentManager(context, this); - mRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE); - mRoute = mRouter.getSelectedRoute(); } @Override @@ -91,7 +83,8 @@ public class MediaRouteControllerDialog extends AlertDialog implements public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { - mRoute.requestUpdateVolume(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ? -1 : 1); + mContentManager.requestUpdateRouteVolume( + keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ? -1 : 1); return true; } return super.onKeyDown(keyCode, event); diff --git a/core/java/com/android/internal/os/BatteryStatsHistory.java b/core/java/com/android/internal/os/BatteryStatsHistory.java index 85794d43df3d..81ca23173457 100644 --- a/core/java/com/android/internal/os/BatteryStatsHistory.java +++ b/core/java/com/android/internal/os/BatteryStatsHistory.java @@ -181,6 +181,11 @@ public class BatteryStatsHistory { */ public interface BatteryHistoryStore { /** + * Returns the maximum amount of storage that can be occupied by the battery history story. + */ + int getMaxHistorySize(); + + /** * Returns the table of contents, in the chronological order. */ List<BatteryHistoryFragment> getFragments(); @@ -516,6 +521,22 @@ public class BatteryStatsHistory { } /** + * Returns a high estimate of how many items are currently included in the battery history. + */ + public int getEstimatedItemCount() { + int estimatedBytes = mHistoryBuffer.dataSize(); + if (mStore != null) { + estimatedBytes += mStore.getMaxHistorySize() * 10; // account for the compression ratio + } + if (mHistoryParcels != null) { + for (int i = mHistoryParcels.size() - 1; i >= 0; i--) { + estimatedBytes += mHistoryParcels.get(i).dataSize(); + } + } + return estimatedBytes / 4; // Minimum size of a history item is 4 bytes + } + + /** * Creates a read-only copy of the battery history. Does not copy the files stored * in the system directory, so it is not safe while actively writing history. */ @@ -768,7 +789,7 @@ public class BatteryStatsHistory { */ public boolean readFragmentToParcel(Parcel out, BatteryHistoryFragment fragment) { byte[] data = mStore.readFragment(fragment); - if (data == null) { + if (data == null || data.length == 0) { return false; } out.unmarshall(data, 0, data.length); @@ -913,6 +934,10 @@ public class BatteryStatsHistory { continue; } + if (data.length == 0) { + continue; + } + out.writeBoolean(true); if (useBlobs) { out.writeBlob(data, 0, data.length); @@ -955,9 +980,11 @@ public class BatteryStatsHistory { return false; } - parcel.unmarshall(data, 0, data.length); - parcel.setDataPosition(0); - readHistoryBuffer(parcel); + if (data.length > 0) { + parcel.unmarshall(data, 0, data.length); + parcel.setDataPosition(0); + readHistoryBuffer(parcel); + } } catch (Exception e) { Slog.e(TAG, "Error reading battery history", e); reset(); diff --git a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java index 0d5d8761d00d..38398b4bf6f0 100644 --- a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java +++ b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java @@ -47,6 +47,8 @@ public class BatteryStatsHistoryIterator implements Iterator<BatteryStats.Histor private boolean mClosed; private long mBaseMonotonicTime; private long mBaseTimeUtc; + private int mItemIndex = 0; + private int mMaxHistoryItems; public BatteryStatsHistoryIterator(@NonNull BatteryStatsHistory history, long startTimeMs, long endTimeMs) { @@ -54,6 +56,7 @@ public class BatteryStatsHistoryIterator implements Iterator<BatteryStats.Histor mStartTimeMs = startTimeMs; mEndTimeMs = (endTimeMs != MonotonicClock.UNDEFINED) ? endTimeMs : Long.MAX_VALUE; mHistoryItem.clear(); + mMaxHistoryItems = history.getEstimatedItemCount(); } @Override @@ -80,6 +83,11 @@ public class BatteryStatsHistoryIterator implements Iterator<BatteryStats.Histor private void advance() { while (true) { + if (mItemIndex > mMaxHistoryItems) { + Slog.wtfStack(TAG, "Number of battery history items is too large: " + mItemIndex); + break; + } + Parcel p = mBatteryStatsHistory.getNextParcel(mStartTimeMs, mEndTimeMs); if (p == null) { break; @@ -109,6 +117,7 @@ public class BatteryStatsHistoryIterator implements Iterator<BatteryStats.Histor break; } if (mHistoryItem.time >= mStartTimeMs) { + mItemIndex++; mNextItemReady = true; return; } diff --git a/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java b/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java index 69c04807c604..7ee22f30ace0 100644 --- a/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java +++ b/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java @@ -157,7 +157,7 @@ public abstract class ParsedComponentImpl implements ParsedComponent, Parcelable @Override public void writeToParcel(Parcel dest, int flags) { - sForInternedString.parcel(this.name, dest, flags); + dest.writeString(this.name); dest.writeInt(this.getIcon()); dest.writeInt(this.getLabelRes()); dest.writeCharSequence(this.getNonLocalizedLabel()); @@ -175,7 +175,7 @@ public abstract class ParsedComponentImpl implements ParsedComponent, Parcelable // We use the boot classloader for all classes that we load. final ClassLoader boot = Object.class.getClassLoader(); //noinspection ConstantConditions - this.name = sForInternedString.unparcel(in); + this.name = in.readString(); this.icon = in.readInt(); this.labelRes = in.readInt(); this.nonLocalizedLabel = in.readCharSequence(); diff --git a/core/java/com/android/internal/protolog/WmProtoLogGroups.java b/core/java/com/android/internal/protolog/WmProtoLogGroups.java index 5edc2fbd4c8f..b8b70b16a20c 100644 --- a/core/java/com/android/internal/protolog/WmProtoLogGroups.java +++ b/core/java/com/android/internal/protolog/WmProtoLogGroups.java @@ -30,6 +30,8 @@ public enum WmProtoLogGroups implements IProtoLogGroup { WM_ERROR(true, true, true, Consts.TAG_WM), WM_DEBUG_ORIENTATION(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), + WM_DEBUG_ORIENTATION_CHANGE(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, true, + Consts.TAG_WM), WM_DEBUG_FOCUS_LIGHT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, Consts.TAG_WM), WM_DEBUG_BOOT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false, diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index 7018ebcbe9f4..5a180d7358dd 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -82,7 +82,7 @@ oneway interface IStatusBar * Notify system UI the immersive mode changed. This shall be removed when client immersive is * enabled. */ - void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode); + void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode, int windowType); void dismissKeyboardShortcutsMenu(); void toggleKeyboardShortcutsMenu(int deviceId); diff --git a/core/java/com/android/internal/util/OWNERS b/core/java/com/android/internal/util/OWNERS index 9be8ea7aadc4..d174fe36e460 100644 --- a/core/java/com/android/internal/util/OWNERS +++ b/core/java/com/android/internal/util/OWNERS @@ -1,8 +1,8 @@ -per-file AsyncChannel* = lorenzo@google.com, satk@google.com, etancohen@google.com +per-file AsyncChannel* = lorenzo@google.com, satk@google.com per-file MessageUtils*, Protocol*, RingBuffer*, TokenBucket* = jchalard@google.com, lorenzo@google.com, satk@google.com per-file *Notification* = file:/services/core/java/com/android/server/notification/OWNERS per-file *ContrastColor* = file:/services/core/java/com/android/server/notification/OWNERS -per-file Protocol* = etancohen@google.com, lorenzo@google.com +per-file Protocol* =lorenzo@google.com per-file State* = jchalard@google.com, lorenzo@google.com, satk@google.com per-file *Dump* = file:/core/java/com/android/internal/util/dump/OWNERS per-file *Screenshot* = file:/packages/SystemUI/src/com/android/systemui/screenshot/OWNERS diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java index ce46da12aa76..2cca3dbc4f2f 100644 --- a/core/java/com/android/internal/widget/ConversationLayout.java +++ b/core/java/com/android/internal/widget/ConversationLayout.java @@ -86,6 +86,7 @@ public class ConversationLayout extends FrameLayout public static final Interpolator FAST_OUT_LINEAR_IN = new PathInterpolator(0.4f, 0f, 1f, 1f); public static final Interpolator FAST_OUT_SLOW_IN = new PathInterpolator(0.4f, 0f, 0.2f, 1f); public static final Interpolator OVERSHOOT = new PathInterpolator(0.4f, 0f, 0.2f, 1.4f); + private static final int MAX_SUMMARIZATION_LINES = 3; public static final int IMPORTANCE_ANIM_GROW_DURATION = 250; public static final int IMPORTANCE_ANIM_SHRINK_DURATION = 200; public static final int IMPORTANCE_ANIM_SHRINK_DELAY = 25; @@ -401,7 +402,7 @@ public class ConversationLayout extends FrameLayout public void setIsCollapsed(boolean isCollapsed) { mIsCollapsed = isCollapsed; mMessagingLinearLayout.setMaxDisplayedLines(isCollapsed - ? TextUtils.isEmpty(mSummarizedContent) ? 1 : 2 + ? TextUtils.isEmpty(mSummarizedContent) ? 1 : MAX_SUMMARIZATION_LINES : Integer.MAX_VALUE); updateExpandButton(); updateContentEndPaddings(); @@ -1188,6 +1189,12 @@ public class ConversationLayout extends FrameLayout } newGroup.setMessages(group); } + + if (Flags.dropNonExistingMessages()) { + // remove groups from mAddedGroups when they are no longer in mGroups. + mAddedGroups.removeIf( + messagingGroup -> !mGroups.contains(messagingGroup)); + } } /** diff --git a/core/java/com/android/internal/widget/MessagingGroup.java b/core/java/com/android/internal/widget/MessagingGroup.java index b9a603cc5696..b31a200218ee 100644 --- a/core/java/com/android/internal/widget/MessagingGroup.java +++ b/core/java/com/android/internal/widget/MessagingGroup.java @@ -569,6 +569,10 @@ public class MessagingGroup extends NotificationOptimizedLinearLayout implements mIsolatedMessage = isolatedMessage; updateImageContainerVisibility(); mMessages = group; + if (android.widget.flags.Flags.dropNonExistingMessages()) { + // remove messages from mAddedMessages when they are no longer in mMessages. + mAddedMessages.removeIf(message -> !mMessages.contains(message)); + } updateMessageColor(); } diff --git a/core/java/com/android/internal/widget/MessagingLayout.java b/core/java/com/android/internal/widget/MessagingLayout.java index eb22e7c8cdc0..9fe2de82adee 100644 --- a/core/java/com/android/internal/widget/MessagingLayout.java +++ b/core/java/com/android/internal/widget/MessagingLayout.java @@ -44,6 +44,7 @@ import android.view.animation.PathInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.RemoteViews; +import android.widget.flags.Flags; import com.android.internal.R; @@ -62,6 +63,7 @@ public class MessagingLayout extends FrameLayout public static final Interpolator LINEAR_OUT_SLOW_IN = new PathInterpolator(0f, 0f, 0.2f, 1f); public static final Interpolator FAST_OUT_LINEAR_IN = new PathInterpolator(0.4f, 0f, 1f, 1f); public static final Interpolator FAST_OUT_SLOW_IN = new PathInterpolator(0.4f, 0f, 0.2f, 1f); + private static final int MAX_SUMMARIZATION_LINES = 3; public static final OnLayoutChangeListener MESSAGING_PROPERTY_ANIMATOR = new MessagingPropertyAnimator(); private final PeopleHelper mPeopleHelper = new PeopleHelper(); @@ -222,7 +224,7 @@ public class MessagingLayout extends FrameLayout List<MessagingMessage> newMessagingMessages; mSummarizedContent = extras.getCharSequence(Notification.EXTRA_SUMMARIZED_CONTENT); if (!TextUtils.isEmpty(mSummarizedContent) && mIsCollapsed) { - mMessagingLinearLayout.setMaxDisplayedLines(2); + mMessagingLinearLayout.setMaxDisplayedLines(MAX_SUMMARIZATION_LINES); Notification.MessagingStyle.Message summary = new Notification.MessagingStyle.Message(mSummarizedContent, 0, ""); newMessagingMessages = createMessages(List.of(summary), false, usePrecomputedText); @@ -559,6 +561,12 @@ public class MessagingLayout extends FrameLayout } newGroup.setMessages(group); } + + if (Flags.dropNonExistingMessages()) { + // remove groups from mAddedGroups when they are no longer in mGroups. + mAddedGroups.removeIf( + messagingGroup -> !mGroups.contains(messagingGroup)); + } } private void findGroups(List<MessagingMessage> historicMessages, diff --git a/core/java/com/android/internal/widget/NotificationProgressBar.java b/core/java/com/android/internal/widget/NotificationProgressBar.java index c0fe0d125e44..3472d681a486 100644 --- a/core/java/com/android/internal/widget/NotificationProgressBar.java +++ b/core/java/com/android/internal/widget/NotificationProgressBar.java @@ -555,6 +555,18 @@ public final class NotificationProgressBar extends ProgressBar implements mNotificationProgressDrawable.setParts(p.first); mAdjustedProgressFraction = (p.second - mTrackerDrawWidth / 2F) / (width - mTrackerDrawWidth); + + mNotificationProgressDrawable.updateEndDotColor(getEndDotColor(fallbackSegments)); + } + + private int getEndDotColor(List<ProgressStyle.Segment> fallbackSegments) { + if (!mProgressModel.isStyledByProgress()) return Color.TRANSPARENT; + if (mProgressModel.getProgress() == mProgressModel.getProgressMax()) { + return Color.TRANSPARENT; + } + + return fallbackSegments == null ? mProgressModel.getSegments().getLast().getColor() + : fallbackSegments.getLast().getColor(); } private void updateTrackerAndBarPos(int w, int h) { diff --git a/core/java/com/android/internal/widget/NotificationProgressDrawable.java b/core/java/com/android/internal/widget/NotificationProgressDrawable.java index 30dcc67d9ce5..b1096107f04b 100644 --- a/core/java/com/android/internal/widget/NotificationProgressDrawable.java +++ b/core/java/com/android/internal/widget/NotificationProgressDrawable.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.content.res.Resources.Theme; import android.content.res.TypedArray; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; @@ -74,6 +75,8 @@ public final class NotificationProgressDrawable extends Drawable { mFillPaint.setStyle(Paint.Style.FILL); } + private @ColorInt int mEndDotColor = Color.TRANSPARENT; + private int mAlpha; public NotificationProgressDrawable() { @@ -125,6 +128,16 @@ public final class NotificationProgressDrawable extends Drawable { setParts(Arrays.asList(parts)); } + /** + * Update the color of the end dot. If TRANSPARENT, the dot is not drawn. + */ + public void updateEndDotColor(@ColorInt int endDotColor) { + if (mEndDotColor != endDotColor) { + mEndDotColor = endDotColor; + invalidateSelf(); + } + } + @Override public void draw(@NonNull Canvas canvas) { final float pointRadius = mState.mPointRadius; @@ -164,6 +177,18 @@ public final class NotificationProgressDrawable extends Drawable { canvas.drawRoundRect(mPointRectF, cornerRadius, cornerRadius, mFillPaint); } } + + if (mEndDotColor != Color.TRANSPARENT) { + final float right = (float) getBounds().right; + final float dotRadius = mState.mFadedSegmentHeight / 2F; + mFillPaint.setColor(mEndDotColor); + // Use drawRoundRect instead of drawCircle to ensure alignment with the segment below. + mSegRectF.set( + Math.round(right - mState.mFadedSegmentHeight), Math.round(centerY - dotRadius), + Math.round(right), Math.round(centerY + dotRadius)); + canvas.drawRoundRect(mSegRectF, mState.mSegmentCornerRadius, + mState.mSegmentCornerRadius, mFillPaint); + } } @Override diff --git a/core/java/com/android/internal/widget/NotificationRowIconView.java b/core/java/com/android/internal/widget/NotificationRowIconView.java index c96e979138dd..1b29b7fdd7f8 100644 --- a/core/java/com/android/internal/widget/NotificationRowIconView.java +++ b/core/java/com/android/internal/widget/NotificationRowIconView.java @@ -225,6 +225,6 @@ public class NotificationRowIconView extends CachingIconView { boolean shouldShowAppIcon(); /** Get the app icon for this notification. */ - Drawable getAppIcon(); + @Nullable Drawable getAppIcon(); } } diff --git a/core/proto/OWNERS b/core/proto/OWNERS index aa8f8419ac46..c80402408180 100644 --- a/core/proto/OWNERS +++ b/core/proto/OWNERS @@ -5,7 +5,6 @@ joeo@google.com singhtejinder@google.com yanmin@google.com yaochen@google.com -zhouwenjie@google.com # Frameworks ogunwale@google.com diff --git a/core/res/OWNERS b/core/res/OWNERS index faed4d80f39b..a208f7f1a3ad 100644 --- a/core/res/OWNERS +++ b/core/res/OWNERS @@ -9,7 +9,6 @@ hackbod@google.com ilyamaty@google.com jbolinger@google.com jsharkey@android.com -jsharkey@google.com juliacr@google.com kchyn@google.com michaelwr@google.com diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 320319549d8d..b6b5d8ba2d2f 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Eenhandmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra donker"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Gehoortoestelle"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ontkoppel"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Gekoppel"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktief"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index f4dabdbe5d87..29b153b23d3d 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"የአንድ እጅ ሁነታ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ተጨማሪ ደብዛዛ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"የመስሚያ መሣሪያዎች"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ግንኙነት ተቋርጧል"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"ተገናኝቷል"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"ገቢር"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 24d628a3e29b..08d0af5f3a6f 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -357,14 +357,10 @@ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"الوصول إلى بيانات المستشعر حول علاماتك الحيوية"</string> <string name="permgrouplab_notifications" msgid="5472972361980668884">"الإشعارات"</string> <string name="permgroupdesc_notifications" msgid="4608679556801506580">"عرض الإشعارات"</string> - <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) --> - <skip /> - <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) --> - <skip /> - <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) --> - <skip /> - <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) --> - <skip /> + <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"بيانات تتبُّع الواقع الممتد"</string> + <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"إذن الوصول إلى بيانات الواقع الممتد المتعلّقة بك وبالبيئة المحيطة بك"</string> + <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"بيانات تتبُّع الواقع المُمتد الحسّاسة"</string> + <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"إذن الوصول إلى بيانات تتبُّع حسّاسة، مثل حركات التحديق بالعين"</string> <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"استرداد محتوى النافذة:"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"فحص محتوى نافذة يتم التفاعل معها."</string> <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"تفعيل الاستكشاف باللمس:"</string> @@ -660,38 +656,22 @@ <string name="permdesc_imagesWrite" msgid="5195054463269193317">"للسماح للتطبيق بتعديل مجموعة صورك."</string> <string name="permlab_mediaLocation" msgid="7368098373378598066">"قراءة المواقع من مجموعة الوسائط التابعة لك"</string> <string name="permdesc_mediaLocation" msgid="597912899423578138">"للسماح للتطبيق بقراءة المواقع من مجموعة الوسائط التابعة لك."</string> - <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) --> - <skip /> - <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) --> - <skip /> - <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) --> - <skip /> - <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) --> - <skip /> - <!-- no translation found for permlab_face_tracking (2272048395128283324) --> - <skip /> - <!-- no translation found for permdesc_face_tracking (2622783922311211866) --> - <skip /> - <!-- no translation found for permlab_hand_tracking (6478233866595566940) --> - <skip /> - <!-- no translation found for permdesc_hand_tracking (8639715900104966456) --> - <skip /> - <!-- no translation found for permlab_head_tracking (1309731456372087270) --> - <skip /> - <!-- no translation found for permdesc_head_tracking (231597390513699188) --> - <skip /> - <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) --> - <skip /> - <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) --> - <skip /> - <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) --> - <skip /> - <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) --> - <skip /> - <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) --> - <skip /> - <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) --> - <skip /> + <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"تتبُّع الحركات التقريبية للتحديق بالعين"</string> + <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"يسمح هذا الإذن للتطبيق بتتبُّع الحركات التقريبية لعينيك."</string> + <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"تتبُّع اتجاه نظرك"</string> + <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات دقيقة عن حركات التحديق بالعين."</string> + <string name="permlab_face_tracking" msgid="2272048395128283324">"تتبُّع حركات وجهك"</string> + <string name="permdesc_face_tracking" msgid="2622783922311211866">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات تتبُّع حركات الوجه."</string> + <string name="permlab_hand_tracking" msgid="6478233866595566940">"تتبُّع يديك"</string> + <string name="permdesc_hand_tracking" msgid="8639715900104966456">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات تتبُّع اليد."</string> + <string name="permlab_head_tracking" msgid="1309731456372087270">"تتبُّع حركات رأسك"</string> + <string name="permdesc_head_tracking" msgid="231597390513699188">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات تتبُّع حركة الرأس."</string> + <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"فهم البيئة المحيطة بك"</string> + <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات التتبُّع المتعلّقة بالبيئة المحيطة بك مباشرةً."</string> + <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"فهم البيئة المحيطة بك بتفاصيل عالية الدقّة"</string> + <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات التتبُّع المتعلّقة بالبيئة المحيطة بك مباشرةً بتفاصيل عالية الدقّة."</string> + <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"وصول التطبيق إلى بيانات الواقع الممتد عندما لا يكون مستخدَمًا"</string> + <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"يسمح هذا الإذن للتطبيق بالوصول إلى بيانات الواقع الممتد عندما لا يكون مستخدَمًا."</string> <string name="biometric_app_setting_name" msgid="3339209978734534457">"استخدام المقاييس الحيوية"</string> <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"استخدام المقاييس الحيوية أو قفل الشاشة"</string> <string name="biometric_dialog_default_title" msgid="55026799173208210">"تأكيد هويتك"</string> @@ -1827,6 +1807,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"وضع \"التصفح بيد واحدة\""</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"زيادة تعتيم الشاشة"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"سماعات الأذن الطبية"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"غير متّصل"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"متّصل"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"متّصل حاليًا"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 2b9a20a81804..9eab313b1b94 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এখন হাতেৰে ব্যৱহাৰ কৰাৰ ম’ড"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিৰিক্তভাৱে পোহৰ কমোৱাৰ সুবিধা"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"শুনাৰ ডিভাইচ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"সংযোগ বিচ্ছিন্ন হ’ল"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"সংযোগ কৰা হ’ল"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"সক্ৰিয় হৈ আছে"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index e5bfb29bdffb..3aec62a8b8d5 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Birəlli rejim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Əlavə tündləşmə"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Eşitmə cihazları"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Bağlantı kəsildi"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Qoşuldu"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivdir"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 3e67233da282..47203a992934 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamni"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni aparati"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Veza je prekinuta"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index d01af9464402..8230f0c7739c 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Рэжым кіравання адной рукой"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дадатковае памяншэнне яркасці"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слыхавыя апараты"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Адключана"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Падключана"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Актыўная"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 0083ddea18f3..d9471e68c8e1 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Работа с една ръка"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Допълнително затъмняване"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слухови апарати"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Няма връзка"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Свързано"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 298be5147ccd..cc05d28ca630 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এক হাতে ব্যবহার করার মোড"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিরিক্ত কম উজ্জ্বলতা"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"হিয়ারিং ডিভাইস"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ডিসকানেক্ট হয়ে গেছে"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"কানেক্ট করা হয়েছে"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"অ্যাক্টিভ"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 6a54f651aaa6..9c553cedadc5 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjenje"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni aparati"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nije povezano"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 63fbb072625a..3fa177ef2116 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode d\'una mà"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuació extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Audiòfons"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconnectat"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connectat"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Actiu"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 5d0edf308b33..670ca33f0e1d 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jedné ruky"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Velmi tmavé zobrazení"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Naslouchátka"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Odpojeno"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Připojeno"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivní"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index a8530764cd61..47eb357b4087 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndstilstand"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dæmpet belysning"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Høreapparater"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ikke forbundet"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Forbundet"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 81a331d2fd31..06a35e628d27 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhandmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradunkel"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hörgeräte"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nicht verbunden"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Verbunden"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index f4fb932b6cbf..8a12e0e907b1 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Λειτουργία ενός χεριού"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Επιπλέον μείωση φωτεινότητας"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Συσκευές ακοής"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Αποσυνδέθηκε"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Συνδέθηκε"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Ενεργή"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 3b4f52ccfdda..3881f1de0002 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 79020c58479a..e6c4047cbda8 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1803,6 +1803,7 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> + <string name="autoclick_feature_name" msgid="8149248738736949630">"Autoclick"</string> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 2c5cf4da48d2..9680b83af481 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 65ebd0d38c0c..fbe1c0a09a1c 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index c9bb39cc1fe8..54297a568091 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo de una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Activo"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 63fc2769adc7..5bd2bf5941c3 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo Una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Audífonos"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Activo"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index c9b29c3a8192..0c928a6c601d 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ühekäerežiim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Eriti tume"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Kuuldeseadmed"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ühendus katkestatud"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ühendatud"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiivne"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index 88bb3c95e1aa..13f0452b2f3a 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Esku bakarreko modua"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Are ilunago"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Entzumen-gailuak"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Deskonektatuta"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Konektatuta"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktibo"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 0c3b7551e4f6..2eaf4c033d52 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"حالت یکدستی"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"دستگاههای کمکشنوایی"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"متصل نیست"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"وصل شد"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"فعال"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index b12fd5cffbed..280658c26735 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Yhden käden moodi"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Erittäin himmeä"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Kuulolaitteet"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Yhteys katkaistu"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Yhdistetty"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiivinen"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index b9c8b64b2fe5..1740ce536ea5 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode Une main"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Très sombre"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Appareils auditifs"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Déconnecté"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connecté"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Actif"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 9952d0437187..0564661de80d 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode une main"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminosité ultra-réduite"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Appareils auditifs"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Déconnecté"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connecté"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Actif"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index a2d29c9c16d0..73bed7fa72da 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo dunha soa man"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Activo"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index bb0748466bbf..0c99096ff4fc 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"એક-હાથે વાપરો મોડ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"એક્સ્ટ્રા ડિમ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"સાંભળવામાં સહાય કરતા ડિવાઇસ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ડિસ્કનેક્ટેડ છે"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"કનેક્ટેડ છે"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"સક્રિય"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 538e86c18411..df211dc458a7 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"वन-हैंडेड मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"कान की मशीन"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"डिसकनेक्ट हो गया"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"कनेक्ट हो गया"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"चालू है"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index cde062acf7b0..f701483453aa 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Još tamnije"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušna pomagala"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nije povezano"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 1acf7bcf50d8..e3d261e11da8 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Egykezes mód"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extrasötét"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hallásjavító eszközök"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Leválasztva"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Csatlakozva"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktív"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 041042f0be2f..de62af5376c7 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Մեկ ձեռքի ռեժիմ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Հավելյալ խամրեցում"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Լսողական սարքեր"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Անջատված է"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Միացված է"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Ակտիվ է"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index b02d5ee9e040..18ae5e9715f9 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode satu tangan"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra redup"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Alat bantu dengar"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Tidak terhubung"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Terhubung"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktif"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index d66721aeeabc..a74ff1cadcb7 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhent stilling"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mjög dökkt"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Heyrnartæki"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Aftengt"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Tengt"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Virkt"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 7506002ce141..befd2b21776c 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modalità a una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Attenuazione extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Protesi uditive"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnesso"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connesso"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Attivo"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index d58084de0490..0b6c80af7dcb 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -354,14 +354,10 @@ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"גישה אל נתוני חיישנים של הסימנים החיוניים שלך"</string> <string name="permgrouplab_notifications" msgid="5472972361980668884">"התראות"</string> <string name="permgroupdesc_notifications" msgid="4608679556801506580">"הצגת התראות"</string> - <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) --> - <skip /> - <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) --> - <skip /> - <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) --> - <skip /> - <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) --> - <skip /> + <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"נתונים של מעקב XR"</string> + <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"גישה לנתוני XR לגביך ולגבי הסביבה הקרובה"</string> + <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"נתונים רגישים של מעקב XR"</string> + <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"גישה לנתוני מעקב רגישים, כמו תנועות העיניים"</string> <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"אחזור תוכן של חלון"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"בדיקת התוכן של חלון שאיתו מתבצעת אינטראקציה."</string> <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"הפעלה של \'גילוי באמצעות מגע\'"</string> @@ -657,38 +653,22 @@ <string name="permdesc_imagesWrite" msgid="5195054463269193317">"מאפשרת לאפליקציה לשנות את אוסף התמונות שלך."</string> <string name="permlab_mediaLocation" msgid="7368098373378598066">"לקרוא מיקומים מאוסף המדיה שלך"</string> <string name="permdesc_mediaLocation" msgid="597912899423578138">"מאפשרת לאפליקציה לקרוא מיקומים מאוסף המדיה שלך."</string> - <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) --> - <skip /> - <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) --> - <skip /> - <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) --> - <skip /> - <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) --> - <skip /> - <!-- no translation found for permlab_face_tracking (2272048395128283324) --> - <skip /> - <!-- no translation found for permdesc_face_tracking (2622783922311211866) --> - <skip /> - <!-- no translation found for permlab_hand_tracking (6478233866595566940) --> - <skip /> - <!-- no translation found for permdesc_hand_tracking (8639715900104966456) --> - <skip /> - <!-- no translation found for permlab_head_tracking (1309731456372087270) --> - <skip /> - <!-- no translation found for permdesc_head_tracking (231597390513699188) --> - <skip /> - <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) --> - <skip /> - <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) --> - <skip /> - <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) --> - <skip /> - <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) --> - <skip /> - <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) --> - <skip /> - <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) --> - <skip /> + <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"מעקב אחרי תנועות העיניים בקירוב"</string> + <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"ההרשאה מאפשרת לאפליקציה לעקוב אחרי תנועות העיניים בקירוב."</string> + <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"מעקב אחרי הכיוון של המבט"</string> + <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"ההרשאה מאפשרת לאפליקציה לגשת לנתונים מדויקים של תנועות עיניים."</string> + <string name="permlab_face_tracking" msgid="2272048395128283324">"מעקב אחרי תנועות הפנים"</string> + <string name="permdesc_face_tracking" msgid="2622783922311211866">"ההרשאה מאפשרת לאפליקציה לגשת לנתוני מעקב תנועות הפנים."</string> + <string name="permlab_hand_tracking" msgid="6478233866595566940">"מעקב אחר תנועות הידיים"</string> + <string name="permdesc_hand_tracking" msgid="8639715900104966456">"ההרשאה מאפשרת לאפליקציה לגשת לנתוני מעקב תנועות הידיים."</string> + <string name="permlab_head_tracking" msgid="1309731456372087270">"מעקב אחרי תנועות הראש"</string> + <string name="permdesc_head_tracking" msgid="231597390513699188">"ההרשאה מאפשרת לאפליקציה לגשת לנתוני מעקב תנועות הראש."</string> + <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"גישה לנתונים מהסביבה הקרובה"</string> + <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"ההרשאה מאפשרת לאפליקציה לגשת לנתוני המעקב מהסביבה הקרובה."</string> + <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"גישה לנתונים מהסביבה הקרובה ברמת פירוט גבוהה"</string> + <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"ההרשאה מאפשרת לאפליקציה לגשת לנתוני מעקב מהסביבה הקרובה ברמת פירוט גבוהה מאוד."</string> + <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"גישה לנתוני XR כשהאפליקציה לא בחזית"</string> + <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"ההרשאה מאפשרת לאפליקציה לגשת לנתוני XR כשהיא לא בחזית."</string> <string name="biometric_app_setting_name" msgid="3339209978734534457">"שימוש במידע ביומטרי"</string> <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"שימוש במידע ביומטרי בנעילת מסך"</string> <string name="biometric_dialog_default_title" msgid="55026799173208210">"אימות הזהות שלך"</string> @@ -1824,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"מצב שימוש ביד אחת"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"מעומעם במיוחד"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"מכשירי שמיעה"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"מנותק"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"מחובר"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"מצב פעיל"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 7ad10c85fece..2f8133a135a1 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"片手モード"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"さらに輝度を下げる"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"補聴器"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"未接続"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"接続済み"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"有効"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index fcdfc0135fec..ef154052843d 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ცალი ხელის რეჟიმი"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"დამატებითი დაბინდვა"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"სმენის აპარატები"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"კავშირი გაწყვეტილია"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"დაკავშირებული"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"აქტიური"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index e60ce5dc0260..b5756304e15f 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бір қолмен басқару режимі"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Экранды қарайту"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Есту аппараттары"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ажыратылды"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Қосылды"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Белсенді"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index ad1017552f6e..eeae49bf388a 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"មុខងារប្រើដៃម្ខាង"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ងងឹតខ្លាំង"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ឧបករណ៍ជំនួយការស្ដាប់"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"បានផ្ដាច់"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"បានភ្ជាប់"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"សកម្ម"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 5711aa6087d9..fd468b43fd33 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ಒಂದು ಕೈ ಮೋಡ್"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ಇನ್ನಷ್ಟು ಮಬ್ಬು"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ಶ್ರವಣ ಸಾಧನಗಳು"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ಡಿಸ್ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"ಸಕ್ರಿಯವಾಗಿದೆ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index bb8c0221716a..0a8867088ecb 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"한 손 모드"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"더 어둡게"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"청각 보조 기기"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"연결 끊김"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"연결됨"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"활성"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 3fe442fcdbb8..83a1c69afa92 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бир кол режими"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Кошумча караңгылатуу"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Угуу түзмөктөрү"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ажыратылды"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Туташты"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Жигердүү"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 1658a78fe1a0..f32ede63c67f 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ໂໝດມືດຽວ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ຫຼຸດແສງເປັນພິເສດ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ອຸປະກອນຊ່ວຍຟັງ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"ເຊື່ອມຕໍ່ແລ້ວ"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"ນຳໃຊ້ຢູ່"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 57db15721b9e..51311b379649 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Vienos rankos režimas"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Itin blanku"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Klausos įrenginiai"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Atjungta"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Prisijungta"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktyvus"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 764e8c96d13d..3b3609e0b07b 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Vienas rokas režīms"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Papildu aptumšošana"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dzirdes aparāti"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Atvienota"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Pievienota"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktīva"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 46009350774a..0c92fd5cace6 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим со една рака"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнително затемнување"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слушни помагала"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Не е поврзано"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Поврзано"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index d9ec167f5c84..cbdbd2d8108d 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ഒറ്റക്കൈ മോഡ്"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"കൂടുതൽ ഡിം ചെയ്യൽ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ശ്രവണ ഉപകരണങ്ങൾ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"വിച്ഛേദിച്ചു"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"കണക്റ്റ് ചെയ്തു"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"സജീവം"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 05f4f0572a47..4c72a86dcc75 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Нэг гарын горим"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Хэт бүүдгэр"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Сонсголын төхөөрөмжүүд"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Салсан"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Холбогдсон"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Идэвхтэй"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index df7688ed9e3c..ea1e92baf387 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"एकहाती मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"आणखी डिम"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"श्रवणयंत्रे"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"डिस्कनेक्ट केले आहे"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"कनेक्ट केले आहे"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"अॅक्टिव्ह"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 7d77268154ee..43acbac72819 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mod sebelah tangan"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Amat malap"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Peranti pendengaran"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Diputuskan sambungan"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Disambungkan"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktif"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index b2b601138317..2333539d415c 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"လက်တစ်ဖက်သုံးမုဒ်"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ပိုမှိန်ခြင်း"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"နားကြားကိရိယာ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ချိတ်ဆက်မထားပါ"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"ချိတ်ဆက်ထားသည်"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"သုံးနေသည်"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 3022fca58bf3..3a337f603348 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -276,7 +276,7 @@ <string name="bugreport_option_full_title" msgid="7681035745950045690">"Fullstendig rapport"</string> <string name="bugreport_option_full_summary" msgid="1975130009258435885">"Bruk dette alternativet for minst mulig forstyrrelse på systemet når enheten din er treg eller ikke svarer, eller når du trenger alle rapportdelene. Det tas ikke noen skjermbilde, og du kan ikke legge til flere detaljer."</string> <string name="bugreport_countdown" msgid="6418620521782120755">"{count,plural, =1{Tar skjermbilde for feilrapporten om # sekund.}other{Tar skjermbilde for feilrapporten om # sekunder.}}"</string> - <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"En skjermbilde er tatt med feilrapporten"</string> + <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Et skjermbilde er tatt med feilrapporten"</string> <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Kunne ikke ta skjermbilde med feilrapporten"</string> <string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Stillemodus"</string> <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Lyden er av"</string> @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndsmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Høreapparater"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Frakoblet"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Tilkoblet"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 93ead6dfff57..ce64589a4870 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"एक हाते मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"अझै मधुरो"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"हियरिङ डिभाइसहरू"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"डिस्कनेक्ट गरिएको"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"कनेक्ट गरिएको"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"सक्रिय"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index fc12906e14fa..f7b6cc87249b 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Bediening met 1 hand"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dimmen"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hoortoestellen"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Verbinding verbroken"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Verbonden"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Actief"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 3200f40606c6..ef567e504e70 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -327,7 +327,7 @@ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଆକ୍ସେସ୍ କରେ"</string> <string name="permgrouplab_location" msgid="1858277002233964394">"ଲୋକେସନ"</string> <string name="permgroupdesc_location" msgid="1995955142118450685">"ଏହି ଡିଭାଇସ୍ର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରେ"</string> - <string name="permgrouplab_calendar" msgid="6426860926123033230">"କେଲେଣ୍ଡର"</string> + <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string> <string name="permgroupdesc_calendar" msgid="6762751063361489379">"ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର୍ ଆକ୍ସେସ୍ କରେ"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS ମେସେଜ୍ ପଠାନ୍ତୁ ଓ ଦେଖନ୍ତୁ"</string> @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ଏକ-ହାତ ମୋଡ୍"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ଅତ୍ୟଧିକ ଡିମ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ଶ୍ରବଣ ଡିଭାଇସଗୁଡ଼ିକ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ଡିସକନେକ୍ଟ କରାଯାଇଛି"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"କନେକ୍ଟ କରାଯାଇଛି"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"ସକ୍ରିୟ"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index cee65af4fc0b..7f06227ba147 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ਇੱਕ ਹੱਥ ਮੋਡ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ਸੁਣਨ ਵਾਲੇ ਡੀਵਾਈਸ"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ਡਿਸਕਨੈਕਟ ਹੋ ਗਿਆ"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"ਕਨੈਕਟ ਹੈ"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"ਕਿਰਿਆਸ਼ੀਲ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 0c6eb46afc67..73e4d24ac241 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tryb jednej ręki"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatkowe przyciemnienie"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Urządzenia słuchowe"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Rozłączone"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Połączone"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktywne"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 4fe1c96986c0..f15ab35d54f0 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Tela ainda mais escura"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Aparelhos auditivos"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Ativo"</string> @@ -1990,7 +1992,7 @@ <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string> <string name="toolbar_collapse_description" msgid="8009920446193610996">"Recolher"</string> <string name="zen_mode_feature_name" msgid="3785547207263754500">"Não perturbe"</string> - <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Intervalo"</string> + <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Descanso"</string> <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Durante a semana à noite"</string> <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string> <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index e17b96f8a5e8..e80b780c34cc 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desligado"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ligado"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Ativo"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 4fe1c96986c0..f15ab35d54f0 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Tela ainda mais escura"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Aparelhos auditivos"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Ativo"</string> @@ -1990,7 +1992,7 @@ <string name="zen_mode_rule_name_combination" msgid="7174598364351313725">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string> <string name="toolbar_collapse_description" msgid="8009920446193610996">"Recolher"</string> <string name="zen_mode_feature_name" msgid="3785547207263754500">"Não perturbe"</string> - <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Intervalo"</string> + <string name="zen_mode_downtime_feature_name" msgid="5886005761431427128">"Descanso"</string> <string name="zen_mode_default_weeknights_name" msgid="7902108149994062847">"Durante a semana à noite"</string> <string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string> <string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 596a3ed91ea5..f02923b611d0 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modul cu o mână"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminozitate redusă suplimentar"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Aparate auditive"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Deconectat"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectat"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Activ"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 5104ca11097d..e32ec412c4fd 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим управления одной рукой"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнительное уменьшение яркости"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слуховые аппараты"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Отключено"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Подключено"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 8df50b7c62c3..35251bcd2536 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"තනි අත් ප්රකාරය"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"තවත් අඳුරු"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ශ්රවණ උපාංග"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"විසන්ධි විය"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"සම්බන්ධිතයි"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"සක්රිය"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 1d5b4e5f111d..391b0d76a104 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednej ruky"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mimoriadne stmavenie"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Načúvacie zariadenia"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Odpojené"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Pripojené"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktívne"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 3f9592bbddd0..c84fd1762e6f 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enoročni način"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Zelo zatemnjen zaslon"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni pripomočki"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Brez povezave"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index fa3eeae0429f..25d51a358278 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -353,14 +353,10 @@ <string name="permgroupdesc_sensors" msgid="2610631290633747752">"qasu tek të dhënat e sensorëve rreth shenjave të tua jetësore"</string> <string name="permgrouplab_notifications" msgid="5472972361980668884">"Njoftimet"</string> <string name="permgroupdesc_notifications" msgid="4608679556801506580">"shfaq njoftimet"</string> - <!-- no translation found for permgrouplab_xr_tracking (7418994009794287471) --> - <skip /> - <!-- no translation found for permgroupdesc_xr_tracking (6777198859446500821) --> - <skip /> - <!-- no translation found for permgrouplab_xr_tracking_sensitive (1194833982988144536) --> - <skip /> - <!-- no translation found for permgroupdesc_xr_tracking_sensitive (9178027369004805829) --> - <skip /> + <string name="permgrouplab_xr_tracking" msgid="7418994009794287471">"Të dhënat e gjurmimit për XR"</string> + <string name="permgroupdesc_xr_tracking" msgid="6777198859446500821">"të qaset në të dhënat për XR për ty dhe mjedisin rreth teje"</string> + <string name="permgrouplab_xr_tracking_sensitive" msgid="1194833982988144536">"të dhënat delikate të gjurmimit për XR"</string> + <string name="permgroupdesc_xr_tracking_sensitive" msgid="9178027369004805829">"të qaset në të dhënat delikate të gjurmimit, si p.sh. të vështrimit të syve"</string> <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"Të nxjerrë përmbajtjen e dritares"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"Inspekton përmbajtjen e dritares me të cilën po ndërvepron."</string> <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Të aktivizojë veçorinë \"Eksploro me prekje\""</string> @@ -656,38 +652,22 @@ <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Lejon aplikacionin të modifikojë koleksionin tënd të fotografive."</string> <string name="permlab_mediaLocation" msgid="7368098373378598066">"lexo vendndodhjet nga koleksioni yt i medias"</string> <string name="permdesc_mediaLocation" msgid="597912899423578138">"Lejon aplikacionin të lexojë vendndodhjet nga koleksioni yt i medias."</string> - <!-- no translation found for permlab_eye_tracking_coarse (7989596289790269059) --> - <skip /> - <!-- no translation found for permdesc_eye_tracking_coarse (870510233930553355) --> - <skip /> - <!-- no translation found for permlab_eye_tracking_fine (6914457357027049512) --> - <skip /> - <!-- no translation found for permdesc_eye_tracking_fine (5788889152304524730) --> - <skip /> - <!-- no translation found for permlab_face_tracking (2272048395128283324) --> - <skip /> - <!-- no translation found for permdesc_face_tracking (2622783922311211866) --> - <skip /> - <!-- no translation found for permlab_hand_tracking (6478233866595566940) --> - <skip /> - <!-- no translation found for permdesc_hand_tracking (8639715900104966456) --> - <skip /> - <!-- no translation found for permlab_head_tracking (1309731456372087270) --> - <skip /> - <!-- no translation found for permdesc_head_tracking (231597390513699188) --> - <skip /> - <!-- no translation found for permlab_scene_understanding_coarse (6518646430502858641) --> - <skip /> - <!-- no translation found for permdesc_scene_understanding_coarse (4508880777646198656) --> - <skip /> - <!-- no translation found for permlab_scene_understanding_fine (409126403264393251) --> - <skip /> - <!-- no translation found for permdesc_scene_understanding_fine (6223368011593524179) --> - <skip /> - <!-- no translation found for permlab_xr_tracking_in_background (7117098718465619023) --> - <skip /> - <!-- no translation found for permdesc_xr_tracking_in_background (939504041387836853) --> - <skip /> + <string name="permlab_eye_tracking_coarse" msgid="7989596289790269059">"të gjurmojë vështrimin e përafërt të syve"</string> + <string name="permdesc_eye_tracking_coarse" msgid="870510233930553355">"Lejon që aplikacioni të gjurmojë vështrimin e përafërt të syve"</string> + <string name="permlab_eye_tracking_fine" msgid="6914457357027049512">"të gjurmojë se ku po shikon ti"</string> + <string name="permdesc_eye_tracking_fine" msgid="5788889152304524730">"Lejon që aplikacioni të qaset në të dhënat e vështrimit të saktë të syve."</string> + <string name="permlab_face_tracking" msgid="2272048395128283324">"të gjurmojë fytyrën tënde"</string> + <string name="permdesc_face_tracking" msgid="2622783922311211866">"Lejo që aplikacioni të qaset në të dhënat e gjurmimit të fytyrës."</string> + <string name="permlab_hand_tracking" msgid="6478233866595566940">"të gjurmojë duart e tua"</string> + <string name="permdesc_hand_tracking" msgid="8639715900104966456">"Lejon që aplikacioni të qaset në të dhënat e gjurmimit të duarve."</string> + <string name="permlab_head_tracking" msgid="1309731456372087270">"të gjurmojë kokën tënde"</string> + <string name="permdesc_head_tracking" msgid="231597390513699188">"Lejo që aplikacioni të qaset në të dhënat e gjurmimit të kokës."</string> + <string name="permlab_scene_understanding_coarse" msgid="6518646430502858641">"të kuptojë mjedisin tënd"</string> + <string name="permdesc_scene_understanding_coarse" msgid="4508880777646198656">"Lejon që aplikacioni të qaset në të dhënat e gjurmimit për mjedisin drejtpërdrejt rreth teje."</string> + <string name="permlab_scene_understanding_fine" msgid="409126403264393251">"të kuptojë mjedisin tënd të drejtpërdrejtë me nivel të lartë të detajeve"</string> + <string name="permdesc_scene_understanding_fine" msgid="6223368011593524179">"Lejon që aplikacioni të qaset në të dhënat e gjurmimit për mjedisin drejtpërdrejt rreth teje me nivel shumë të lartë të detajeve."</string> + <string name="permlab_xr_tracking_in_background" msgid="7117098718465619023">"të qaset në të dhënat për XR kur nuk është në plan të parë"</string> + <string name="permdesc_xr_tracking_in_background" msgid="939504041387836853">"Lejon që aplikacioni të qaset në të dhënat për XR kur nuk është në plan të parë."</string> <string name="biometric_app_setting_name" msgid="3339209978734534457">"Përdor sistemet biometrike"</string> <string name="biometric_or_screen_lock_app_setting_name" msgid="5348462421758257752">"Përdor sistemet biometrike ose kyçjen e ekranit"</string> <string name="biometric_dialog_default_title" msgid="55026799173208210">"Verifiko që je ti"</string> @@ -1823,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modaliteti i përdorimit me një dorë"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Shumë më i zbehtë"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Pajisjet e dëgjimit"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Shkëputur"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Lidhur"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktive"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index d6ad76bc17fa..77ceff214d60 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1804,6 +1804,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим једном руком"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додатно затамни"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слушни апарати"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Веза је прекинута"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Повезано"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 3d88850b5b0a..1ee2564ea4f6 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhandsläge"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradimmat"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hörhjälpmedel"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Frånkopplad"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ansluten"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 6d67618ff05b..36bf76dc7eb6 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Hali ya kutumia kwa mkono mmoja"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Kipunguza mwangaza zaidi"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Vifaa vya kusaidia kusikia"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Haijaunganishwa"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Imeunganishwa"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Inatumika"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 6a8179cf4b17..3fa382783be1 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ஒற்றைக் கைப் பயன்முறை"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"மிகக் குறைவான வெளிச்சம்"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"செவித்துணைக் கருவிகள்"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"இணைப்புநீக்கப்பட்டது"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"இணைக்கப்பட்டுள்ளது"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"செயலில் உள்ளது"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 11611ead7bf2..027161e986fc 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"వన్-హ్యాండెడ్ మోడ్"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ఎక్స్ట్రా డిమ్"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"వినికిడి పరికరాలు"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"డిస్కనెక్ట్ అయింది"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"కనెక్ట్ చేయబడింది"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"యాక్టివ్"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index d854025051bd..f82adc6a4f64 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"โหมดมือเดียว"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"หรี่แสงเพิ่มเติม"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"เครื่องช่วยฟัง"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"เลิกเชื่อมต่อแล้ว"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"เชื่อมต่อแล้ว"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"ใช้งานอยู่"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 78f44c8f0bd9..328997d33382 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Hand mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Mga hearing device"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nadiskonekta"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Nakakonekta"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktibo"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index b575d9f996ea..5106e1a6545d 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tek El modu"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra loş"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"İşitme cihazları"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Bağlı değil"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Bağlı"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Etkin"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 737c245b017a..203cdfac5c1d 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1805,6 +1805,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим керування однією рукою"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додаткове зменшення яскравості"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слухові апарати"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Від’єднано"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Під’єднано"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Активний"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 82292bf7cd79..376efd1f0bd6 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ایک ہاتھ کی وضع"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"اضافی مدھم"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"سماعتی آلات"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"غیر منسلک ہے"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"منسلک ہے"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"فعال"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 0e6616582f0a..a1b9e5d0a754 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ixcham rejim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Juda xira"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Eshitish qurilmalari"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Uzildi"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ulandi"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Faol"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 754e66e817cb..473568de3e31 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Chế độ một tay"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Siêu tối"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Thiết bị trợ thính"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Đã ngắt kết nối"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Đã kết nối"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Đang hoạt động"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 1f625ad55355..f91f457b85cc 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"单手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"极暗"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"助听装置"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"已断开连接"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"已连接"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"活跃"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index fc2783ce95db..9bcb1730d63f 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"助聽器"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"已中斷連線"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"已連線"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"運作中"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index c53aaa1b0f48..9f8fd6713097 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"助聽器"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"連線中斷"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"已連線"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"運作中"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 079bf67bec6b..a0df4a1cbc0b 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1803,6 +1803,8 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Imodi yesandla esisodwa"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ukufiphaza okwengeziwe"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Amadivayizi okuzwa"</string> + <!-- no translation found for autoclick_feature_name (8149248738736949630) --> + <skip /> <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Inqamukile"</string> <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ixhunyiwe"</string> <string name="hearing_device_status_active" msgid="4770378695482566032">"Kuyasebenza"</string> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 9acb2427aaab..a1961aedf6b7 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -268,6 +268,9 @@ 72dp (content margin) - 12dp (action padding) - 4dp (button inset) --> <dimen name="notification_2025_actions_margin_start">56dp</dimen> + <!-- Notification action button text size --> + <dimen name="notification_2025_action_text_size">16sp</dimen> + <!-- The margin on the end of most content views (ignores the expander) --> <dimen name="notification_content_margin_end">16dp</dimen> diff --git a/core/res/res/values/locale_config.xml b/core/res/res/values/locale_config.xml index 77d2e873682f..0efa1bcbf975 100644 --- a/core/res/res/values/locale_config.xml +++ b/core/res/res/values/locale_config.xml @@ -163,15 +163,18 @@ <item>en-CM</item> <!-- English (Cameroon) --> <item>en-CX</item> <!-- English (Christmas Island) --> <item>en-CY</item> <!-- English (Cyprus) --> + <item>en-CZ</item> <!-- English (Czechia) --> <item>en-DE</item> <!-- English (Germany) --> <item>en-DG</item> <!-- English (Diego Garcia) --> <item>en-DK</item> <!-- English (Denmark) --> <item>en-DM</item> <!-- English (Dominica) --> <item>en-ER</item> <!-- English (Eritrea) --> + <item>en-ES</item> <!-- English (Spain) --> <item>en-FI</item> <!-- English (Finland) --> <item>en-FJ</item> <!-- English (Fiji) --> <item>en-FK</item> <!-- English (Falkland Islands (Islas Malvinas)) --> <item>en-FM</item> <!-- English (Micronesia) --> + <item>en-FR</item> <!-- English (France) --> <item>en-GB</item> <!-- English (United Kingdom) --> <item>en-GD</item> <!-- English (Grenada) --> <item>en-GG</item> <!-- English (Guernsey) --> @@ -181,12 +184,14 @@ <item>en-GU</item> <!-- English (Guam) --> <item>en-GY</item> <!-- English (Guyana) --> <item>en-HK</item> <!-- English (Hong Kong) --> + <item>en-HU</item> <!-- English (Hungary) --> <item>en-ID</item> <!-- English (Indonesia) --> <item>en-IE</item> <!-- English (Ireland) --> <item>en-IL</item> <!-- English (Israel) --> <item>en-IM</item> <!-- English (Isle of Man) --> <item>en-IN</item> <!-- English (India) --> <item>en-IO</item> <!-- English (British Indian Ocean Territory) --> + <item>en-IT</item> <!-- English (Italy) --> <item>en-JE</item> <!-- English (Jersey) --> <item>en-JM</item> <!-- English (Jamaica) --> <item>en-KE</item> <!-- English (Kenya) --> @@ -210,15 +215,19 @@ <item>en-NF</item> <!-- English (Norfolk Island) --> <item>en-NG</item> <!-- English (Nigeria) --> <item>en-NL</item> <!-- English (Netherlands) --> + <item>en-NO</item> <!-- English (Norway) --> <item>en-NR</item> <!-- English (Nauru) --> <item>en-NU</item> <!-- English (Niue) --> <item>en-NZ</item> <!-- English (New Zealand) --> <item>en-PG</item> <!-- English (Papua New Guinea) --> <item>en-PH</item> <!-- English (Philippines) --> <item>en-PK</item> <!-- English (Pakistan) --> + <item>en-PL</item> <!-- English (Poland) --> <item>en-PN</item> <!-- English (Pitcairn Islands) --> <item>en-PR</item> <!-- English (Puerto Rico) --> + <item>en-PT</item> <!-- English (Portugal) --> <item>en-PW</item> <!-- English (Palau) --> + <item>en-RO</item> <!-- English (Romania) --> <item>en-RW</item> <!-- English (Rwanda) --> <item>en-SB</item> <!-- English (Solomon Islands) --> <item>en-SC</item> <!-- English (Seychelles) --> @@ -227,6 +236,7 @@ <item>en-SG</item> <!-- English (Singapore) --> <item>en-SH</item> <!-- English (St. Helena) --> <item>en-SI</item> <!-- English (Slovenia) --> + <item>en-SK</item> <!-- English (Slovakia) --> <item>en-SL</item> <!-- English (Sierra Leone) --> <item>en-SS</item> <!-- English (South Sudan) --> <item>en-SX</item> <!-- English (Sint Maarten) --> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 6a83bae15e76..cb3dfc70d135 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -5063,8 +5063,6 @@ <!-- Notification action button. Click it will open the bluetooth device details page for this hearing device. It will be shown when making a phone call with the hearing device. [CHAR LIMIT=none] --> <string name="hearing_device_notification_settings_button">Settings</string> - <!-- Text spoken when the current user is switched if accessibility is enabled. [CHAR LIMIT=none] --> - <string name="user_switched">Current user <xliff:g id="name" example="Bob">%1$s</xliff:g>.</string> <!-- Message shown when switching to a user [CHAR LIMIT=none] --> <string name="user_switching_message">Switching to <xliff:g id="name" example="Bob">%1$s</xliff:g>\u2026</string> <!-- Message when logging out a user on a split user system --> diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java index 4516e9ce72fc..af87af0d243f 100644 --- a/core/tests/coretests/src/android/view/InsetsControllerTest.java +++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java @@ -1195,6 +1195,23 @@ public class InsetsControllerTest { }); } + @Test + public void testAnimatingTypes() throws Exception { + prepareControls(); + + final int types = navigationBars() | statusBars(); + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + clearInvocations(mTestHost); + mController.hide(types); + // quickly jump to final state by cancelling it. + mController.cancelExistingAnimations(); + }); + InstrumentationRegistry.getInstrumentation().waitForIdleSync(); + + verify(mTestHost, times(1)).updateAnimatingTypes(eq(types)); + verify(mTestHost, times(1)).updateAnimatingTypes(eq(0) /* animatingTypes */); + } + private void waitUntilNextFrame() throws Exception { final CountDownLatch latch = new CountDownLatch(1); Choreographer.getMainThreadInstance().postCallback(Choreographer.CALLBACK_COMMIT, diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java index c40137f1bd34..f5d1e7a85e83 100644 --- a/core/tests/coretests/src/android/view/ViewRootImplTest.java +++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java @@ -1054,7 +1054,7 @@ public class ViewRootImplTest { ViewRootImpl viewRootImpl = mView.getViewRootImpl(); sInstrumentation.runOnMainSync(() -> { mView.invalidate(); - viewRootImpl.notifyInsetsAnimationRunningStateChanged(true); + viewRootImpl.updateAnimatingTypes(Type.systemBars()); mView.invalidate(); }); sInstrumentation.waitForIdleSync(); diff --git a/core/tests/featureflagtests/OWNERS b/core/tests/featureflagtests/OWNERS index 2ff4f5ab8807..6784f2891009 100644 --- a/core/tests/featureflagtests/OWNERS +++ b/core/tests/featureflagtests/OWNERS @@ -1,2 +1 @@ -sbasi@google.com -tmfang@google.com
\ No newline at end of file +tmfang@google.com diff --git a/data/keyboards/Vendor_0957_Product_0031.kl b/data/keyboards/Vendor_0957_Product_0031.kl index b47ee58c0c10..dd9fbe54c4a0 100644 --- a/data/keyboards/Vendor_0957_Product_0031.kl +++ b/data/keyboards/Vendor_0957_Product_0031.kl @@ -15,7 +15,7 @@ # Key Layout file for Google Reference RCU Remote with customizable button. # -key 116 TV_POWER WAKE +key 116 POWER WAKE key 217 ASSIST WAKE key 423 MACRO_1 WAKE diff --git a/drm/java/android/drm/OWNERS b/drm/java/android/drm/OWNERS index 43871001c9ad..b65cce70225e 100644 --- a/drm/java/android/drm/OWNERS +++ b/drm/java/android/drm/OWNERS @@ -1,4 +1,3 @@ # Bug component: 49079 -jtinker@google.com robertshih@google.com diff --git a/graphics/java/android/framework_graphics.aconfig b/graphics/java/android/framework_graphics.aconfig index fdbee3ccbebe..8753ad8e62ef 100644 --- a/graphics/java/android/framework_graphics.aconfig +++ b/graphics/java/android/framework_graphics.aconfig @@ -44,9 +44,9 @@ flag { } flag { - name: "gradient_drawable_shape_rounded_cap" + name: "gradient_drawable_shape_arc_for_rounded_cap" is_fixed_read_only: true - namespace: "core_graphics" - description: "Make GradientDrawable support drawing ring with rounded stroke cap." + namespace: "wear_frameworks" + description: "Make GradientDrawable support arc shape for drawing ring with rounded stroke cap." bug: "380000245" } diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java index ff1dc93d787b..3b717fcbb958 100644 --- a/graphics/java/android/graphics/drawable/GradientDrawable.java +++ b/graphics/java/android/graphics/drawable/GradientDrawable.java @@ -16,8 +16,8 @@ package android.graphics.drawable; -import static com.android.graphics.flags.Flags.FLAG_GRADIENT_DRAWABLE_SHAPE_ROUNDED_CAP; -import static com.android.graphics.flags.Flags.gradientDrawableShapeRoundedCap; +import static com.android.graphics.flags.Flags.FLAG_GRADIENT_DRAWABLE_SHAPE_ARC_FOR_ROUNDED_CAP; +import static com.android.graphics.flags.Flags.gradientDrawableShapeArcForRoundedCap; import android.annotation.ColorInt; import android.annotation.FlaggedApi; @@ -132,7 +132,7 @@ public class GradientDrawable extends Drawable { /** * Shape is an arc. */ - @FlaggedApi(FLAG_GRADIENT_DRAWABLE_SHAPE_ROUNDED_CAP) + @FlaggedApi(FLAG_GRADIENT_DRAWABLE_SHAPE_ARC_FOR_ROUNDED_CAP) public static final int ARC = 4; /** @hide */ @@ -874,7 +874,7 @@ public class GradientDrawable extends Drawable { break; } case ARC: - if (gradientDrawableShapeRoundedCap()) { + if (gradientDrawableShapeArcForRoundedCap()) { // TODO(b/394988176): Consider applying ARC drawing logic to RING shape. float centerX = mRect.centerX(); float centerY = mRect.centerY(); @@ -2159,7 +2159,6 @@ public class GradientDrawable extends Drawable { public int mInnerRadius = -1; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 124050218) public int mThickness = -1; - @UnsupportedAppUsage(trackingBug = 380000245) @StrokeCap public int mStrokeCap = ROUND; public boolean mDither = false; diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt index 7b5831376dc0..14c15210252a 100644 --- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt +++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerViewTest.kt @@ -19,7 +19,9 @@ package com.android.wm.shell.bubbles.bar import android.animation.AnimatorTestRule import android.content.Context import android.content.pm.LauncherApps +import android.graphics.Insets import android.graphics.PointF +import android.graphics.Rect import android.os.Handler import android.os.UserManager import android.view.IWindowManager @@ -61,6 +63,7 @@ import com.android.wm.shell.common.TestShellExecutor import com.android.wm.shell.shared.TransactionPool import com.android.wm.shell.shared.animation.PhysicsAnimatorTestUtils import com.android.wm.shell.shared.bubbles.BubbleBarLocation +import com.android.wm.shell.shared.bubbles.DeviceConfig import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit @@ -80,6 +83,10 @@ import org.mockito.kotlin.whenever @SmallTest @RunWith(AndroidJUnit4::class) class BubbleBarLayerViewTest { + companion object { + const val SCREEN_WIDTH = 2000 + const val SCREEN_HEIGHT = 1000 + } @get:Rule val animatorTestRule: AnimatorTestRule = AnimatorTestRule(this) @@ -111,6 +118,16 @@ class BubbleBarLayerViewTest { bubblePositioner = BubblePositioner(context, windowManager) bubblePositioner.setShowingInBubbleBar(true) + val deviceConfig = + DeviceConfig( + windowBounds = Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), + isLargeScreen = true, + isSmallTablet = false, + isLandscape = true, + isRtl = false, + insets = Insets.of(10, 20, 30, 40) + ) + bubblePositioner.update(deviceConfig) testBubblesList = mutableListOf() val bubbleData = mock<BubbleData>() @@ -313,6 +330,48 @@ class BubbleBarLayerViewTest { assertThat(uiEventLoggerFake.logs[0]).hasBubbleInfo(bubble) } + @Test + fun testUpdateExpandedView_updateLocation() { + bubblePositioner.bubbleBarLocation = BubbleBarLocation.RIGHT + val bubble = createBubble("first") + + getInstrumentation().runOnMainSync { + bubbleBarLayerView.showExpandedView(bubble) + } + waitForExpandedViewAnimation() + + val previousX = bubble.bubbleBarExpandedView!!.x + + bubblePositioner.bubbleBarLocation = BubbleBarLocation.LEFT + getInstrumentation().runOnMainSync { + bubbleBarLayerView.updateExpandedView() + } + + assertThat(bubble.bubbleBarExpandedView!!.x).isNotEqualTo(previousX) + } + + @Test + fun testUpdatedExpandedView_updateLocation_skipWhileAnimating() { + bubblePositioner.bubbleBarLocation = BubbleBarLocation.RIGHT + val bubble = createBubble("first") + + getInstrumentation().runOnMainSync { + bubbleBarLayerView.showExpandedView(bubble) + } + waitForExpandedViewAnimation() + + val previousX = bubble.bubbleBarExpandedView!!.x + bubble.bubbleBarExpandedView!!.isAnimating = true + + bubblePositioner.bubbleBarLocation = BubbleBarLocation.LEFT + getInstrumentation().runOnMainSync { + bubbleBarLayerView.updateExpandedView() + } + + // Expanded view is not updated while animating + assertThat(bubble.bubbleBarExpandedView!!.x).isEqualTo(previousX) + } + private fun createBubble(key: String): Bubble { val bubbleTaskView = FakeBubbleTaskViewFactory(context, mainExecutor).create() val bubbleBarExpandedView = diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml index d50a14cf5dae..c2aa146d6437 100644 --- a/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml +++ b/libs/WindowManager/Shell/res/layout/desktop_mode_window_decor_maximize_menu.xml @@ -79,7 +79,7 @@ android:layout_marginEnd="4dp"> <Button - android:layout_width="94dp" + android:layout_width="108dp" android:layout_height="60dp" android:id="@+id/maximize_menu_size_toggle_button" style="?android:attr/buttonBarButtonStyle" @@ -126,7 +126,7 @@ <Button android:id="@+id/maximize_menu_snap_left_button" style="?android:attr/buttonBarButtonStyle" - android:layout_width="41dp" + android:layout_width="48dp" android:layout_height="@dimen/desktop_mode_maximize_menu_button_height" android:layout_marginEnd="4dp" android:background="@drawable/desktop_mode_maximize_menu_button_background" @@ -137,7 +137,7 @@ <Button android:id="@+id/maximize_menu_snap_right_button" style="?android:attr/buttonBarButtonStyle" - android:layout_width="41dp" + android:layout_width="48dp" android:layout_height="@dimen/desktop_mode_maximize_menu_button_height" android:background="@drawable/desktop_mode_maximize_menu_button_background" android:importantForAccessibility="yes" diff --git a/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml b/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml index f6256e6bc5e7..ed5b339a81d4 100644 --- a/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml +++ b/libs/WindowManager/Shell/res/layout/open_by_default_settings_dialog.xml @@ -72,7 +72,7 @@ android:layout_height="wrap_content" android:textSize="12sp" android:textFontWeight="400" - android:lineHeight="16dp" + android:lineHeight="28dp" android:layout_gravity="center_horizontal" android:layout_marginBottom="16dp" android:textColor="@androidprv:color/materialColorOnSurfaceVariant" @@ -113,12 +113,13 @@ <Button android:id="@+id/open_by_default_settings_dialog_confirm_button" android:layout_width="wrap_content" - android:layout_height="36dp" + android:layout_height="wrap_content" + android:minHeight="48dp" android:text="@string/open_by_default_dialog_dismiss_button_text" android:layout_gravity="end" android:layout_marginHorizontal="24dp" - android:layout_marginTop="32dp" - android:layout_marginBottom="24dp" + android:layout_marginTop="26dp" + android:layout_marginBottom="18dp" android:textSize="14sp" android:textFontWeight="500" android:textColor="@androidprv:color/materialColorOnPrimary" diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml index 0f4264567193..4dffce59aec6 100644 --- a/libs/WindowManager/Shell/res/values-af/strings.xml +++ b/libs/WindowManager/Shell/res/values-af/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Links 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Links 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Volskerm regs"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ruil apps om"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Volskerm bo"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Bo 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bo 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Herbegin"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Moenie weer wys nie"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dubbeltik om\nhierdie app te skuif"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimeer"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Maak klein"</string> - <string name="close_button_text" msgid="2913281996024033299">"Maak toe"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Terug"</string> <string name="handle_text" msgid="4419667835599523257">"Apphandvatsel"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikoon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Verander grootte van linkerkantse venster"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Verander grootte van regterkantse venster"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimeer of stel venstergrootte terug"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimeer of stel venstergrootte terug"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimeer appvenster"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Maak By Verstek Oop-instellings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Kies hoe om webskakels vir hierdie app oop te maak"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In die app"</string> diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml index be02f4375e3b..0881e778fa52 100644 --- a/libs/WindowManager/Shell/res/values-am/strings.xml +++ b/libs/WindowManager/Shell/res/values-am/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ግራ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ግራ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"የቀኝ ሙሉ ማያ ገፅ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"መተግበሪያዎችን ይቀያይሩ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"የላይ ሙሉ ማያ ገፅ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ከላይ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ከላይ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"እንደገና ያስጀምሩ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ዳግም አታሳይ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ይህን መተግበሪያ\nለማንቀሳቀስ ሁለቴ መታ ያድርጉ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"አስፋ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"አሳንስ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ዝጋ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ተመለስ"</string> <string name="handle_text" msgid="4419667835599523257">"የመተግበሪያ መያዣ"</string> <string name="app_icon_text" msgid="2823268023931811747">"የመተግበሪያ አዶ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"መስኮትን ወደ ግራ መጠን ቀይር"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"መስኮትን ወደ ቀኝ መጠን ቀይር"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"የመስኮት መጠንን አሳድግ ወይም ወደነበረበት መልስ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"የመተግበሪያ መስኮትን አሳንስ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"በነባሪ ቅንብሮች ክፈት"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ለዚህ የድር መተግበሪያ አገናኙን እንዴት እንደሚከፍቱ ይምረጡ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"በመተግበሪያው ውስጥ"</string> diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml index 16809221ca77..9cc49aa144b5 100644 --- a/libs/WindowManager/Shell/res/values-ar/strings.xml +++ b/libs/WindowManager/Shell/res/values-ar/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ضبط حجم النافذة اليسرى ليكون ٥٠%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ضبط حجم النافذة اليسرى ليكون ٣٠%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"عرض النافذة اليمنى بملء الشاشة"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"تبديل التطبيقات"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"عرض النافذة العلوية بملء الشاشة"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ضبط حجم النافذة العلوية ليكون ٧٠%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ضبط حجم النافذة العلوية ليكون ٥٠%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"إعادة التشغيل"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"عدم عرض مربّع حوار التأكيد مجددًا"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"انقر مرّتَين لنقل\nهذا التطبيق."</string> - <string name="maximize_button_text" msgid="1650859196290301963">"تكبير"</string> - <string name="minimize_button_text" msgid="271592547935841753">"تصغير"</string> - <string name="close_button_text" msgid="2913281996024033299">"إغلاق"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"رجوع"</string> <string name="handle_text" msgid="4419667835599523257">"مقبض التطبيق"</string> <string name="app_icon_text" msgid="2823268023931811747">"رمز التطبيق"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغيير حجم النافذة بمحاذاتها إلى اليمين"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغيير حجم النافذة بمحاذاتها إلى اليسار"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"تكبير حجم النافذة أو استعادته"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"تكبير حجم النافذة أو استعادته"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"تصغير نافذة التطبيق"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"إعدادات الفتح تلقائيًا"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"اختيار طريقة فتح روابط الويب لهذا التطبيق"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"في التطبيق"</string> diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml index 0bc4a0a59239..c59753c7803f 100644 --- a/libs/WindowManager/Shell/res/values-as/strings.xml +++ b/libs/WindowManager/Shell/res/values-as/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"বাওঁফালৰ স্ক্ৰীনখন ৫০% কৰক"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"বাওঁফালৰ স্ক্ৰীনখন ৩০% কৰক"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"সোঁফালৰ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"এপ্সমূহ সলনাসলনি কৰক"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"শীৰ্ষ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"শীর্ষ স্ক্ৰীনখন ৭০% কৰক"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ স্ক্ৰীনখন ৫০% কৰক"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ৰিষ্টাৰ্ট কৰক"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"পুনৰাই নেদেখুৱাব"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"এই এপ্টো\nস্থানান্তৰ কৰিবলৈ দুবাৰ টিপক"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"সৰ্বাধিক মাত্ৰালৈ বঢ়াওক"</string> - <string name="minimize_button_text" msgid="271592547935841753">"মিনিমাইজ কৰক"</string> - <string name="close_button_text" msgid="2913281996024033299">"বন্ধ কৰক"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"উভতি যাওক"</string> <string name="handle_text" msgid="4419667835599523257">"এপৰ হেণ্ডেল"</string> <string name="app_icon_text" msgid="2823268023931811747">"এপৰ চিহ্ন"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"সোঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"বাওঁফাললৈ ৱিণ্ড’ৰ আকাৰ সলনি কৰক"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ৱিণ্ড’ৰ আকাৰ মেক্সিমাইজ বা পুনঃস্থাপন কৰক"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"এপ্ ৱিণ্ড’ মিনিমাইজ কৰক"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ডিফ’ল্ট ছেটিং খোলক"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"এই এপ্টোৰ বাবে কিদৰে ৱেব লিংক খুলিব পাৰি সেয়া বাছনি কৰক"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"এপ্টোত"</string> diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml index 2ccae4b20237..63e610b53420 100644 --- a/libs/WindowManager/Shell/res/values-az/strings.xml +++ b/libs/WindowManager/Shell/res/values-az/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Sol 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Sol 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Sağ tam ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Tətbiqləri dəyişin"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Yuxarı tam ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Yuxarı 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yuxarı 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Yenidən başladın"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Yenidən göstərməyin"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tətbiqi köçürmək üçün\niki dəfə toxunun"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Böyüdün"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Kiçildin"</string> - <string name="close_button_text" msgid="2913281996024033299">"Bağlayın"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Geriyə"</string> <string name="handle_text" msgid="4419667835599523257">"Tətbiq ləqəbi"</string> <string name="app_icon_text" msgid="2823268023931811747">"Tətbiq ikonası"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pəncərə ölçüsünü sola dəyişin"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pəncərə ölçüsünü sağa dəyişin"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Pəncərə ölçüsünü artırın və ya bərpa edin"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Tətbiq pəncərəsini kiçildin"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Defolt ayarlarla açın"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu tətbiq üçün veb-linklərin necə açılacağını seçin"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Tətbiqdə"</string> diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml index b79b8605140d..7cb6f87dc97f 100644 --- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml +++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi ekran 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi ekran 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Režim celog ekrana za donji ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamenite mesta aplikacijama"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Režim celog ekrana za gornji ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji ekran 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji ekran 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restartuj"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikazuj ponovo"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvaput dodirnite da biste\npremestili ovu aplikaciju"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Uvećajte"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Umanjite"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zatvorite"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string> <string name="handle_text" msgid="4419667835599523257">"Identifikator aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promenite veličinu prozora nalevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promenite veličinu prozora nadesno"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Uvećajte ili vratite veličinu prozora"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Uvećajte ili vratite veličinu prozora"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Umanjite prozor aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Podešavanje Podrazumevano otvaraj"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja veb-linkova za ovu aplikaciju"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml index d26c37ba5e15..4f3da2b2f5d8 100644 --- a/libs/WindowManager/Shell/res/values-be/strings.xml +++ b/libs/WindowManager/Shell/res/values-be/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левы экран – 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левы экран – 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Правы экран – поўнаэкранны рэжым"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Пераключыць праграмы"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхні экран – поўнаэкранны рэжым"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхні экран – 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхні экран – 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Перазапусціць"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Больш не паказваць"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Каб перамясціць праграму,\nнацісніце двойчы"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Разгарнуць"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Згарнуць"</string> - <string name="close_button_text" msgid="2913281996024033299">"Закрыць"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Маркер праграмы"</string> <string name="app_icon_text" msgid="2823268023931811747">"Значок праграмы"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змяніць памер акна і перамясціць да левага краю"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змяніць памер акна і перамясціць да правага краю"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Разгарнуць акно ці аднавіць яго памер"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Разгарнуць акно ці аднавіць яго памер"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Згарнуць акно праграмы"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Налады параметра \"Адкрываць стандартна\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Выберыце, як гэта праграма будзе адкрываць вэб-спасылкі"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У праграме"</string> diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml index 9cc9db805728..3f867a22e13b 100644 --- a/libs/WindowManager/Shell/res/values-bg/strings.xml +++ b/libs/WindowManager/Shell/res/values-bg/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ляв екран: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ляв екран: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Десен екран: Показване на цял екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Размяна на приложенията"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Горен екран: Показване на цял екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горен екран: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горен екран: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Рестартиране"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Да не се показва отново"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Докоснете двукратно, за да\nпреместите това приложение"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Увеличаване"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Намаляване"</string> - <string name="close_button_text" msgid="2913281996024033299">"Затваряне"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Манипулатор за приложението"</string> <string name="app_icon_text" msgid="2823268023931811747">"Икона на приложението"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Преоразмеряване на прозореца наляво"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Преоразмеряване на прозореца надясно"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увеличаване или възстановяване на размера на прозореца"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Увеличаване или възстановяване на размера на прозореца"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Намаляване на прозореца на приложението"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Отваряне на настройките по подразбиране"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Изберете как да се отварят уеб връзките за това приложение"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"В приложението"</string> diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml index c1264d41105b..3967d4bfa591 100644 --- a/libs/WindowManager/Shell/res/values-bn/strings.xml +++ b/libs/WindowManager/Shell/res/values-bn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"৫০% বাকি আছে"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"৩০% বাকি আছে"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ডান দিকের অংশ নিয়ে পূর্ণ স্ক্রিন"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"অ্যাপ পাল্টান"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"উপর দিকের অংশ নিয়ে পূর্ণ স্ক্রিন"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"শীর্ষ ৭০%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ ৫০%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"রিস্টার্ট করুন"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"আর দেখতে চাই না"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"এই অ্যাপ সরাতে\nডবল ট্যাপ করুন"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"বড় করুন"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ছোট করুন"</string> - <string name="close_button_text" msgid="2913281996024033299">"বন্ধ করুন"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ফিরে যান"</string> <string name="handle_text" msgid="4419667835599523257">"অ্যাপের হ্যান্ডেল"</string> <string name="app_icon_text" msgid="2823268023931811747">"অ্যাপ আইকন"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"বাঁদিকে উইন্ডো রিসাইজ করুন"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ডানদিকে উইন্ডো রিসাইজ করুন"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"উইন্ডো সাইজ বড় বা রিস্টোর করুন"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"অ্যাপ উইন্ডো ছোট করুন"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ডিফল্ট হিসেবে থাকা সেটিংস খুলুন"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"এই অ্যাপের জন্য কীভাবে ওয়েব লিঙ্ক খুলবেন তা বেছে নিন"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"অ্যাপের মধ্যে"</string> diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml index 7c912b6759db..6b59d91e741f 100644 --- a/libs/WindowManager/Shell/res/values-bs/strings.xml +++ b/libs/WindowManager/Shell/res/values-bs/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Lijevo 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Lijevo 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desno cijeli ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamjena aplikacija"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Gore cijeli ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gore 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gore 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Ponovo pokreni"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikazuj ponovo"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dodirnite dvaput da\npomjerite aplikaciju"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimiziranje"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimiziranje"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zatvaranje"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string> <string name="handle_text" msgid="4419667835599523257">"Ručica aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promjena veličine prozora i poravnanje lijevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promjena veličine prozora i poravnanje desno"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziranje ili vraćanje veličine prozora"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimiziranje ili vraćanje veličine prozora"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimiziranje prozora aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvaranje prema zadanim postavkama"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja web linkova za ovu aplikaciju"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml index 2c2a1776018c..955e5cc6ecbc 100644 --- a/libs/WindowManager/Shell/res/values-ca/strings.xml +++ b/libs/WindowManager/Shell/res/values-ca/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Pantalla esquerra al 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Pantalla esquerra al 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla dreta completa"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Canvia les aplicacions"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Pantalla superior al 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Pantalla superior al 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reinicia"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"No ho tornis a mostrar"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Fes doble toc per\nmoure aquesta aplicació"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximitza"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimitza"</string> - <string name="close_button_text" msgid="2913281996024033299">"Tanca"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Enrere"</string> <string name="handle_text" msgid="4419667835599523257">"Identificador de l\'aplicació"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icona de l\'aplicació"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Canvia la mida de la finestra a l\'esquerra"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Canvia la mida de la finestra a la dreta"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximitza o restaura la mida de la finestra"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximitza o restaura la mida de la finestra"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimitza la finestra de l\'aplicació"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Configuració d\'obertura predeterminada"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Tria com vols obrir els enllaços web per a aquesta aplicació"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"A l\'aplicació"</string> diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml index e47d1f60137e..673f7fc2f8c1 100644 --- a/libs/WindowManager/Shell/res/values-cs/strings.xml +++ b/libs/WindowManager/Shell/res/values-cs/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % vlevo"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % vlevo"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pravá část na celou obrazovku"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zaměnit aplikace"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Horní část na celou obrazovku"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % nahoře"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % nahoře"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restartovat"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Tuto zprávu příště nezobrazovat"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvojitým klepnutím\npřesunete aplikaci"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximalizovat"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalizovat"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zavřít"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Zpět"</string> <string name="handle_text" msgid="4419667835599523257">"Popisovač aplikace"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikace"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Přichytit okno vlevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Přichytit okno vpravo"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovat nebo obnovit velikost okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximalizovat nebo obnovit velikost okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalizovat okno aplikace"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otevírat podle výchozího nastavení"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Určete, jak se v této aplikaci mají otevírat webové odkazy"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikaci"</string> diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml index f5656d58094f..635df334f9ff 100644 --- a/libs/WindowManager/Shell/res/values-da/strings.xml +++ b/libs/WindowManager/Shell/res/values-da/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Venstre 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Venstre 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Vis højre del i fuld skærm"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Byt apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Vis øverste del i fuld skærm"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Øverste 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Øverste 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Genstart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Vis ikke igen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tryk to gange\nfor at flytte appen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimér"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimer"</string> - <string name="close_button_text" msgid="2913281996024033299">"Luk"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tilbage"</string> <string name="handle_text" msgid="4419667835599523257">"Apphåndtag"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Juster størrelsen på vinduet til venstre"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Juster størrelsen på vinduet til højre"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gendan vinduesstørrelse"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimer eller gendan vinduesstørrelse"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimer appvindue"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Indstillinger for automatisk åbning"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Vælg, hvordan denne app skal åben weblinks"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string> diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml index 3762b4b28631..5be8b0b34993 100644 --- a/libs/WindowManager/Shell/res/values-de/strings.xml +++ b/libs/WindowManager/Shell/res/values-de/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % links"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % links"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Vollbild rechts"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apps austauschen"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Vollbild oben"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % oben"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % oben"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Neu starten"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Nicht mehr anzeigen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Zum Verschieben\ndoppeltippen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximieren"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimieren"</string> - <string name="close_button_text" msgid="2913281996024033299">"Schließen"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Zurück"</string> <string name="handle_text" msgid="4419667835599523257">"App-Ziehpunkt"</string> <string name="app_icon_text" msgid="2823268023931811747">"App-Symbol"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Fenstergröße nach links anpassen"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Fenstergröße nach rechts anpassen"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Fenstergröße maximieren oder wiederherstellen"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Fenstergröße maximieren oder wiederherstellen"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"App-Fenster minimieren"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Einstellungen für die Option „Standardmäßig öffnen“"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Festlegen, wie Weblinks für diese App geöffnet werden"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In der App"</string> diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml index 8e715d5c232e..bd3cf053836a 100644 --- a/libs/WindowManager/Shell/res/values-el/strings.xml +++ b/libs/WindowManager/Shell/res/values-el/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Αριστερή 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Αριστερή 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Δεξιά πλήρης οθόνη"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Εναλλαγή εφαρμογών"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Πάνω πλήρης οθόνη"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Πάνω 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Πάνω 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Επανεκκίνηση"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Να μην εμφανιστεί ξανά"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Πατήστε δύο φορές για\nμετακίνηση αυτής της εφαρμογής"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Μεγιστοποίηση"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Ελαχιστοποίηση"</string> - <string name="close_button_text" msgid="2913281996024033299">"Κλείσιμο"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Πίσω"</string> <string name="handle_text" msgid="4419667835599523257">"Λαβή εφαρμογής"</string> <string name="app_icon_text" msgid="2823268023931811747">"Εικονίδιο εφαρμογής"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Αλλαγή μεγέθους παραθύρου προς τα αριστερά"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Αλλαγή μεγέθους παραθύρου προς τα δεξιά"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Μεγιστοποίηση ή επαναφορά μεγέθους παραθύρου"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ελαχιστοποίηση παραθύρου εφαρμογής"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Άνοιγμα ρυθμίσεων από προεπιλογή"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Επιλογή τρόπου ανοίγματος συνδέσμων ιστού για την εφαρμογή"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Στην εφαρμογή"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml index 75d2bf1ae5e3..b137d80dcd2b 100644 --- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don\'t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximise"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimise"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximise or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimise app window"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml index e552f95c20c6..9b9294dbeba8 100644 --- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml @@ -43,7 +43,8 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap Apps"</string> + <string name="accessibility_action_divider_swap_vertical" msgid="3644891227133372072">"Swap top app with bottom"</string> + <string name="accessibility_action_divider_swap_horizontal" msgid="2722197605446631628">"Swap left app with right"</string> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +113,10 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don’t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximize"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimize"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <string name="maximize_button_text" msgid="8106849394538234709">"Maximize <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="restore_button_text" msgid="5377571986086775288">"Restore <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="minimize_button_text" msgid="5213953162664451152">"Minimize <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="close_button_text" msgid="4544839489310949894">"Close <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App Icon"</string> @@ -150,8 +152,10 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximize or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximize or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimize app window"</string> + <string name="app_header_talkback_action_maximize_button_text" msgid="8776156791095878638">"Maximize app window size"</string> + <string name="app_header_talkback_action_restore_button_text" msgid="2153022340772980863">"Restore window size"</string> + <string name="app_header_talkback_action_minimize_button_text" msgid="7491054416186901764">"Minimize app window"</string> + <string name="app_header_talkback_action_close_button_text" msgid="5159612596378268926">"Close app window"</string> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml index 75d2bf1ae5e3..b137d80dcd2b 100644 --- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don\'t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximise"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimise"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximise or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimise app window"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml index 75d2bf1ae5e3..b137d80dcd2b 100644 --- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Left 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Left 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Right full screen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Swap apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Top full screen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Top 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Top 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Don\'t show again"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Double-tap to\nmove this app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximise"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimise"</string> - <string name="close_button_text" msgid="2913281996024033299">"Close"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="4419667835599523257">"App handle"</string> <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Resize window to left"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Resize window to right"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximise or restore window size"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximise or restore window size"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimise app window"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Open by default settings"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choose how to open web links for this app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In the app"</string> diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml index c358ae447361..ebfdc6d0a780 100644 --- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml +++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Izquierda: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Izquierda: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla derecha completa"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Intercambiar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Superior: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"No volver a mostrar"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Presiona dos veces\npara mover esta app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Cerrar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="4419667835599523257">"Controlador de la app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícono de la app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ajustar el tamaño de la ventana hacia la izquierda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ajustar el tamaño de la ventana hacia la derecha"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restablecer el tamaño de la ventana"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar o restablecer el tamaño de la ventana"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar ventana de la app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir con la configuración predeterminada"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Elige cómo abrir vínculos web para esta app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"En la app"</string> diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml index 275d88d1ea8a..dfa7869434bc 100644 --- a/libs/WindowManager/Shell/res/values-es/strings.xml +++ b/libs/WindowManager/Shell/res/values-es/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Izquierda 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Izquierda 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla derecha completa"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Cambiar aplicaciones"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla superior completa"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Superior 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"No volver a mostrar"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toca dos veces para\nmover esta aplicación"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Cerrar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="4419667835599523257">"Controlador de la aplicación"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icono de la aplicación"</string> @@ -134,7 +142,7 @@ <string name="collapse_menu_text" msgid="7515008122450342029">"Cerrar menú"</string> <string name="desktop_mode_app_header_chip_text" msgid="8300164817452574565">"<xliff:g id="APP_NAME">%1$s</xliff:g> (vista para ordenadores)"</string> <string name="desktop_mode_maximize_menu_maximize_text" msgid="3275717276171114411">"Maximizar pantalla"</string> - <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Cambiar tamaño"</string> + <string name="desktop_mode_maximize_menu_snap_text" msgid="5673738963174074006">"Dividir pantalla"</string> <string name="desktop_mode_non_resizable_snap_text" msgid="3771776422751387878">"La aplicación no se puede mover aquí"</string> <string name="desktop_mode_maximize_menu_immersive_button_text" msgid="559492223133829481">"Inmersivo"</string> <string name="desktop_mode_maximize_menu_immersive_restore_button_text" msgid="4900114367354709257">"Restaurar"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Cambiar tamaño de la ventana a la izquierda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Cambiar tamaño de la ventana a la derecha"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar o restaurar tamaño de la ventana"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar o restaurar tamaño de la ventana"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar ventana de la aplicación"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir con los ajustes predeterminados"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Elige cómo quieres abrir los enlaces web de esta aplicación"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"En la aplicación"</string> diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml index 3a330b3121ec..294b7fee9954 100644 --- a/libs/WindowManager/Shell/res/values-et/strings.xml +++ b/libs/WindowManager/Shell/res/values-et/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vasak: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vasak: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Parem täisekraan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Rakenduste vahetamine"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ülemine täisekraan"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Ülemine: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ülemine: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Taaskäivita"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ära kuva uuesti"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Rakenduse teisaldamiseks\ntopeltpuudutage"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimeeri"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimeeri"</string> - <string name="close_button_text" msgid="2913281996024033299">"Sule"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tagasi"</string> <string name="handle_text" msgid="4419667835599523257">"Rakenduse element"</string> <string name="app_icon_text" msgid="2823268023931811747">"Rakenduse ikoon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Akna suuruse muutmine, vasakule"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Akna suuruse muutmine, paremale"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Akna suuruse maksimeerimine või taastamine"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Akna suuruse maksimeerimine või taastamine"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Rakenduse akna minimeerimine"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Avamisviisi vaikeseaded"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Valige, kuidas avada selle rakenduse puhul veebilinke"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Rakenduses"</string> diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml index c0766a294510..a8f92128a603 100644 --- a/libs/WindowManager/Shell/res/values-eu/strings.xml +++ b/libs/WindowManager/Shell/res/values-eu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ezarri ezkerraldea % 50en"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ezarri ezkerraldea % 30en"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ezarri eskuinaldea pantaila osoan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Aldatu aplikazioz"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ezarri goialdea pantaila osoan"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Ezarri goialdea % 70en"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ezarri goialdea % 50en"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Berrabiarazi"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ez erakutsi berriro"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Sakatu birritan\naplikazioa mugitzeko"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizatu"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizatu"</string> - <string name="close_button_text" msgid="2913281996024033299">"Itxi"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atzera"</string> <string name="handle_text" msgid="4419667835599523257">"Aplikazioaren kontrol-puntua"</string> <string name="app_icon_text" msgid="2823268023931811747">"Aplikazioaren ikonoa"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Aldatu leihoaren tamaina eta eraman ezkerrera"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Aldatu leihoaren tamaina eta eraman eskuinera"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizatu edo leheneratu leihoaren tamaina"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizatu edo leheneratu leihoaren tamaina"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizatu aplikazioaren leihoa"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Modu lehenetsian irekitzearen ezarpenak"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Aukeratu nola ireki sareko estekak aplikazio honetan"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Aplikazioan"</string> diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml index ace8b333f47c..59affd7887be 100644 --- a/libs/WindowManager/Shell/res/values-fa/strings.xml +++ b/libs/WindowManager/Shell/res/values-fa/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"٪۵۰ چپ"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"٪۳۰ چپ"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"تمامصفحه راست"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"جابهجا کردن برنامهها"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"تمامصفحه بالا"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"٪۷۰ بالا"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"٪۵۰ بالا"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"بازراهاندازی"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"دوباره نشان داده نشود"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"برای جابهجا کردن این برنامه\nدو تکضرب بزنید"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"بزرگ کردن"</string> - <string name="minimize_button_text" msgid="271592547935841753">"کوچک کردن"</string> - <string name="close_button_text" msgid="2913281996024033299">"بستن"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"برگشتن"</string> <string name="handle_text" msgid="4419667835599523257">"دستگیره برنامه"</string> <string name="app_icon_text" msgid="2823268023931811747">"نماد برنامه"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"تغییر اندازه پنجره به چپ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"تغییر اندازه پنجره به راست"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"بیشینهسازی یا بازیابی اندازه پنجره"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"بیشینهسازی یا بازیابی اندازه پنجره"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"کمینهسازی پنجره برنامه"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"تنظیمات باز کردن بهطور پیشفرض"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"انتخاب روش باز کردن پیوندهای وب مربوط به این برنامه"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"در برنامه"</string> diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml index aed3fdc55bb4..b1d8431b57d9 100644 --- a/libs/WindowManager/Shell/res/values-fi/strings.xml +++ b/libs/WindowManager/Shell/res/values-fi/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vasen 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vasen 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Oikea koko näytölle"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Vaihda sovellusta"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Yläosa koko näytölle"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Yläosa 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yläosa 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Käynnistä uudelleen"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Älä näytä uudelleen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Kaksoisnapauta, jos\nhaluat siirtää sovellusta"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Suurenna"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Pienennä"</string> - <string name="close_button_text" msgid="2913281996024033299">"Sulje"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Takaisin"</string> <string name="handle_text" msgid="4419667835599523257">"Sovelluksen tunnus"</string> <string name="app_icon_text" msgid="2823268023931811747">"Sovelluskuvake"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Muuta vasemmanpuoleisen ikkunan kokoa"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Muuta vasemmanpuoleisen ikkunan kokoa"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Suurenna ikkuna tai palauta ikkunan koko"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Suurenna ikkuna tai palauta ikkunan koko"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Pienennä sovellusikkuna"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Avaa oletusasetusten mukaan"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Valitse, miten verkkolinkit avataan tässä sovelluksessa"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Sovelluksessa"</string> diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml index dc2025ffeb68..c58f4b0610f1 100644 --- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % à la gauche"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % à la gauche"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Plein écran à la droite"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Permuter des applis"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Plein écran dans le haut"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % dans le haut"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % dans le haut"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Redémarrer"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne plus afficher"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toucher deux fois pour\ndéplacer cette appli"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Agrandir"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Réduire"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fermer"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Retour"</string> <string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icône de l\'appli"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Réduire la fenêtre de l\'appli"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Ouvrir les paramètres par défaut"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choisissez comment ouvrir les liens Web pour cette appli"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Dans l\'appli"</string> diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml index 377413e27e87..e8db4c929561 100644 --- a/libs/WindowManager/Shell/res/values-fr/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Écran de gauche à 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Écran de gauche à 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Écran de droite en plein écran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Échanger les applis"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Écran du haut en plein écran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Écran du haut à 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Écran du haut à 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Redémarrer"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne plus afficher"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Appuyez deux fois\npour déplacer cette appli"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Agrandir"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Réduire"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fermer"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Retour"</string> <string name="handle_text" msgid="4419667835599523257">"Poignée de l\'appli"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icône d\'application"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionner la fenêtre vers la gauche"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionner la fenêtre vers la droite"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Agrandir ou restaurer la taille de la fenêtre"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Réduire la fenêtre de l\'application"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Ouvrir les paramètres par défaut"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Choisir comment ouvrir les liens Web pour cette appli"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Dans l\'application"</string> diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml index 3022f6238567..ba1c4a4b73c6 100644 --- a/libs/WindowManager/Shell/res/values-gl/strings.xml +++ b/libs/WindowManager/Shell/res/values-gl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50 % á esquerda"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30 % á esquerda"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pantalla completa á dereita"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Cambiar as aplicacións"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Pantalla completa arriba"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70 % arriba"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % arriba"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Non mostrar outra vez"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toca dúas veces para\nmover esta aplicación"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Pechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="4419667835599523257">"Controlador da aplicación"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icona de aplicación"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Axustar o tamaño da ventá á esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Axustar o tamaño da ventá á dereita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamaño da ventá"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamaño da ventá"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar a ventá da aplicación"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Abrir coa configuración predeterminada"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escoller como abrir as ligazóns web para esta aplicación"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Na aplicación"</string> diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml index 196784b29884..cd7550893dca 100644 --- a/libs/WindowManager/Shell/res/values-gu/strings.xml +++ b/libs/WindowManager/Shell/res/values-gu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ડાબે 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ડાબે 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"જમણી સ્ક્રીન સ્ક્રીન"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ઍપને સ્વૉપ કરો"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"શીર્ષ પૂર્ણ સ્ક્રીન"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"શીર્ષ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"શીર્ષ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ફરી શરૂ કરો"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ફરીથી બતાવશો નહીં"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"આ ઍપને ખસેડવા માટે\nબે વાર ટૅપ કરો"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"મોટું કરો"</string> - <string name="minimize_button_text" msgid="271592547935841753">"નાનું કરો"</string> - <string name="close_button_text" msgid="2913281996024033299">"બંધ કરો"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"પાછળ"</string> <string name="handle_text" msgid="4419667835599523257">"ઍપનું હૅન્ડલ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ઍપનું આઇકન"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ડાબી બાજુ વિન્ડોનું કદ બદલો"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"જમણી બાજુ વિન્ડોનું કદ બદલો"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"વિન્ડોનું કદ મહત્તમ કરો અથવા રિસ્ટોર કરો"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"વિન્ડોનું કદ મહત્તમ કરો અથવા રિસ્ટોર કરો"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ઍપની વિન્ડોને નાની કરો"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"\'ડિફૉલ્ટ તરીકે ખોલો\' સેટિંગ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"આ ઍપ માટે વેબ લિંક ખોલવાની રીત પસંદ કરો"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ઍપમાં"</string> diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml index 945bc93a667e..d0be7d560961 100644 --- a/libs/WindowManager/Shell/res/values-hi/strings.xml +++ b/libs/WindowManager/Shell/res/values-hi/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"बाईं स्क्रीन को 50% बनाएं"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"बाईं स्क्रीन को 30% बनाएं"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"दाईं स्क्रीन को फ़ुल स्क्रीन बनाएं"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ऐप्लिकेशन स्वैप करें"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ऊपर की स्क्रीन को फ़ुल स्क्रीन बनाएं"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ऊपर की स्क्रीन को 70% बनाएं"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ऊपर की स्क्रीन को 50% बनाएं"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"रीस्टार्ट करें"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"फिर से न दिखाएं"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ऐप्लिकेशन की जगह बदलने के लिए\nदो बार टैप करें"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"बड़ा करें"</string> - <string name="minimize_button_text" msgid="271592547935841753">"विंडो छोटी करें"</string> - <string name="close_button_text" msgid="2913281996024033299">"बंद करें"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"वापस जाएं"</string> <string name="handle_text" msgid="4419667835599523257">"ऐप्लिकेशन का हैंडल"</string> <string name="app_icon_text" msgid="2823268023931811747">"ऐप्लिकेशन आइकॉन"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विंडो का साइज़ बाईं ओर से बदलें"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विंडो का साइज़ दाईं ओर से बढ़ाएं"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"विंडो को बड़ा करें या उसका साइज़ पहले जैसा करें"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ऐप्लिकेशन की विंडो को छोटा करें"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"डिफ़ॉल्ट सेटिंग के हिसाब से खोलें"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"इस ऐप्लिकेशन के लिए वेब लिंक खोलने का तरीका चुनें"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ऐप्लिकेशन में"</string> diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml index b1187dc089b7..d3e7599e1dc9 100644 --- a/libs/WindowManager/Shell/res/values-hr/strings.xml +++ b/libs/WindowManager/Shell/res/values-hr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Lijevi zaslon na 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Lijevi zaslon na 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desni zaslon u cijeli zaslon"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamijeni aplikacije"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Gornji zaslon u cijeli zaslon"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji zaslon na 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji zaslon na 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Pokreni ponovno"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikazuj ponovno"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvaput dodirnite da biste\npremjestili ovu aplikaciju"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimiziraj"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimiziraj"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zatvori"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Natrag"</string> <string name="handle_text" msgid="4419667835599523257">"Pokazivač aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Promijeni veličinu prozora ulijevo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Promijeni veličinu prozora udesno"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimiziraj ili vrati veličinu prozora"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimiziraj ili vrati veličinu prozora"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimiziraj prozor aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvori prema zadanim postavkama"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Odaberite način otvaranja web-veza za ovu aplikaciju"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"U aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml index a7aedc465a92..2f7a21834eb8 100644 --- a/libs/WindowManager/Shell/res/values-hu/strings.xml +++ b/libs/WindowManager/Shell/res/values-hu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Bal oldali 50%-ra"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Bal oldali 30%-ra"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Jobb oldali teljes képernyőre"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Váltás az alkalmazások között"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Felső teljes képernyőre"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Felső 70%-ra"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Felső 50%-ra"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Újraindítás"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne jelenjen meg többé"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Koppintson duplán\naz alkalmazás áthelyezéséhez"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Teljes méret"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Kis méret"</string> - <string name="close_button_text" msgid="2913281996024033299">"Bezárás"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Vissza"</string> <string name="handle_text" msgid="4419667835599523257">"App fogópontja"</string> <string name="app_icon_text" msgid="2823268023931811747">"Alkalmazásikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ablak átméretezése balra"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ablak átméretezése jobbra"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ablak teljes méretre állítása vagy visszaállítása"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ablak teljes méretre állítása vagy visszaállítása"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Alkalmazásablak kis méretre állítása"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Alapértelmezett beállítások megnyitása"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Az app webes linkjeinek megnyitásához használt módszer"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Az alkalmazásban"</string> diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml index 00b2f91c9eb9..2898dcc33b35 100644 --- a/libs/WindowManager/Shell/res/values-hy/strings.xml +++ b/libs/WindowManager/Shell/res/values-hy/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ձախ էկրանը՝ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ձախ էկրանը՝ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Աջ էկրանը՝ լիաէկրան"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Հավելվածները տեղերով փոխել"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Վերևի էկրանը՝ լիաէկրան"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Վերևի էկրանը՝ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Վերևի էկրանը՝ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Վերագործարկել"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Այլևս ցույց չտալ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Կրկնակի հպեք՝\nհավելվածը տեղափոխելու համար"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Ծավալել"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Ծալել"</string> - <string name="close_button_text" msgid="2913281996024033299">"Փակել"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Հետ"</string> <string name="handle_text" msgid="4419667835599523257">"Հավելվածի կեղծանուն"</string> <string name="app_icon_text" msgid="2823268023931811747">"Հավելվածի պատկերակ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ձգել պատուհանը դեպի ձախ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ձգել պատուհանը դեպի աջ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ծավալել կամ վերականգնել պատուհանի չափսը"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ծալել հավելվածի պատուհանը"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Բացել կարգավորումներն ըստ կանխադրման"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Ընտրեք՝ ինչպես բացել այս հավելվածի վեբ հղումները"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Հավելվածում"</string> diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml index 54ccf84d398b..617f9c99de01 100644 --- a/libs/WindowManager/Shell/res/values-in/strings.xml +++ b/libs/WindowManager/Shell/res/values-in/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kiri 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kiri 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Layar penuh di kanan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ganti Aplikasi"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Layar penuh di atas"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Atas 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Mulai ulang"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Jangan tampilkan lagi"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Ketuk dua kali untuk\nmemindahkan aplikasi ini"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimalkan"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalkan"</string> - <string name="close_button_text" msgid="2913281996024033299">"Tutup"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Kembali"</string> <string name="handle_text" msgid="4419667835599523257">"Penanganan aplikasi"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikon Aplikasi"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah ukuran jendela ke kiri"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah ukuran jendela ke kanan"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimalkan atau pulihkan ukuran jendela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimalkan atau pulihkan ukuran jendela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalkan jendela aplikasi"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Buka dengan setelan default"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pilih cara membuka link web untuk aplikasi ini"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Di aplikasi"</string> diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml index 56b179033ddb..797a4cc8d035 100644 --- a/libs/WindowManager/Shell/res/values-is/strings.xml +++ b/libs/WindowManager/Shell/res/values-is/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vinstri 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vinstri 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Hægri á öllum skjánum"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Skipta á milli forrita"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Efri á öllum skjánum"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Efri 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Efri 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Endurræsa"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ekki sýna þetta aftur"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Ýttu tvisvar til\nað færa þetta forrit"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Stækka"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minnka"</string> - <string name="close_button_text" msgid="2913281996024033299">"Loka"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Til baka"</string> <string name="handle_text" msgid="4419667835599523257">"Handfang forrits"</string> <string name="app_icon_text" msgid="2823268023931811747">"Tákn forrits"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Breyta stærð glugga til vinstri"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Breyta stærð glugga til hægri"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Hámarka eða endurheimta stærð glugga"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Hámarka eða endurheimta stærð glugga"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Lágmarka stærð forritsglugga"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Stillingar sjálfvirkrar opnunar"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Veldu hvernig veftenglar opnast í forritinu"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Í forritinu"</string> diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml index 30159c7663f0..85f0f8c2c4d2 100644 --- a/libs/WindowManager/Shell/res/values-it/strings.xml +++ b/libs/WindowManager/Shell/res/values-it/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Schermata sinistra al 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Schermata sinistra al 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Schermata destra a schermo intero"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Scambia app"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Schermata superiore a schermo intero"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Schermata superiore al 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Schermata superiore al 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Riavvia"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Non mostrare più"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tocca due volte per\nspostare questa app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Ingrandisci"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Riduci a icona"</string> - <string name="close_button_text" msgid="2913281996024033299">"Chiudi"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Indietro"</string> <string name="handle_text" msgid="4419667835599523257">"Punto di manipolazione app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icona dell\'app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ridimensiona la finestra a sinistra"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ridimensiona la finestra a destra"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Ingrandisci o ripristina le dimensioni della finestra"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Ingrandisci o ripristina le dimensioni della finestra"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Riduci a icona la finestra dell\'app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Apri in base alle impostazioni predefinite"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Scegli come aprire i link web per questa app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"All\'interno dell\'app"</string> diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml index 5a19f146566e..36ac62091e43 100644 --- a/libs/WindowManager/Shell/res/values-iw/strings.xml +++ b/libs/WindowManager/Shell/res/values-iw/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"שמאלה 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"שמאלה 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"מסך ימני מלא"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"מעבר בין אפליקציות"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"מסך עליון מלא"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"עליון 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"עליון 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"הפעלה מחדש"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"לא להציג שוב"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"אפשר ללחוץ לחיצה כפולה כדי\nלהעביר את האפליקציה למקום אחר"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"הגדלה"</string> - <string name="minimize_button_text" msgid="271592547935841753">"מזעור"</string> - <string name="close_button_text" msgid="2913281996024033299">"סגירה"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"חזרה"</string> <string name="handle_text" msgid="4419667835599523257">"נקודת אחיזה לאפליקציה"</string> <string name="app_icon_text" msgid="2823268023931811747">"סמל האפליקציה"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"שינוי גודל החלון שמשמאל"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"שינוי גודל החלון שמימין"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"שחזור של גודל החלון או הגדלת החלון"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"שחזור של גודל החלון או הגדלת החלון"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"מזעור החלון של האפליקציה"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"הגדרות לפתיחה כברירת מחדל"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"כאן בוחרים איך לפתוח באפליקציה הזו קישורים לדפי אינטרנט"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"באפליקציה"</string> diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml index ac0df9c0b1cb..3a12680395c6 100644 --- a/libs/WindowManager/Shell/res/values-ja/strings.xml +++ b/libs/WindowManager/Shell/res/values-ja/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右全画面"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"アプリを切り替える"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"上部全画面"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"上 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"上 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"再起動"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"次回から表示しない"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ダブルタップすると\nこのアプリを移動できます"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"閉じる"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"戻る"</string> <string name="handle_text" msgid="4419667835599523257">"アプリハンドル"</string> <string name="app_icon_text" msgid="2823268023931811747">"アプリのアイコン"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ウィンドウを左側にサイズ変更する"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ウィンドウを右側にサイズ変更する"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ウィンドウを最大化する、またはウィンドウを元のサイズに戻す"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"アプリ ウィンドウを最小化する"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"デフォルトの設定で開く"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"このアプリのウェブリンクを開く方法を選択"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"アプリ内"</string> diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml index 84fab6fe22e6..2fbe1a786687 100644 --- a/libs/WindowManager/Shell/res/values-ka/strings.xml +++ b/libs/WindowManager/Shell/res/values-ka/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"მარცხენა ეკრანი — 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"მარცხენა ეკრანი — 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"მარჯვენა ნაწილის სრულ ეკრანზე გაშლა"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"აპების გადართვა"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ზედა ნაწილის სრულ ეკრანზე გაშლა"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ზედა ეკრანი — 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ზედა ეკრანი — 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"გადატვირთვა"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"აღარ გამოჩნდეს"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ამ აპის გადასატანად\nორმაგად შეეხეთ მას"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"მაქსიმალურად გაშლა"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ჩაკეცვა"</string> - <string name="close_button_text" msgid="2913281996024033299">"დახურვა"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"უკან"</string> <string name="handle_text" msgid="4419667835599523257">"აპის იდენტიფიკატორი"</string> <string name="app_icon_text" msgid="2823268023931811747">"აპის ხატულა"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ფანჯრის ზომის შეცვლა მარცხნივ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ფანჯრის ზომის შეცვლა მარჯვნივ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ფანჯრის მაქსიმალურ ზომამდე გაზრდა ან აღდგენა"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ფანჯრის მაქსიმალურ ზომამდე გაზრდა ან აღდგენა"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"აპის ფანჯრის ზომის შემცირება"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"პარამეტრების ნაგულისხმევად გახსნა"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ამ აპისთვის ვებ ბმულების გახსნის წესის არჩევა"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"აპში"</string> diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml index be9e9c12a417..c494b16687ef 100644 --- a/libs/WindowManager/Shell/res/values-kk/strings.xml +++ b/libs/WindowManager/Shell/res/values-kk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% сол жақта"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% сол жақта"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Оң жағын толық экранға шығару"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Қолданбаларды ауыстыру"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Жоғарғы жағын толық экранға шығару"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% жоғарғы жақта"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% жоғарғы жақта"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Өшіріп қосу"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Қайта көрсетілмесін"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Бұл қолданбаны басқа орынға\nжылжыту үшін екі рет түртіңіз."</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Жаю"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Кішірейту"</string> - <string name="close_button_text" msgid="2913281996024033299">"Жабу"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Артқа"</string> <string name="handle_text" msgid="4419667835599523257">"Қолданба идентификаторы"</string> <string name="app_icon_text" msgid="2823268023931811747">"Қолданба белгішесі"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезе өлшемін сол жаққа өзгерту"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезе өлшемін оң жаққа өзгерту"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезе өлшемін ұлғайту не қалпына келтіру"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Терезе өлшемін ұлғайту не қалпына келтіру"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Қолданба терезесін кішірейту"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Әдепкісінше ашу параметрлері"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Осы қолданбадағы веб-сілтемелерді ашу жолын таңдаңыз"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Қолданбада"</string> diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml index c835650f705f..234c3552b7de 100644 --- a/libs/WindowManager/Shell/res/values-km/strings.xml +++ b/libs/WindowManager/Shell/res/values-km/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ឆ្វេង 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ឆ្វេង 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"អេក្រង់ពេញខាងស្តាំ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ប្ដូរកម្មវិធី"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"អេក្រង់ពេញខាងលើ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ខាងលើ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ខាងលើ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ចាប់ផ្ដើមឡើងវិញ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"កុំបង្ហាញម្ដងទៀត"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ចុចពីរដងដើម្បី\nផ្លាស់ទីកម្មវិធីនេះ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ពង្រីក"</string> - <string name="minimize_button_text" msgid="271592547935841753">"បង្រួម"</string> - <string name="close_button_text" msgid="2913281996024033299">"បិទ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ថយក្រោយ"</string> <string name="handle_text" msgid="4419667835599523257">"ឈ្មោះអ្នកប្រើប្រាស់កម្មវិធី"</string> <string name="app_icon_text" msgid="2823268023931811747">"រូបកម្មវិធី"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ប្ដូរទំហំវិនដូទៅឆ្វេង"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ប្ដូរទំហំវិនដូទៅស្ដាំ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ស្ដារ ឬបង្កើនទំហំវិនដូជាអតិបរមា"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"បង្រួមវិនដូកម្មវិធី"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ការកំណត់បើកតាមលំនាំដើម"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ជ្រើសរើសរបៀបបើកតំណបណ្ដាញសម្រាប់កម្មវិធីនេះ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"នៅក្នុងកម្មវិធី"</string> diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml index 143208a2e16d..61ee3c3915db 100644 --- a/libs/WindowManager/Shell/res/values-kn/strings.xml +++ b/libs/WindowManager/Shell/res/values-kn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% ಎಡಕ್ಕೆ"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% ಎಡಕ್ಕೆ"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ಬಲ ಫುಲ್ ಸ್ಕ್ರೀನ್"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ಆ್ಯಪ್ಗಳನ್ನು ಸ್ವ್ಯಾಪ್ ಮಾಡಿ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ಮೇಲಿನ ಫುಲ್ ಸ್ಕ್ರೀನ್"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% ಮೇಲಕ್ಕೆ"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% ಮೇಲಕ್ಕೆ"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ಮತ್ತೊಮ್ಮೆ ತೋರಿಸಬೇಡಿ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಸರಿಸಲು\nಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ಹಿಗ್ಗಿಸಿ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ಕುಗ್ಗಿಸಿ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ಮುಚ್ಚಿರಿ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ಹಿಂದಕ್ಕೆ"</string> <string name="handle_text" msgid="4419667835599523257">"ಆ್ಯಪ್ ಹ್ಯಾಂಡಲ್"</string> <string name="app_icon_text" msgid="2823268023931811747">"ಆ್ಯಪ್ ಐಕಾನ್"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ಮರುಗಾತ್ರಗೊಳಿಸಿ ವಿಂಡೋವನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ವಿಂಡೋ ಗಾತ್ರವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸಿ ಅಥವಾ ಮರುಸ್ಥಾಪಿಸಿ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ಆ್ಯಪ್ ವಿಂಡೋವನ್ನು ಮಿನಿಮೈಜ್ ಮಾಡಿ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳಿಂದ ತೆರೆಯಿರಿ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ಈ ಆ್ಯಪ್ಗೆ ವೆಬ್ ಲಿಂಕ್ಗಳನ್ನು ಹೇಗೆ ತೆರೆಯಬೇಕು ಎಂಬುದನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ಆ್ಯಪ್ನಲ್ಲಿ"</string> diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml index dcdbaba97166..2b36ba1eb3d7 100644 --- a/libs/WindowManager/Shell/res/values-ko/strings.xml +++ b/libs/WindowManager/Shell/res/values-ko/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"왼쪽 화면 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"왼쪽 화면 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"오른쪽 화면 전체화면"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"앱 전환"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"위쪽 화면 전체화면"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"위쪽 화면 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"위쪽 화면 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"다시 시작"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"다시 표시 안함"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"두 번 탭하여\n이 앱 이동"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"최대화"</string> - <string name="minimize_button_text" msgid="271592547935841753">"최소화"</string> - <string name="close_button_text" msgid="2913281996024033299">"닫기"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"뒤로"</string> <string name="handle_text" msgid="4419667835599523257">"앱 핸들"</string> <string name="app_icon_text" msgid="2823268023931811747">"앱 아이콘"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"창 크기 왼쪽으로 조절"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"창 크기 오른쪽으로 조절"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"창 최대화 또는 크기 복원"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"창 최대화 또는 크기 복원"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"앱 창 최소화"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"기본값으로 열기 설정"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"이 앱에서 웹 링크를 여는 방법을 선택하세요"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"앱에서"</string> diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml index fe1bcd481f0b..bb3c2fdae471 100644 --- a/libs/WindowManager/Shell/res/values-ky/strings.xml +++ b/libs/WindowManager/Shell/res/values-ky/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Сол жактагы экранды 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Сол жактагы экранды 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Оң жактагы экранды толук экран режимине өткөрүү"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Колдонмолорду алмаштыруу"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Үстүнкү экранды толук экран режимине өткөрүү"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Үстүнкү экранды 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Үстүнкү экранды 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Өчүрүп күйгүзүү"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Экинчи көрүнбөсүн"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Бул колдонмону жылдыруу үчүн\nэки жолу таптаңыз"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Чоңойтуу"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Кичирейтүү"</string> - <string name="close_button_text" msgid="2913281996024033299">"Жабуу"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Артка"</string> <string name="handle_text" msgid="4419667835599523257">"Колдонмонун маркери"</string> <string name="app_icon_text" msgid="2823268023931811747">"Колдонмонун сүрөтчөсү"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Терезенин өлчөмүн солго өзгөртүү"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Терезенин өлчөмүн оңго өзгөртүү"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Терезенин өлчөмүн чоңойтуу же калыбына келтирүү"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Колдонмонун терезесин кичирейтүү"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Демейки шартта ачылуучу шилтемелердин параметрлери"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Колдонмодо шилтемелер кантип ачыларын тандаңыз"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Колдонмодо"</string> diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml index dd9df35cad00..8850923d8cca 100644 --- a/libs/WindowManager/Shell/res/values-lo/strings.xml +++ b/libs/WindowManager/Shell/res/values-lo/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ຊ້າຍ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ຊ້າຍ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ເຕັມໜ້າຈໍຂວາ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ສະຫຼັບແອັບ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ເຕັມໜ້າຈໍເທິງສຸດ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ເທິງສຸດ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ເທິງສຸດ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ຣີສະຕາດ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ບໍ່ຕ້ອງສະແດງອີກ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ແຕະສອງເທື່ອເພື່ອ\nຍ້າຍແອັບນີ້"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ຂະຫຍາຍໃຫຍ່ສຸດ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ຫຍໍ້ລົງ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ປິດ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ກັບຄືນ"</string> <string name="handle_text" msgid="4419667835599523257">"ຊື່ຜູ້ໃຊ້ແອັບ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ໄອຄອນແອັບ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ປັບຂະໜາດໜ້າຈໍໄປທາງຊ້າຍ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ປັບຂະໜາດໜ້າຈໍໄປທາງຂວາ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ຂະຫຍາຍ ຫຼື ຄືນຄ່າຂະໜາດໜ້າຈໍ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ຫຍໍ້ໜ້າຈໍແອັບ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ເປີດຕາມການຕັ້ງຄ່າເລີ່ມຕົ້ນ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ເລືອກວິທີເປີດລິ້ງເວັບສຳລັບແອັບນີ້"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ໃນແອັບ"</string> diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml index 7ebd43d19833..8ed826aa11fc 100644 --- a/libs/WindowManager/Shell/res/values-lt/strings.xml +++ b/libs/WindowManager/Shell/res/values-lt/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kairysis ekranas 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kairysis ekranas 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Dešinysis ekranas viso ekrano režimu"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Programų keitimas"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Viršutinis ekranas viso ekrano režimu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Viršutinis ekranas 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Viršutinis ekranas 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Paleisti iš naujo"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Daugiau neberodyti"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dukart palieskite, kad\nperkeltumėte šią programą"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Padidinti"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Sumažinti"</string> - <string name="close_button_text" msgid="2913281996024033299">"Uždaryti"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atgal"</string> <string name="handle_text" msgid="4419667835599523257">"Programos kreipinys"</string> <string name="app_icon_text" msgid="2823268023931811747">"Programos piktograma"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pakeisti lango dydį kairėje"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pakeisti lango dydį dešinėje"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Padidinti arba atkurti lango dydį"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Padidinti arba atkurti lango dydį"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Sumažinti programos langą"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Atidaryti pagal numatytuosius nustatymus"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pasirinkite, kaip atidaryti šios programos žiniatinklio nuorodas"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Programoje"</string> diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml index 8c4360b80548..1227055b3222 100644 --- a/libs/WindowManager/Shell/res/values-lv/strings.xml +++ b/libs/WindowManager/Shell/res/values-lv/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Pa kreisi 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Pa kreisi 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Labā daļa pa visu ekrānu"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apmainīt lietotnes"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Augšdaļa pa visu ekrānu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Augšdaļa 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Augšdaļa 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Restartēt"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Vairs nerādīt"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Veiciet dubultskārienu,\nlai pārvietotu šo lietotni"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimizēt"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizēt"</string> - <string name="close_button_text" msgid="2913281996024033299">"Aizvērt"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Atpakaļ"</string> <string name="handle_text" msgid="4419667835599523257">"Lietotnes turis"</string> <string name="app_icon_text" msgid="2823268023931811747">"Lietotnes ikona"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Mainīt loga lielumu uz kreiso pusi"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Mainīt loga lielumu uz labo pusi"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizēt vai atjaunot loga lielumu"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimizēt vai atjaunot loga lielumu"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizēt lietotnes logu"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Atvērt pēc noklusējuma iestatījumiem"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Izvēlieties, kā atvērt šajā lietotnē norādītās saites"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Lietotnē"</string> diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml index 653e66a2c586..eb513748cdba 100644 --- a/libs/WindowManager/Shell/res/values-mk/strings.xml +++ b/libs/WindowManager/Shell/res/values-mk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левиот 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левиот 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Десниот на цел екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Менувајте апликации"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Горниот на цел екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горниот 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горниот 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Рестартирај"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Не прикажувај повторно"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Допрете двапати за да ја\nпоместите апликацијава"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Зголеми"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Минимизирај"</string> - <string name="close_button_text" msgid="2913281996024033299">"Затвори"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Прекар на апликацијата"</string> <string name="app_icon_text" msgid="2823268023931811747">"Икона на апликацијата"</string> @@ -128,7 +136,7 @@ <string name="open_in_browser_text" msgid="9181692926376072904">"Отвори во прелистувач"</string> <string name="open_in_app_text" msgid="2874590745116268525">"Отвори во апликацијата"</string> <string name="new_window_text" msgid="6318648868380652280">"Нов прозорец"</string> - <string name="manage_windows_text" msgid="5567366688493093920">"Управувајте со прозорци"</string> + <string name="manage_windows_text" msgid="5567366688493093920">"Управувајте со прозорците"</string> <string name="change_aspect_ratio_text" msgid="9104456064548212806">"Промени го соодносот"</string> <string name="close_text" msgid="4986518933445178928">"Затворете"</string> <string name="collapse_menu_text" msgid="7515008122450342029">"Затворете го менито"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Променете ја големината на прозорецот налево"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Променете ја големината на прозорецот надесно"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Максимизирајте или вратете ја големината на прозорецот"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Максимизирајте или вратете ја големината на прозорецот"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Минимизирајте го прозорецот на апликацијата"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Отвори според стандардните поставки"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Изберете како да се отвораат линковите за апликацијава"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Во апликацијата"</string> diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml index 88876657642d..c48cbce331c4 100644 --- a/libs/WindowManager/Shell/res/values-ml/strings.xml +++ b/libs/WindowManager/Shell/res/values-ml/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ഇടത് 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ഇടത് 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"വലത് പൂർണ്ണ സ്ക്രീൻ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ആപ്പുകൾ സ്വാപ്പ് ചെയ്യുക"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"മുകളിൽ പൂർണ്ണ സ്ക്രീൻ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"മുകളിൽ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"മുകളിൽ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"റീസ്റ്റാർട്ട് ചെയ്യൂ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"വീണ്ടും കാണിക്കരുത്"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ഈ ആപ്പ് നീക്കാൻ\nഡബിൾ ടാപ്പ് ചെയ്യുക"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"വലുതാക്കുക"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ചെറുതാക്കുക"</string> - <string name="close_button_text" msgid="2913281996024033299">"അടയ്ക്കുക"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"മടങ്ങുക"</string> <string name="handle_text" msgid="4419667835599523257">"ആപ്പ് ഹാൻഡിൽ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ആപ്പ് ഐക്കൺ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ഇടത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"വലത്തേക്ക് ആപ്പ് വിൻഡോ വലുപ്പം മാറ്റുക"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"വിന്ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"വിന്ഡോ വലുപ്പം വലുതാക്കുക അല്ലെങ്കിൽ പഴയത് പുനഃസ്ഥാപിക്കുക"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ആപ്പ് വിന്ഡോ ചെറുതാക്കുക"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ഡിഫോൾട്ട് ക്രമീകരണം ഉപയോഗിച്ച് തുറക്കുക"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ഈ ആപ്പിനായി വെബ് ലിങ്കുകൾ എങ്ങനെ തുറക്കണമെന്ന് തിരഞ്ഞെടുക്കൂ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ആപ്പിൽ"</string> diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml index df922e09fb46..fca2f7ce9177 100644 --- a/libs/WindowManager/Shell/res/values-mn/strings.xml +++ b/libs/WindowManager/Shell/res/values-mn/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Зүүн 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Зүүн 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Баруун талын бүтэн дэлгэц"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Аппуудыг солих"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Дээд талын бүтэн дэлгэц"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Дээд 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Дээд 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Дахин эхлүүлэх"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Дахиж бүү харуул"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Энэ аппыг зөөхийн тулд\nхоёр товшино уу"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Томруулах"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Багасгах"</string> - <string name="close_button_text" msgid="2913281996024033299">"Хаах"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Буцах"</string> <string name="handle_text" msgid="4419667835599523257">"Аппын бариул"</string> <string name="app_icon_text" msgid="2823268023931811747">"Aппын дүрс тэмдэг"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Цонхны хэмжээг зүүн тал руу өөрчлөх"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Цонхны хэмжээг баруун тал руу өөрчлөх"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Цонхны хэмжээг томруулах эсвэл сэргээх"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Аппын цонхыг жижгэрүүлэх"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Өгөгдмөл тохиргоогоор нээх"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Энэ аппад веб холбоосыг хэрхэн нээхийг сонгоно уу"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Аппад"</string> diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml index f31631175039..888118732b1a 100644 --- a/libs/WindowManager/Shell/res/values-mr/strings.xml +++ b/libs/WindowManager/Shell/res/values-mr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"डावी 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"डावी 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"उजवी फुल स्क्रीन"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"अॅप्स स्वॅप करा"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"शीर्ष फुल स्क्रीन"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"शीर्ष 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"शीर्ष 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"रीस्टार्ट करा"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"पुन्हा दाखवू नका"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"हे ॲप हलवण्यासाठी\nदोनदा टॅप करा"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"मोठे करा"</string> - <string name="minimize_button_text" msgid="271592547935841753">"लहान करा"</string> - <string name="close_button_text" msgid="2913281996024033299">"बंद करा"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"मागे जा"</string> <string name="handle_text" msgid="4419667835599523257">"अॅपचे हँडल"</string> <string name="app_icon_text" msgid="2823268023931811747">"अॅप आयकन"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"अॅप विंडोचा डावीकडे आकार बदला"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"अॅप विंडोचा उजवीकडे आकार बदला"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"विंडोचा आकार मोठा करा किंवा रिस्टोअर करा"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"अॅप विंडो लहान करा"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"बाय डीफॉल्ट सेटिंग्ज उघडा"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"या अॅपसाठीच्या वेब लिंक कशा उघडाव्यात हे निवडा"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ॲपमध्ये"</string> diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml index 81e00c50db46..f0cd560b1f48 100644 --- a/libs/WindowManager/Shell/res/values-ms/strings.xml +++ b/libs/WindowManager/Shell/res/values-ms/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kiri 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kiri 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Skrin penuh kanan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Tukar Apl"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Skrin penuh atas"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Atas 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Mulakan semula"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Jangan tunjukkan lagi"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Ketik dua kali untuk\nalih apl ini"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimumkan"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimumkan"</string> - <string name="close_button_text" msgid="2913281996024033299">"Tutup"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Kembali"</string> <string name="handle_text" msgid="4419667835599523257">"Pengendalian apl"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikon Apl"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ubah saiz tetingkap ke sebelah kiri"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ubah saiz tetingkap ke sebelah kanan"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimumkan atau pulihkan saiz tetingkap"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimumkan atau pulihkan saiz tetingkap"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimumkan tetingkap apl"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Buka tetapan secara lalai"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Pilih cara membuka pautan web untuk apl ini"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Pada apl"</string> diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml index 8697af849ad5..3451701a0456 100644 --- a/libs/WindowManager/Shell/res/values-my/strings.xml +++ b/libs/WindowManager/Shell/res/values-my/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ဘယ်ဘက် မျက်နှာပြင် ၅၀%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ဘယ်ဘက် မျက်နှာပြင် ၃၀%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ညာဘက် မျက်နှာပြင်အပြည့်"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"အက်ပ်ပြောင်းရန်"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"အပေါ်ဘက် မျက်နှာပြင်အပြည့်"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"အပေါ်ဘက် မျက်နှာပြင် ၇၀%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"အပေါ်ဘက် မျက်နှာပြင် ၅၀%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ပြန်စရန်"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"နောက်ထပ်မပြပါနှင့်"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ဤအက်ပ်ကို ရွှေ့ရန်\nနှစ်ချက်တို့ပါ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ချဲ့ရန်"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ချုံ့ရန်"</string> - <string name="close_button_text" msgid="2913281996024033299">"ပိတ်ရန်"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"နောက်သို့"</string> <string name="handle_text" msgid="4419667835599523257">"အက်ပ်သုံးသူအမည်"</string> <string name="app_icon_text" msgid="2823268023931811747">"အက်ပ်သင်္ကေတ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ဝင်းဒိုးကို ဘယ်ဘက်သို့ အရွယ်ပြင်ရန်"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ဝင်းဒိုးကို ညာဘက်သို့ အရွယ်ပြင်ရန်"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ဝင်းဒိုးအရွယ်အစားကို ချဲ့ရန် (သို့) ပြန်ပြောင်းရန်"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"အက်ပ်ဝင်းဒိုးကို ချုံ့ရန်"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"မူရင်းဆက်တင်ဖြင့် ဖွင့်ရန်"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ဤအက်ပ်အတွက် ဝဘ်လင့်ခ်များ မည်သို့ဖွင့်မည်ကို ရွေးပါ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"အက်ပ်တွင်"</string> diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml index 43de6363e6bd..3a4100c5f154 100644 --- a/libs/WindowManager/Shell/res/values-nb/strings.xml +++ b/libs/WindowManager/Shell/res/values-nb/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Sett størrelsen på den venstre delen av skjermen til 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Sett størrelsen på den venstre delen av skjermen til 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Utvid den høyre delen av skjermen til hele skjermen"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Bytt apper"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Utvid den øverste delen av skjermen til hele skjermen"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Sett størrelsen på den øverste delen av skjermen til 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Sett størrelsen på den øverste delen av skjermen til 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Start på nytt"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ikke vis dette igjen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dobbelttrykk for\nå flytte denne appen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimer"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimer"</string> - <string name="close_button_text" msgid="2913281996024033299">"Lukk"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tilbake"</string> <string name="handle_text" msgid="4419667835599523257">"Apphåndtak"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Endre størrelsen på vinduet til venstre"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Endre størrelsen på vinduet til høyre"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimer eller gjenopprett størrelsen på vinduet"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimer eller gjenopprett størrelsen på vinduet"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimer appvinduet"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Innstillinger for åpning som standard"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Velg hvordan nettlinker skal åpnes for denne appen"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string> diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml index 23b49b7dfe42..cc31e384260c 100644 --- a/libs/WindowManager/Shell/res/values-ne/strings.xml +++ b/libs/WindowManager/Shell/res/values-ne/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"बायाँ भाग ५०%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"बायाँ भाग ३०%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"दायाँ भाग फुल स्क्रिन"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"एपहरू अदलबदल गर्नुहोस्"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"माथिल्लो भाग फुल स्क्रिन"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"माथिल्लो भाग ७०%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"माथिल्लो भाग ५०%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"रिस्टार्ट गर्नुहोस्"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"फेरि नदेखाउनुहोस्"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"यो एप सार्न डबल\nट्याप गर्नुहोस्"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ठुलो बनाउनुहोस्"</string> - <string name="minimize_button_text" msgid="271592547935841753">"मिनिमाइज गर्नुहोस्"</string> - <string name="close_button_text" msgid="2913281996024033299">"बन्द गर्नुहोस्"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"पछाडि"</string> <string name="handle_text" msgid="4419667835599523257">"एपको ह्यान्डल"</string> <string name="app_icon_text" msgid="2823268023931811747">"एपको आइकन"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"विन्डोको आकार बदलेर बायाँतिर लैजानुहोस्"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"विन्डोको आकार बदलेर दायाँतिर लैजानुहोस्"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"विन्डोको आकार म्याक्सिमाइज गर्नुहोस् वा रिस्टोर गर्नुहोस्"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"एपको विन्डो मिनिमाइज गर्नुहोस्"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"डिफल्ट सेटिङअनुसार खोल्नुहोस्"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"यो एपका वेब लिंकहरू खोल्ने तरिका छनौट गर्नुहोस्"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"एपमा"</string> diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml index 8396b3e9deeb..4234ddf0e456 100644 --- a/libs/WindowManager/Shell/res/values-nl/strings.xml +++ b/libs/WindowManager/Shell/res/values-nl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Linkerscherm 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Linkerscherm 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Rechterscherm op volledig scherm"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Apps wisselen"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Bovenste scherm op volledig scherm"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Bovenste scherm 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bovenste scherm 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Opnieuw opstarten"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Niet opnieuw tonen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dubbeltik om\ndeze app te verplaatsen"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximaliseren"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimaliseren"</string> - <string name="close_button_text" msgid="2913281996024033299">"Sluiten"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Terug"</string> <string name="handle_text" msgid="4419667835599523257">"App-handgreep"</string> <string name="app_icon_text" msgid="2823268023931811747">"App-icoon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Formaat van venster naar links aanpassen"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Formaat van venster naar rechts aanpassen"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Formaat van venster maximaliseren of herstellen"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Formaat van venster maximaliseren of herstellen"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"App-venster minimaliseren"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Instellingen voor Standaard openen"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Kies hoe je weblinks voor deze app wilt openen"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"In de app"</string> diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml index 9e1ee43a01b6..6390d37a3f57 100644 --- a/libs/WindowManager/Shell/res/values-or/strings.xml +++ b/libs/WindowManager/Shell/res/values-or/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ବାମ ପଟକୁ 50% କରନ୍ତୁ"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ବାମ ପଟେ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ଡାହାଣ ପଟକୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍ କରନ୍ତୁ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ଆପ୍ସ ସ୍ୱାପ କରନ୍ତୁ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ଉପର ଆଡ଼କୁ ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍ କରନ୍ତୁ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ଉପର ଆଡ଼କୁ 70% କରନ୍ତୁ"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ଉପର ଆଡ଼କୁ 50% କରନ୍ତୁ"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ପୁଣି ଦେଖାନ୍ତୁ ନାହିଁ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ଏହି ଆପକୁ ମୁଭ\nକରିବା ପାଇଁ ଦୁଇଥର-ଟାପ କରନ୍ତୁ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ବଡ଼ କରନ୍ତୁ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ଛୋଟ କରନ୍ତୁ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ବନ୍ଦ କରନ୍ତୁ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ପଛକୁ ଫେରନ୍ତୁ"</string> <string name="handle_text" msgid="4419667835599523257">"ଆପର ହେଣ୍ଡେଲ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ଆପ ଆଇକନ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ବାମପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ଡାହାଣପଟକୁ ୱିଣ୍ଡୋ ରିସାଇଜ କରନ୍ତୁ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ୱିଣ୍ଡୋ ସାଇଜକୁ ମେକ୍ସିମାଇଜ କିମ୍ବା ରିଷ୍ଟୋର କରନ୍ତୁ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ଆପ ୱିଣ୍ଡୋକୁ ମିନିମାଇଜ କରନ୍ତୁ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ଡିଫଲ୍ଟ ସେଟିଂସକୁ ଖୋଲନ୍ତୁ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ଏହି ଆପ ପାଇଁ ୱେବ ଲିଙ୍କଗୁଡ଼ିକୁ କିପରି ଖୋଲିବେ, ତାହା ବାଛନ୍ତୁ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ଆପରେ"</string> diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml index 3bc730bc0043..d2b837c5df3a 100644 --- a/libs/WindowManager/Shell/res/values-pa/strings.xml +++ b/libs/WindowManager/Shell/res/values-pa/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ਖੱਬੇ 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ਖੱਬੇ 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"ਸੱਜੇ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ਐਪਾਂ ਨੂੰ ਸਵੈਪ ਕਰੋ"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ਉੱਪਰ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ਉੱਪਰ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ਉੱਪਰ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ਇਸ ਐਪ ਦਾ ਟਿਕਾਣਾ ਬਦਲਣ ਲਈ\nਡਬਲ ਟੈਪ ਕਰੋ"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ਵੱਡਾ ਕਰੋ"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ਛੋਟਾ ਕਰੋ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ਬੰਦ ਕਰੋ"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ਪਿੱਛੇ"</string> <string name="handle_text" msgid="4419667835599523257">"ਐਪ ਹੈਂਡਲ"</string> <string name="app_icon_text" msgid="2823268023931811747">"ਐਪ ਪ੍ਰਤੀਕ"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਖੱਬੇ ਪਾਸੇ ਕਰੋ"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਬਦਲ ਕੇ ਸੱਜੇ ਪਾਸੇ ਕਰੋ"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ਵਿੰਡੋ ਦਾ ਆਕਾਰ ਵਧਾਓ ਜਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ਐਪ ਵਿੰਡੋ ਨੂੰ ਛੋਟਾ ਕਰੋ"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸੈਟਿੰਗਾਂ ਮੁਤਾਬਕ ਖੋਲ੍ਹੋ"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ਇਸ ਐਪ ਲਈ ਵੈੱਬ ਲਿੰਕਾਂ ਨੂੰ ਖੋਲ੍ਹਣ ਦਾ ਤਰੀਕਾ ਚੁਣੋ"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ਐਪ ਵਿੱਚ"</string> diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml index 3a55cf3f9f4e..59deb01e689f 100644 --- a/libs/WindowManager/Shell/res/values-pl/strings.xml +++ b/libs/WindowManager/Shell/res/values-pl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% lewej części ekranu"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% lewej części ekranu"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Prawa część ekranu na pełnym ekranie"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamień aplikacje"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Górna część ekranu na pełnym ekranie"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% górnej części ekranu"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% górnej części ekranu"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Uruchom ponownie"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Nie pokazuj ponownie"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Aby przenieść aplikację,\nkliknij dwukrotnie"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksymalizuj"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalizuj"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zamknij"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Wstecz"</string> <string name="handle_text" msgid="4419667835599523257">"Uchwyt aplikacji"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacji"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmień rozmiar okna do lewej"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmień rozmiar okna do prawej"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Zmaksymalizuj lub przywróć rozmiar okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Zmaksymalizuj lub przywróć rozmiar okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Zminimalizuj okno aplikacji"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Ustawienia domyślnego otwierania"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Wybierz, gdzie chcesz otwierać linki z tej aplikacji"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"W aplikacji"</string> diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml index 3e019ecabcbd..593f830e0d6e 100644 --- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Esquerda a 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Esquerda a 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Lado direito em tela cheia"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Parte superior em tela cheia"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Parte superior a 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Não mostrar novamente"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toque duas vezes para\nmover o app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Voltar"</string> <string name="handle_text" msgid="4419667835599523257">"Identificador do app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícone do app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela do app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Configurações \"Abrir por padrão\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para este app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"No app"</string> diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml index 3eaf0f515b97..fcf59163be83 100644 --- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"50% no ecrã esquerdo"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"30% no ecrã esquerdo"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ecrã direito inteiro"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ecrã superior inteiro"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"70% no ecrã superior"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% no ecrã superior"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Não mostrar de novo"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toque duas vezes\npara mover esta app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Anterior"</string> <string name="handle_text" msgid="4419667835599523257">"Indicador da app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícone da app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar tamanho da janela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar tamanho da janela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela da app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Definições de Abrir por predefinição"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para esta app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Na app"</string> diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml index 3e019ecabcbd..593f830e0d6e 100644 --- a/libs/WindowManager/Shell/res/values-pt/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Esquerda a 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Esquerda a 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Lado direito em tela cheia"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Trocar apps"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Parte superior em tela cheia"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Parte superior a 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reiniciar"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Não mostrar novamente"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Toque duas vezes para\nmover o app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizar"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizar"</string> - <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Voltar"</string> <string name="handle_text" msgid="4419667835599523257">"Identificador do app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ícone do app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionar janela para a esquerda"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionar janela para a direita"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizar ou restaurar o tamanho da janela"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizar janela do app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Configurações \"Abrir por padrão\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Escolha como abrir links da Web para este app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"No app"</string> diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml index 0195acac1919..81db82a8c526 100644 --- a/libs/WindowManager/Shell/res/values-ro/strings.xml +++ b/libs/WindowManager/Shell/res/values-ro/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Partea stângă: 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Partea stângă: 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Partea dreaptă pe ecran complet"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Comută între aplicații"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Partea de sus pe ecran complet"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Partea de sus: 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Partea de sus: 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Repornește"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Nu mai afișa"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Atinge de două ori\nca să muți aplicația"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximizează"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizează"</string> - <string name="close_button_text" msgid="2913281996024033299">"Închide"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Înapoi"</string> <string name="handle_text" msgid="4419667835599523257">"Handle de aplicație"</string> <string name="app_icon_text" msgid="2823268023931811747">"Pictograma aplicației"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Redimensionează fereastra la stânga"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Redimensionează fereastra la dreapta"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximizează sau restabilește dimensiunea ferestrei"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximizează sau restabilește dimensiunea ferestrei"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizează fereastra aplicației"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Setări de deschidere în mod prestabilit"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Alege modul de deschidere a linkurilor web pentru aplicație"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"În aplicație"</string> diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml index adc6f32e4a8e..aa6f484debee 100644 --- a/libs/WindowManager/Shell/res/values-ru/strings.xml +++ b/libs/WindowManager/Shell/res/values-ru/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Левый на 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Левый на 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Правый во весь экран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Поменять приложения местами"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхний во весь экран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхний на 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхний на 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Перезапустить"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Больше не показывать"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Дважды нажмите, чтобы\nпереместить приложение."</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Развернуть"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Свернуть"</string> - <string name="close_button_text" msgid="2913281996024033299">"Закрыть"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Обозначение приложения"</string> <string name="app_icon_text" msgid="2823268023931811747">"Значок приложения"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Растянуть окно влево"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Растянуть окно вправо"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Развернуть окно или восстановить его размер"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Развернуть окно или восстановить его размер"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Свернуть окно приложения"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Настройки, регулирующие, как по умолчанию открываются ссылки"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Выберите, где будут открываться ссылки из этого приложения"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"В приложении"</string> diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml index 26bd9372763c..efa978aa4505 100644 --- a/libs/WindowManager/Shell/res/values-si/strings.xml +++ b/libs/WindowManager/Shell/res/values-si/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"වම් 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"වම් 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"දකුණු පූර්ණ තිරය"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"යෙදුම් හුවමාරු කරන්න"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ඉහළම පූර්ණ තිරය"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ඉහළම 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ඉහළම 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"යළි අරඹන්න"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"නැවත නොපෙන්වන්න"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"මෙම යෙදුම ගෙන යාමට\nදෙවරක් තට්ටු කරන්න"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"විහිදන්න"</string> - <string name="minimize_button_text" msgid="271592547935841753">"කුඩා කරන්න"</string> - <string name="close_button_text" msgid="2913281996024033299">"වසන්න"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"ආපසු"</string> <string name="handle_text" msgid="4419667835599523257">"යෙදුම් හසුරුව"</string> <string name="app_icon_text" msgid="2823268023931811747">"යෙදුම් නිරූපකය"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"කවුළුව වමට ප්රතිප්රමාණ කරන්න"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"කවුළුව දකුණට ප්රතිප්රමාණ කරන්න"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"කවුළු ප්රමාණය උපරිම කරන්න හෝ ප්රතිසාධනය කරන්න"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"කවුළු ප්රමාණය උපරිම කරන්න හෝ ප්රතිසාධනය කරන්න"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"යෙදුම් කවුළුව අවම කරන්න"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"පෙරනිමි සැකසීම් මඟින් විවෘත කරන්න"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"මෙම යෙදුම සඳහා වෙබ් සබැඳි විවෘත කරන ආකාරය තෝරා ගන්න"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"යෙදුම තුළ"</string> diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml index 8b6999e9c0d0..fac26b49819a 100644 --- a/libs/WindowManager/Shell/res/values-sk/strings.xml +++ b/libs/WindowManager/Shell/res/values-sk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ľavá – 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ľavá – 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Pravá– na celú obrazovku"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Vymeniť aplikácie"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Horná – na celú obrazovku"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Horná – 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Horná – 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Reštartovať"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Už nezobrazovať"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Túto aplikáciu\npresuniete dvojitým klepnutím"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maximalizovať"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimalizovať"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zavrieť"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Späť"</string> <string name="handle_text" msgid="4419667835599523257">"Rukoväť aplikácie"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikácie"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Zmeniť veľkosť okna vľavo"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Zmeniť veľkosť okna vpravo"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximalizovať alebo obnoviť veľkosť okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximalizovať alebo obnoviť veľkosť okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimalizovať okno aplikácie"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Otvárať podľa predvolených nastavení"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Vyberte, ako sa majú v tejto aplikácii otvárať webové odkazy"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikácii"</string> diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml index 5f1f6efd92fc..f8dacc4fde23 100644 --- a/libs/WindowManager/Shell/res/values-sl/strings.xml +++ b/libs/WindowManager/Shell/res/values-sl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Desni v celozaslonski način"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Zamenjava aplikacij"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Zgornji v celozaslonski način"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Zgornji 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Zgornji 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Znova zaženi"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ne prikaži več"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Dvakrat se dotaknite\nza premik te aplikacije"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimiraj"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimiraj"</string> - <string name="close_button_text" msgid="2913281996024033299">"Zapri"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Nazaj"</string> <string name="handle_text" msgid="4419667835599523257">"Identifikator aplikacije"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Sprememba velikosti okna na levi"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Sprememba velikosti okna na desni"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Povečava ali obnovitev velikosti okna"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Povečava ali obnovitev velikosti okna"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Pomanjšava okna aplikacije"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Nastavitve privzetega odpiranja"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Izberite način odpiranja spletnih povezav za to aplikacijo"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"V aplikaciji"</string> diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml index 45a1c001755f..c64df85dad65 100644 --- a/libs/WindowManager/Shell/res/values-sq/strings.xml +++ b/libs/WindowManager/Shell/res/values-sq/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Majtas 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Majtas 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Ekrani i plotë djathtas"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ndërro aplikacionet"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Ekrani i plotë lart"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Lart 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Lart 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Rinis"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Mos e shfaq përsëri"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Trokit dy herë për të\nlëvizur këtë aplikacion"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Maksimizo"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimizo"</string> - <string name="close_button_text" msgid="2913281996024033299">"Mbyll"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Pas"</string> <string name="handle_text" msgid="4419667835599523257">"Emërtimi i aplikacionit"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ikona e aplikacionit"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ndrysho përmasat e dritares në të majtë"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ndrysho përmasat e dritares në të djathtë"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maksimizo ose restauro madhësinë e dritares"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maksimizo ose restauro madhësinë e dritares"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimizo dritaren e aplikacionit"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Hap sipas cilësimeve të parazgjedhura"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Zgjidh si do t\'i hapësh lidhjet e uebit për këtë aplikacion"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Në aplikacion"</string> diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml index 40ca9a41d290..d2462a7282c2 100644 --- a/libs/WindowManager/Shell/res/values-sr/strings.xml +++ b/libs/WindowManager/Shell/res/values-sr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Леви екран 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Леви екран 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Режим целог екрана за доњи екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Замените места апликацијама"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Режим целог екрана за горњи екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горњи екран 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горњи екран 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Рестартуј"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Не приказуј поново"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Двапут додирните да бисте\nпреместили ову апликацију"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Увећајте"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Умањите"</string> - <string name="close_button_text" msgid="2913281996024033299">"Затворите"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Идентификатор апликације"</string> <string name="app_icon_text" msgid="2823268023931811747">"Икона апликације"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Промените величину прозора налево"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Промените величину прозора надесно"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Увећајте или вратите величину прозора"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Увећајте или вратите величину прозора"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Умањите прозор апликације"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Подешавање Подразумевано отварај"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Одаберите начин отварања веб-линкова за ову апликацију"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У апликацији"</string> diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml index 4e126e88d242..0105e158ac08 100644 --- a/libs/WindowManager/Shell/res/values-sv/strings.xml +++ b/libs/WindowManager/Shell/res/values-sv/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Vänster 50 %"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Vänster 30 %"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Helskärm på höger skärm"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Byt appar"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Helskärm på övre skärm"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Övre 70 %"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Övre 50 %"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Starta om"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Visa inte igen"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Tryck snabbt två gånger\nför att flytta denna app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Utöka"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Minimera"</string> - <string name="close_button_text" msgid="2913281996024033299">"Stäng"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Tillbaka"</string> <string name="handle_text" msgid="4419667835599523257">"Apphandtag"</string> <string name="app_icon_text" msgid="2823268023931811747">"Appikon"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Ändra storlek på fönstret åt vänster"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Ändra storlek på fönstret åt höger"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Maximera eller återställ fönsterstorleken"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Maximera eller återställ fönsterstorleken"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Minimera appfönstret"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Inställningar för Öppna som standard"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Välj hur webblänkar ska öppnas för den här appen"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"I appen"</string> diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml index 8bfdfc62a5b7..b4415cb58b87 100644 --- a/libs/WindowManager/Shell/res/values-sw/strings.xml +++ b/libs/WindowManager/Shell/res/values-sw/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kushoto 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kushoto 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Skrini nzima ya kulia"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Badilisha Programu"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Skrini nzima ya juu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Juu 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Juu 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Zima kisha uwashe"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Usionyeshe tena"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Gusa mara mbili ili\nusogeze programu hii"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Panua"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Punguza"</string> - <string name="close_button_text" msgid="2913281996024033299">"Funga"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Rudi nyuma"</string> <string name="handle_text" msgid="4419667835599523257">"Utambulisho wa programu"</string> <string name="app_icon_text" msgid="2823268023931811747">"Aikoni ya Programu"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Badilisha ukubwa wa dirisha kushoto"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Badilisha ukubwa wa dirisha kulia"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Panua au urejeshe ukubwa wa dirisha"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Panua au urejeshe ukubwa wa dirisha"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Punguza dirisha la programu"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Fungua kwa mipangilio chaguomsingi"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Chagua jinsi ya kufungua viungo vya wavuti vya programu hii"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Kwenye programu"</string> diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml index 4d9093c5bf31..ccc9f9423e8a 100644 --- a/libs/WindowManager/Shell/res/values-ta/strings.xml +++ b/libs/WindowManager/Shell/res/values-ta/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"இடது புறம் 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"இடது புறம் 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"வலது புறம் முழுத் திரை"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ஆப்ஸை மாற்றும்"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"மேற்புறம் முழுத் திரை"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"மேலே 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"மேலே 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"மீண்டும் தொடங்கு"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"மீண்டும் காட்டாதே"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"இந்த ஆப்ஸை நகர்த்த\nஇருமுறை தட்டவும்"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"பெரிதாக்கும்"</string> - <string name="minimize_button_text" msgid="271592547935841753">"சிறிதாக்கும்"</string> - <string name="close_button_text" msgid="2913281996024033299">"மூடும்"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"பின்செல்லும்"</string> <string name="handle_text" msgid="4419667835599523257">"ஆப்ஸ் ஹேண்டில்"</string> <string name="app_icon_text" msgid="2823268023931811747">"ஆப்ஸ் ஐகான்"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"சாளரத்தை இடதுபுறமாக அளவு மாற்றும்"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"சாளரத்தை வலதுபுறமாக அளவு மாற்றும்"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"சாளரத்தின் அளவைப் பெரிதாக்கும்/மீட்டெடுக்கும்"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ஆப்ஸ் சாளரத்தைச் சிறிதாக்கும்"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"இயல்பாக அமைப்புகளைத் திறக்கும்"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"இந்த ஆப்ஸில் வலை இணைப்புகளைத் திறக்கும் வழிமுறையைத் தேர்வுசெய்யுங்கள்"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ஆப்ஸில்"</string> diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml index f7cf43ed520c..96ce40abb477 100644 --- a/libs/WindowManager/Shell/res/values-te/strings.xml +++ b/libs/WindowManager/Shell/res/values-te/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ఎడమవైపు 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ఎడమవైపు 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"కుడివైపు ఫుల్-స్క్రీన్"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"యాప్లను మార్చండి"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"ఎగువ ఫుల్-స్క్రీన్"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ఎగువ 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ఎగువ 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"రీస్టార్ట్ చేయండి"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"మళ్లీ చూపవద్దు"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"ఈ యాప్ను తరలించడానికి\nడబుల్-ట్యాప్ చేయండి"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"గరిష్టీకరించండి"</string> - <string name="minimize_button_text" msgid="271592547935841753">"కుదించండి"</string> - <string name="close_button_text" msgid="2913281996024033299">"మూసివేయండి"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"వెనుకకు"</string> <string name="handle_text" msgid="4419667835599523257">"యాప్ హ్యాండిల్"</string> <string name="app_icon_text" msgid="2823268023931811747">"యాప్ చిహ్నం"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"విండో ఎడమ వైపునకు సైజ్ను మార్చండి"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"విండో కుడి వైపునకు సైజ్ను మార్చండి"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"విండో సైజ్ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"విండో సైజ్ను మ్యాగ్జిమైజ్ చేయండి లేదా రీస్టోర్ చేయండి"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"యాప్ విండోను కుదించండి"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"ఆటోమేటిక్ సెట్టింగ్ల ద్వారా తెరవండి"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"ఈ యాప్నకు సంబంధించిన వెబ్ లింక్లను ఎలా తెరవాలో ఎంచుకోండి"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"యాప్లో"</string> diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml index 77cd2e28517b..16372d26977c 100644 --- a/libs/WindowManager/Shell/res/values-th/strings.xml +++ b/libs/WindowManager/Shell/res/values-th/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"ซ้าย 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"ซ้าย 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"เต็มหน้าจอทางขวา"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"สลับแอป"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"เต็มหน้าจอด้านบน"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"ด้านบน 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ด้านบน 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"รีสตาร์ท"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"ไม่ต้องแสดงข้อความนี้อีก"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"แตะสองครั้ง\nเพื่อย้ายแอปนี้"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"ขยายใหญ่สุด"</string> - <string name="minimize_button_text" msgid="271592547935841753">"ย่อ"</string> - <string name="close_button_text" msgid="2913281996024033299">"ปิด"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"กลับ"</string> <string name="handle_text" msgid="4419667835599523257">"แฮนเดิลแอป"</string> <string name="app_icon_text" msgid="2823268023931811747">"ไอคอนแอป"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"ปรับขนาดหน้าต่างไปทางซ้าย"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ปรับขนาดหน้าต่างไปทางขวา"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ขยายหรือคืนค่าขนาดหน้าต่าง"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ย่อหน้าต่างแอป"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"เปิดตามการตั้งค่าเริ่มต้น"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"เลือกวิธีเปิดเว็บลิงก์สำหรับแอปนี้"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ในแอป"</string> diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml index 056bc225669c..ad38be82a76a 100644 --- a/libs/WindowManager/Shell/res/values-tl/strings.xml +++ b/libs/WindowManager/Shell/res/values-tl/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Gawing 50% ang nasa kaliwa"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Gawing 30% ang nasa kaliwa"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"I-full screen ang nasa kanan"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Pagpalitin ang Mga App"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"I-full screen ang nasa itaas"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gawing 70% ang nasa itaas"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gawing 50% ang nasa itaas"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"I-restart"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Huwag nang ipakita ulit"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"I-double tap para\nilipat ang app na ito"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"I-maximize"</string> - <string name="minimize_button_text" msgid="271592547935841753">"I-minimize"</string> - <string name="close_button_text" msgid="2913281996024033299">"Isara"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Bumalik"</string> <string name="handle_text" msgid="4419667835599523257">"Handle ng app"</string> <string name="app_icon_text" msgid="2823268023931811747">"Icon ng App"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"I-resize pakaliwa ang window"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"I-resize pakanan ang window"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"I-maximize o i-restore ang laki ng window"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"I-maximize o i-restore ang laki ng window"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"I-minimize ang window ng app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Buksan sa pamamagitan ng mga default na setting"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Piliin kung paano magbukas ng web link para sa app na ito"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Sa app"</string> diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml index 017f6bb1d539..2bc0a960bbb5 100644 --- a/libs/WindowManager/Shell/res/values-tr/strings.xml +++ b/libs/WindowManager/Shell/res/values-tr/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Solda %50"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Solda %30"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Sağda tam ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Uygulamaların Yerini Değiştir"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Üstte tam ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Üstte %70"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Üstte %50"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Yeniden başlat"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Bir daha gösterme"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Bu uygulamayı taşımak için\niki kez dokunun"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Ekranı Kapla"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Küçült"</string> - <string name="close_button_text" msgid="2913281996024033299">"Kapat"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Geri"</string> <string name="handle_text" msgid="4419667835599523257">"Uygulama tanıtıcısı"</string> <string name="app_icon_text" msgid="2823268023931811747">"Uygulama Simgesi"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Pencereyi sola yeniden boyutlandır"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Pencereyi sağa yeniden boyutlandır"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Pencereyi ekranı kaplayacak şekilde büyüt veya önceki boyutuna döndür"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Uygulama penceresini küçült"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Varsayılan olarak açma ayarları"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu uygulama için web bağlantılarının nasıl açılacağını seçin"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Uygulamada"</string> diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml index 32ce4a0c6ece..c1aa82e472b1 100644 --- a/libs/WindowManager/Shell/res/values-uk/strings.xml +++ b/libs/WindowManager/Shell/res/values-uk/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Ліве вікно на 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Ліве вікно на 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Праве вікно на весь екран"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Поміняти додатки місцями"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Верхнє вікно на весь екран"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Верхнє вікно на 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхнє вікно на 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Перезапустити"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Більше не показувати"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Двічі торкніться, щоб\nперемістити цей додаток"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Збільшити"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Згорнути"</string> - <string name="close_button_text" msgid="2913281996024033299">"Закрити"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="4419667835599523257">"Дескриптор додатка"</string> <string name="app_icon_text" msgid="2823268023931811747">"Значок додатка"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Змінити розмір вікна ліворуч"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Змінити розмір вікна праворуч"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Розгорнути вікно або відновити його розмір"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Розгорнути вікно або відновити його розмір"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Згорнути вікно додатка"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Налаштування \"Відкривати за умовчанням\""</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Виберіть, як відкривати вебпосилання в цьому додатку"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"У додатку"</string> diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml index 4de0c47d2750..1afb48d7952c 100644 --- a/libs/WindowManager/Shell/res/values-ur/strings.xml +++ b/libs/WindowManager/Shell/res/values-ur/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"بائیں %50"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"بائیں %30"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"دائیں فل اسکرین"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"ایپس سویپ کریں"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"بالائی فل اسکرین"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"اوپر %70"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"اوپر %50"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"ری اسٹارٹ کریں"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"دوبارہ نہ دکھائیں"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"اس ایپ کو منتقل کرنے کیلئے\nدو بار تھپتھپائیں"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"بڑا کریں"</string> - <string name="minimize_button_text" msgid="271592547935841753">"چھوٹا کریں"</string> - <string name="close_button_text" msgid="2913281996024033299">"بند کریں"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"پیچھے"</string> <string name="handle_text" msgid="4419667835599523257">"ایپ ہینڈل"</string> <string name="app_icon_text" msgid="2823268023931811747">"ایپ کا آئیکن"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"دائیں طرف ونڈو کا سائز تبدیل کریں"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"ونڈو کا سائز بائیں طرف تبدیل کریں"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"ونڈو کا سائز زیادہ سے زیادہ یا بحال کریں"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"ایپ ونڈو کو چھوٹا کریں"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"بطور ڈیفالٹ ترتیبات کھولیں"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"اس ایپ کے لیے ویب لنکس کھولنے کا طریقہ منتخب کریں"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"ایپ میں"</string> diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml index 8c0d9bb216d4..04fd4290a89f 100644 --- a/libs/WindowManager/Shell/res/values-uz/strings.xml +++ b/libs/WindowManager/Shell/res/values-uz/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Chapda 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Chapda 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"O‘ngda to‘liq ekran"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Ilovalarni almashtirish"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Tepada to‘liq ekran"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Tepada 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Tepada 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Qaytadan"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Boshqa chiqmasin"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Bu ilovani siljitish uchun\nikki marta bosing"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Yoyish"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Kichraytirish"</string> - <string name="close_button_text" msgid="2913281996024033299">"Yopish"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Orqaga"</string> <string name="handle_text" msgid="4419667835599523257">"Ilova identifikatori"</string> <string name="app_icon_text" msgid="2823268023931811747">"Ilova belgisi"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Oyna oʻlchamini chapga oʻzgartirish"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Oyna oʻlchamini oʻngga oʻzgartirish"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Oyna oʻlchamini kengaytirish yoki asliga qaytarish"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Ilova oynasini kichraytirish"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Birlamchi sozlamalar asosida ochish"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Bu ilovalardagi veb havolalar qanday ochilishini tanlang"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Ilovada"</string> diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml index 3455eedeca5f..169c2b787fa7 100644 --- a/libs/WindowManager/Shell/res/values-vi/strings.xml +++ b/libs/WindowManager/Shell/res/values-vi/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Trái 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Trái 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Toàn màn hình bên phải"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Hoán đổi ứng dụng"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Toàn màn hình phía trên"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Trên 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Trên 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Khởi động lại"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Không hiện lại"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Nhấn đúp để\ndi chuyển ứng dụng này"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Phóng to"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Thu nhỏ"</string> - <string name="close_button_text" msgid="2913281996024033299">"Đóng"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Quay lại"</string> <string name="handle_text" msgid="4419667835599523257">"Ô điều khiển ứng dụng"</string> <string name="app_icon_text" msgid="2823268023931811747">"Biểu tượng ứng dụng"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Đổi kích thước và chuyển cửa sổ sang trái"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Đổi kích thước và chuyển cửa sổ sang phải"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Phóng to hoặc khôi phục kích thước cửa sổ"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Phóng to hoặc khôi phục kích thước cửa sổ"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Thu nhỏ cửa sổ ứng dụng"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Mở các chế độ cài đặt theo mặc định"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Chọn cách mở đường liên kết trang web cho ứng dụng này"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Trong ứng dụng"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml index 369fa4ba6244..942734ad0849 100644 --- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左侧 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左侧 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右侧全屏"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"交换应用位置"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"顶部全屏"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"顶部 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"顶部 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"重启"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"不再显示"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"点按两次\n即可移动此应用"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"关闭"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"返回"</string> <string name="handle_text" msgid="4419667835599523257">"应用手柄"</string> <string name="app_icon_text" msgid="2823268023931811747">"应用图标"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"调整窗口大小并贴靠左侧"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"调整窗口大小并贴靠右侧"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"将窗口最大化或恢复大小"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"将窗口最大化或恢复大小"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"将应用窗口最小化"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"默认打开设置"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"选择如何打开此应用中的网页链接"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"在此应用内"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml index 8624f94d50b6..f89792235c78 100644 --- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"左邊 50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"左邊 30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"右邊全螢幕"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"切換應用程式"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"頂部全螢幕"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"頂部 70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"頂部 50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"重新啟動"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"不要再顯示"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"輕按兩下\n即可移動此應用程式"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"關閉"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"返去"</string> <string name="handle_text" msgid="4419667835599523257">"應用程式控點"</string> <string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"將視窗移去左邊調整大小"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"將視窗移去右邊調整大小"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗放到最大或者還原視窗大小"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"將視窗放到最大或者還原視窗大小"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"將應用程式視窗縮到最細"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"採用預設設定打開"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"選擇此應用程式開啟網絡連結的方式"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"在應用程式內"</string> diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml index 199c10257d5b..3c6abec3c08c 100644 --- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"以 50% 的螢幕空間顯示左側畫面"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"以 30% 的螢幕空間顯示左側畫面"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"以全螢幕顯示右側畫面"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"切換應用程式"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"以全螢幕顯示頂端畫面"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"以 70% 的螢幕空間顯示頂端畫面"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"以 50% 的螢幕空間顯示頂端畫面"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"重新啟動"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"不要再顯示"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"輕觸兩下即可\n移動這個應用程式"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"最大化"</string> - <string name="minimize_button_text" msgid="271592547935841753">"最小化"</string> - <string name="close_button_text" msgid="2913281996024033299">"關閉"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"返回"</string> <string name="handle_text" msgid="4419667835599523257">"應用程式控制代碼"</string> <string name="app_icon_text" msgid="2823268023931811747">"應用程式圖示"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"調整應用程式視窗大小並向左貼齊"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"調整應用程式視窗大小並向右貼齊"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"將視窗最大化或還原大小"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"將視窗最大化或還原大小"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"將應用程式視窗最小化"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"開啟連結的預設設定"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"選擇如何開啟這個應用程式的網頁連結"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"使用應用程式"</string> diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml index 8f40142736bc..b304299a6c18 100644 --- a/libs/WindowManager/Shell/res/values-zu/strings.xml +++ b/libs/WindowManager/Shell/res/values-zu/strings.xml @@ -43,7 +43,10 @@ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Kwesokunxele ngo-50%"</string> <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Kwesokunxele ngo-30%"</string> <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Isikrini esigcwele esingakwesokudla"</string> - <string name="accessibility_action_divider_swap" msgid="7026003137401725787">"Shintsha ama-app"</string> + <!-- no translation found for accessibility_action_divider_swap_vertical (3644891227133372072) --> + <skip /> + <!-- no translation found for accessibility_action_divider_swap_horizontal (2722197605446631628) --> + <skip /> <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Isikrini esigcwele esiphezulu"</string> <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Okuphezulu okungu-70%"</string> <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Okuphezulu okungu-50%"</string> @@ -112,9 +115,14 @@ <string name="letterbox_restart_restart" msgid="8529976234412442973">"Qala kabusha"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"Ungabonisi futhi"</string> <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"Thepha kabili ukuze\nuhambise le-app"</string> - <string name="maximize_button_text" msgid="1650859196290301963">"Khulisa"</string> - <string name="minimize_button_text" msgid="271592547935841753">"Nciphisa"</string> - <string name="close_button_text" msgid="2913281996024033299">"Vala"</string> + <!-- no translation found for maximize_button_text (8106849394538234709) --> + <skip /> + <!-- no translation found for restore_button_text (5377571986086775288) --> + <skip /> + <!-- no translation found for minimize_button_text (5213953162664451152) --> + <skip /> + <!-- no translation found for close_button_text (4544839489310949894) --> + <skip /> <string name="back_button_text" msgid="1469718707134137085">"Emuva"</string> <string name="handle_text" msgid="4419667835599523257">"Inkomba ye-App"</string> <string name="app_icon_text" msgid="2823268023931811747">"Isithonjana Se-app"</string> @@ -150,8 +158,14 @@ <string name="maximize_menu_talkback_action_snap_left_text" msgid="500309467459084564">"Shintsha usayizi wewindi ngakwesokunxele"</string> <string name="maximize_menu_talkback_action_snap_right_text" msgid="7010831426654467163">"Shintsha usayizi wewindi ngakwesokudla"</string> <string name="maximize_menu_talkback_action_maximize_restore_text" msgid="4942610897847934859">"Khulisa noma buyisela usayizi wewindi"</string> - <string name="maximize_button_talkback_action_maximize_restore_text" msgid="4122441323153198455">"Khulisa noma buyisela usayizi wewindi"</string> - <string name="minimize_button_talkback_action_maximize_restore_text" msgid="8890767445425625935">"Nciphisa iwindi le-app"</string> + <!-- no translation found for app_header_talkback_action_maximize_button_text (8776156791095878638) --> + <skip /> + <!-- no translation found for app_header_talkback_action_restore_button_text (2153022340772980863) --> + <skip /> + <!-- no translation found for app_header_talkback_action_minimize_button_text (7491054416186901764) --> + <skip /> + <!-- no translation found for app_header_talkback_action_close_button_text (5159612596378268926) --> + <skip /> <string name="open_by_default_settings_text" msgid="2526548548598185500">"Vula amasethingi ngokuzenzakalela"</string> <string name="open_by_default_dialog_subheader_text" msgid="1729599730664063881">"Khetha indlela yokuvula amalinki ewebhu ale app"</string> <string name="open_by_default_dialog_in_app_text" msgid="6978022419634199806">"Ku-app"</string> diff --git a/libs/WindowManager/Shell/res/values/colors.xml b/libs/WindowManager/Shell/res/values/colors.xml index d754243a2b07..8d18f959951b 100644 --- a/libs/WindowManager/Shell/res/values/colors.xml +++ b/libs/WindowManager/Shell/res/values/colors.xml @@ -68,4 +68,8 @@ <color name="desktop_mode_caption_button_on_hover_light">#11000000</color> <color name="desktop_mode_caption_button_on_hover_dark">#11FFFFFF</color> <color name="desktop_mode_caption_button">#00000000</color> + <color name="tiling_divider_background_light">#C9C7B6</color> + <color name="tiling_divider_background_dark">#4A4739</color> + <color name="tiling_handle_background_light">#000000</color> + <color name="tiling_handle_background_dark">#FFFFFF</color> </resources> diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml index a0c68ad44379..32660e8fca27 100644 --- a/libs/WindowManager/Shell/res/values/dimen.xml +++ b/libs/WindowManager/Shell/res/values/dimen.xml @@ -618,6 +618,15 @@ <!-- The vertical inset to apply to the app chip's ripple drawable --> <dimen name="desktop_mode_header_app_chip_ripple_inset_vertical">4dp</dimen> + <!-- The corner radius of the windowing actions pill buttons's ripple drawable --> + <dimen name="desktop_mode_handle_menu_windowing_action_ripple_radius">24dp</dimen> + <!-- The horizontal/vertical inset to apply to the ripple drawable effect of windowing + actions pill central buttons --> + <dimen name="desktop_mode_handle_menu_windowing_action_ripple_inset_base">2dp</dimen> + <!-- The horizontal/vertical vertical inset to apply to the ripple drawable effect of windowing + actions pill edge buttons --> + <dimen name="desktop_mode_handle_menu_windowing_action_ripple_inset_shift">4dp</dimen> + <!-- The corner radius of the minimize button's ripple drawable --> <dimen name="desktop_mode_header_minimize_ripple_radius">18dp</dimen> <!-- The vertical inset to apply to the minimize button's ripple drawable --> diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java index 00c446c3da60..2e33253b5e09 100644 --- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java +++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java @@ -22,6 +22,7 @@ import static com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper.enabl import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.TaskInfo; import android.content.Context; import android.hardware.display.DisplayManager; import android.os.SystemProperties; @@ -287,6 +288,16 @@ public class DesktopModeStatus { } /** + * @return If {@code true} we set opaque background for all freeform tasks to prevent freeform + * tasks below from being visible if freeform task window above is translucent. + * Otherwise if fluid resize is enabled, add a background to freeform tasks. + */ + public static boolean shouldSetBackground(@NonNull TaskInfo taskInfo) { + return taskInfo.isFreeform() && (!DesktopModeStatus.isVeiledResizeEnabled() + || DesktopModeFlags.ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS.isTrue()); + } + + /** * @return {@code true} if the app handle should be shown because desktop mode is enabled or * the device has a large screen */ @@ -374,7 +385,7 @@ public class DesktopModeStatus { * of the display's root [TaskDisplayArea] is set to WINDOWING_MODE_FREEFORM. */ public static boolean enterDesktopByDefaultOnFreeformDisplay(@NonNull Context context) { - if (!Flags.enterDesktopByDefaultOnFreeformDisplays()) { + if (!DesktopExperienceFlags.ENTER_DESKTOP_BY_DEFAULT_ON_FREEFORM_DISPLAYS.isTrue()) { return false; } return SystemProperties.getBoolean(ENTER_DESKTOP_BY_DEFAULT_ON_FREEFORM_DISPLAY_SYS_PROP, @@ -387,7 +398,7 @@ public class DesktopModeStatus { * screen. */ public static boolean shouldMaximizeWhenDragToTopEdge(@NonNull Context context) { - if (!Flags.enableDragToMaximize()) { + if (!DesktopExperienceFlags.ENABLE_DRAG_TO_MAXIMIZE.isTrue()) { return false; } return SystemProperties.getBoolean(ENABLE_DRAG_TO_MAXIMIZE_SYS_PROP, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java index 53551387230c..26c362611518 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationAdapter.java @@ -147,10 +147,9 @@ class ActivityEmbeddingAnimationAdapter { /** To be overridden by subclasses to adjust the animation surface change. */ void onAnimationUpdateInner(@NonNull SurfaceControl.Transaction t) { // Update the surface position and alpha. - if (com.android.graphics.libgui.flags.Flags.edgeExtensionShader() - && mAnimation.getExtensionEdges() != 0x0 + if (mAnimation.getExtensionEdges() != 0x0 && !(mChange.hasFlags(FLAG_TRANSLUCENT) - && mChange.getActivityComponent() != null)) { + && mChange.getActivityComponent() != null)) { // Extend non-translucent activities t.setEdgeExtensionEffect(mLeash, mAnimation.getExtensionEdges()); } @@ -189,8 +188,7 @@ class ActivityEmbeddingAnimationAdapter { @CallSuper void onAnimationEnd(@NonNull SurfaceControl.Transaction t) { onAnimationUpdate(t, mAnimation.getDuration()); - if (com.android.graphics.libgui.flags.Flags.edgeExtensionShader() - && mAnimation.getExtensionEdges() != 0x0) { + if (mAnimation.getExtensionEdges() != 0x0) { t.setEdgeExtensionEffect(mLeash, /* edge */ 0); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java index c3e783ddf4f1..85b7ac27daa0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/activityembedding/ActivityEmbeddingAnimationRunner.java @@ -20,11 +20,9 @@ import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManagerPolicyConstants.TYPE_LAYER_OFFSET; import static android.window.TransitionInfo.FLAG_IS_BEHIND_STARTING_WINDOW; -import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static com.android.wm.shell.activityembedding.ActivityEmbeddingAnimationSpec.createShowSnapshotForClosingAnimation; import static com.android.wm.shell.transition.TransitionAnimationHelper.addBackgroundToTransition; -import static com.android.wm.shell.transition.TransitionAnimationHelper.edgeExtendWindow; import static com.android.wm.shell.transition.TransitionAnimationHelper.getTransitionBackgroundColorIfSet; import static com.android.wm.shell.transition.Transitions.TRANSIT_TASK_FRAGMENT_DRAG_RESIZE; @@ -143,10 +141,6 @@ class ActivityEmbeddingAnimationRunner { // ending states. prepareForJumpCut(info, startTransaction); } else { - if (!com.android.graphics.libgui.flags.Flags.edgeExtensionShader()) { - addEdgeExtensionIfNeeded(startTransaction, finishTransaction, - postStartTransactionCallbacks, adapters); - } addBackgroundColorIfNeeded(info, startTransaction, finishTransaction, adapters); for (ActivityEmbeddingAnimationAdapter adapter : adapters) { duration = Math.max(duration, adapter.getDurationHint()); @@ -329,34 +323,6 @@ class ActivityEmbeddingAnimationRunner { } } - /** Adds edge extension to the surfaces that have such an animation property. */ - private void addEdgeExtensionIfNeeded(@NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction, - @NonNull List<Consumer<SurfaceControl.Transaction>> postStartTransactionCallbacks, - @NonNull List<ActivityEmbeddingAnimationAdapter> adapters) { - for (ActivityEmbeddingAnimationAdapter adapter : adapters) { - final Animation animation = adapter.mAnimation; - if (animation.getExtensionEdges() == 0) { - continue; - } - if (adapter.mChange.hasFlags(FLAG_TRANSLUCENT) - && adapter.mChange.getActivityComponent() != null) { - // Skip edge extension for translucent activity. - continue; - } - final TransitionInfo.Change change = adapter.mChange; - if (TransitionUtil.isOpeningType(adapter.mChange.getMode())) { - // Need to screenshot after startTransaction is applied otherwise activity - // may not be visible or ready yet. - postStartTransactionCallbacks.add( - t -> edgeExtendWindow(change, animation, t, finishTransaction)); - } else { - // Can screenshot now (before startTransaction is applied) - edgeExtendWindow(change, animation, startTransaction, finishTransaction); - } - } - } - /** Adds background color to the transition if any animation has such a property. */ private void addBackgroundColorIfNeeded(@NonNull TransitionInfo info, @NonNull SurfaceControl.Transaction startTransaction, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS index 6207e5b020f7..7e557860365e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/apptoweb/OWNERS @@ -4,5 +4,4 @@ madym@google.com mattsziklay@google.com mdehaini@google.com pbdr@google.com -tkachenkoi@google.com vaniadesmonda@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java index 44ae74479949..133af2a91a03 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java @@ -214,7 +214,8 @@ public interface Bubbles { * * @param entry the {@link BubbleEntry} by the notification. * @param shouldBubbleUp {@code true} if this notification should bubble up. - * @param fromSystem {@code true} if this update is from NotificationManagerService. + * @param fromSystem {@code true} if this update is from NotificationManagerService or App, + * false means this update is from SystemUi */ void onEntryUpdated(BubbleEntry entry, boolean shouldBubbleUp, boolean fromSystem); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java index 29837dc04423..677c21c96f4b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java @@ -473,7 +473,7 @@ public class BubbleBarLayerView extends FrameLayout /** Updates the expanded view size and position. */ public void updateExpandedView() { - if (mExpandedView == null || mExpandedBubble == null) return; + if (mExpandedView == null || mExpandedBubble == null || mExpandedView.isAnimating()) return; boolean isOverflowExpanded = mExpandedBubble.getKey().equals(BubbleOverflow.KEY); mPositioner.getBubbleBarExpandedViewBounds(mPositioner.isBubbleBarOnLeft(), isOverflowExpanded, mTempRect); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java index df82091ef002..dd2050a5fd5d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java @@ -461,6 +461,14 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged } } + private void setAnimating(boolean imeAnimationOngoing) { + int animatingTypes = imeAnimationOngoing ? WindowInsets.Type.ime() : 0; + try { + mWmService.updateDisplayWindowAnimatingTypes(mDisplayId, animatingTypes); + } catch (RemoteException e) { + } + } + private int imeTop(float surfaceOffset, float surfacePositionY) { // surfaceOffset is already offset by the surface's top inset, so we need to subtract // the top inset so that the return value is in screen coordinates. @@ -619,6 +627,9 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged + imeTop(hiddenY, defaultY) + "->" + imeTop(shownY, defaultY) + " showing:" + (mAnimationDirection == DIRECTION_SHOW)); } + if (android.view.inputmethod.Flags.reportAnimatingInsetsTypes()) { + setAnimating(true); + } int flags = dispatchStartPositioning(mDisplayId, imeTop(hiddenY, defaultY), imeTop(shownY, defaultY), mAnimationDirection == DIRECTION_SHOW, isFloating, t); @@ -666,6 +677,8 @@ public class DisplayImeController implements DisplayController.OnDisplaysChanged } if (!android.view.inputmethod.Flags.refactorInsetsController()) { dispatchEndPositioning(mDisplayId, mCancelled, t); + } else if (android.view.inputmethod.Flags.reportAnimatingInsetsTypes()) { + setAnimating(false); } if (mAnimationDirection == DIRECTION_HIDE && !mCancelled) { ImeTracker.forLogging().onProgress(mStatsToken, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java index c6afc313b239..b507ca2019a9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDesktopState.java @@ -88,7 +88,7 @@ public class PipDesktopState { return false; } final int displayId = mPipDisplayLayoutState.getDisplayId(); - return getDesktopRepository().getVisibleTaskCount(displayId) > 0 + return getDesktopRepository().isAnyDeskActive(displayId) || getDesktopWallpaperActivityTokenProvider().isWallpaperActivityVisible(displayId) || isDisplayInFreeform(); } @@ -100,7 +100,7 @@ public class PipDesktopState { return false; } final DesktopRepository desktopRepository = getDesktopRepository(); - return desktopRepository.getVisibleTaskCount(pipTask.getDisplayId()) > 0 + return desktopRepository.isAnyDeskActive(pipTask.getDisplayId()) || desktopRepository.isMinimizedPipPresentInDisplay(pipTask.getDisplayId()); } @@ -114,7 +114,7 @@ public class PipDesktopState { return false; } final int displayId = mPipDisplayLayoutState.getDisplayId(); - return getDesktopRepository().getVisibleTaskCount(displayId) == 0 + return !getDesktopRepository().isAnyDeskActive(displayId) && getDesktopWallpaperActivityTokenProvider().isWallpaperActivityVisible(displayId); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java index 6c04e2aa57a7..d304e20bcffc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerHandleView.java @@ -80,7 +80,19 @@ public class DividerHandleView extends View { private int mHoveringWidth; private int mHoveringHeight; private boolean mIsLeftRightSplit; - + private boolean mIsSplitScreen; + + /** + * Notifies the divider of ui mode change. + * + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void onUiModeChange(boolean isDarkMode) { + if (!mIsSplitScreen) { + mPaint.setColor(getTilingHandleColor(isDarkMode)); + invalidate(); + } + } public DividerHandleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mPaint.setColor(getResources().getColor(R.color.docked_divider_handle, null)); @@ -103,6 +115,27 @@ public class DividerHandleView extends View { mHoveringHeight = mHeight > mWidth ? ((int) (mHeight * 1.5f)) : mHeight; } + /** + * Used by tiling infrastructure to specify display light/dark mode and + * whether handle colors should be overridden on display mode change in case + * of non split screen. + * @param isSplitScreen Whether the divider is used by split screen or tiling. + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void setup(boolean isSplitScreen, boolean isDarkMode) { + mIsSplitScreen = isSplitScreen; + if (!mIsSplitScreen) { + mPaint.setColor(getTilingHandleColor(isDarkMode)); + setAlpha(.9f); + } + } + + private int getTilingHandleColor(Boolean isDarkMode) { + return isDarkMode ? getResources().getColor( + R.color.tiling_handle_background_dark, null /* theme */) : getResources().getColor( + R.color.tiling_handle_background_light, null /* theme */); + } + /** sets whether it's a left/right or top/bottom split */ public void setIsLeftRightSplit(boolean isLeftRightSplit) { mIsLeftRightSplit = isLeftRightSplit; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java index d5aaf752c3e0..cf0ecae7c815 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerRoundedCorner.java @@ -47,15 +47,17 @@ public class DividerRoundedCorner extends View { private InvertedRoundedCornerDrawInfo mBottomLeftCorner; private InvertedRoundedCornerDrawInfo mBottomRightCorner; private boolean mIsLeftRightSplit; + private boolean mIsSplitScreen; public DividerRoundedCorner(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mDividerWidth = getResources().getDimensionPixelSize(R.dimen.split_divider_bar_width); mDividerBarBackground = new Paint(); mDividerBarBackground.setColor( - getResources().getColor(R.color.split_divider_background, null)); + getResources().getColor(R.color.split_divider_background, null /* theme */)); mDividerBarBackground.setFlags(Paint.ANTI_ALIAS_FLAG); mDividerBarBackground.setStyle(Paint.Style.FILL); + mIsSplitScreen = false; } @Override @@ -99,7 +101,41 @@ public class DividerRoundedCorner extends View { } /** + * Used by tiling infrastructure to specify display light/dark mode and + * whether handle colors should be overridden on display mode change in case + * of non split screen. + * + * @param isSplitScreen Whether the divider is used by split screen or tiling. + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void setup(boolean isSplitScreen, boolean isDarkMode) { + mIsSplitScreen = isSplitScreen; + if (!isSplitScreen) { + mDividerBarBackground.setColor(getTilingHandleColor(isDarkMode)); + } + } + + /** + * Notifies the divider of ui mode change. + * + * @param isDarkMode Whether the mode is ui dark mode. + */ + public void onUiModeChange(boolean isDarkMode) { + if (!mIsSplitScreen) { + mDividerBarBackground.setColor(getTilingHandleColor(isDarkMode)); + invalidate(); + } + } + + private int getTilingHandleColor(boolean isDarkMode) { + return isDarkMode ? getResources().getColor( + R.color.tiling_divider_background_dark, null /* theme */) : getResources().getColor( + R.color.tiling_divider_background_light, null /* theme */); + } + + /** * Set whether the rounded corner is for a left/right split. + * * @param isLeftRightSplit whether it's a left/right split or top/bottom split. */ public void setIsLeftRightSplit(boolean isLeftRightSplit) { @@ -123,7 +159,16 @@ public class DividerRoundedCorner extends View { mCornerPosition = cornerPosition; final RoundedCorner roundedCorner = getDisplay().getRoundedCorner(cornerPosition); - mRadius = roundedCorner == null ? 0 : roundedCorner.getRadius(); + if (mIsSplitScreen) { + mRadius = roundedCorner == null ? 0 : roundedCorner.getRadius(); + } else { + mRadius = mContext + .getResources() + .getDimensionPixelSize( + com.android.wm.shell.shared.R.dimen + .desktop_windowing_freeform_rounded_corner_radius); + } + // Starts with a filled square, and then subtracting out a circle from the appropriate // corner. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java index 201870fe0181..9b11e4ab16fa 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java @@ -872,7 +872,7 @@ public class CompatUIController implements OnDisplaysChangedListener, return false; } boolean isDesktopModeShowing = mDesktopUserRepositories.get().getCurrent() - .getVisibleTaskCount(taskInfo.displayId) > 0; + .isAnyDeskActive(taskInfo.displayId); return DesktopModeFlags.ENABLE_DESKTOP_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE_BUGFIX .isTrue() && isDesktopModeShowing; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index 59acdc574434..79fbd32dafe6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -100,6 +100,7 @@ import com.android.wm.shell.desktopmode.DesktopTasksLimiter; import com.android.wm.shell.desktopmode.DesktopTasksTransitionObserver; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.desktopmode.DragToDesktopTransitionHandler; +import com.android.wm.shell.desktopmode.DragToDisplayTransitionHandler; import com.android.wm.shell.desktopmode.EnterDesktopTaskTransitionHandler; import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler; import com.android.wm.shell.desktopmode.OverviewToDesktopTransitionObserver; @@ -770,7 +771,8 @@ public abstract class WMShellModule { DesksOrganizer desksOrganizer, DesksTransitionObserver desksTransitionObserver, UserProfileContexts userProfileContexts, - DesktopModeCompatPolicy desktopModeCompatPolicy) { + DesktopModeCompatPolicy desktopModeCompatPolicy, + DragToDisplayTransitionHandler dragToDisplayTransitionHandler) { return new DesktopTasksController( context, shellInit, @@ -800,6 +802,7 @@ public abstract class WMShellModule { recentTasksController.orElse(null), interactionJankMonitor, mainHandler, + focusTransitionObserver, desktopModeEventLogger, desktopModeUiEventLogger, desktopWallpaperActivityTokenProvider, @@ -808,7 +811,8 @@ public abstract class WMShellModule { desksOrganizer, desksTransitionObserver, userProfileContexts, - desktopModeCompatPolicy); + desktopModeCompatPolicy, + dragToDisplayTransitionHandler); } @WMSingleton @@ -934,6 +938,12 @@ public abstract class WMShellModule { @WMSingleton @Provides + static DragToDisplayTransitionHandler provideDragToDisplayTransitionHandler() { + return new DragToDisplayTransitionHandler(); + } + + @WMSingleton + @Provides static Optional<DesktopModeKeyGestureHandler> provideDesktopModeKeyGestureHandler( Context context, Optional<DesktopModeWindowDecorViewModel> desktopModeWindowDecorViewModel, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt index 6104e79efc66..b8f4bb8d8323 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopActivityOrientationChangeHandler.kt @@ -84,7 +84,7 @@ class DesktopActivityOrientationChangeHandler( if (!Flags.respectOrientationChangeForUnresizeable()) return val task = shellTaskOrganizer.getRunningTaskInfo(taskId) ?: return val taskRepository = desktopUserRepositories.current - val isDesktopModeShowing = taskRepository.getVisibleTaskCount(task.displayId) > 0 + val isDesktopModeShowing = taskRepository.isAnyDeskActive(task.displayId) if (!isDesktopModeShowing || !task.isFreeform || task.isResizeable) return val taskBounds = task.configuration.windowConfiguration.bounds diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt index 78c377bc1234..e89aafe267ed 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayModeController.kt @@ -48,30 +48,8 @@ class DesktopDisplayModeController( fun refreshDisplayWindowingMode() { if (!DesktopExperienceFlags.ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING.isTrue) return - // TODO: b/375319538 - Replace the check with a DisplayManager API once it's available. - val isExtendedDisplayEnabled = - 0 != - Settings.Global.getInt( - context.contentResolver, - DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, - 0, - ) - if (!isExtendedDisplayEnabled) { - // No action needed in mirror or projected mode. - return - } - val hasNonDefaultDisplay = - rootTaskDisplayAreaOrganizer.getDisplayIds().any { displayId -> - displayId != DEFAULT_DISPLAY - } - val targetDisplayWindowingMode = - if (hasNonDefaultDisplay) { - WINDOWING_MODE_FREEFORM - } else { - // Use the default display windowing mode when no non-default display. - windowManager.getWindowingMode(DEFAULT_DISPLAY) - } + val targetDisplayWindowingMode = getTargetWindowingModeForDefaultDisplay() val tdaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY) requireNotNull(tdaInfo) { "DisplayAreaInfo of DEFAULT_DISPLAY must be non-null." } val currentDisplayWindowingMode = tdaInfo.configuration.windowConfiguration.windowingMode @@ -111,6 +89,25 @@ class DesktopDisplayModeController( transitions.startTransition(TRANSIT_CHANGE, wct, /* handler= */ null) } + private fun getTargetWindowingModeForDefaultDisplay(): Int { + if (isExtendedDisplayEnabled() && hasExternalDisplay()) { + return WINDOWING_MODE_FREEFORM + } + return windowManager.getWindowingMode(DEFAULT_DISPLAY) + } + + // TODO: b/375319538 - Replace the check with a DisplayManager API once it's available. + private fun isExtendedDisplayEnabled() = + 0 != + Settings.Global.getInt( + context.contentResolver, + DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, + 0, + ) + + private fun hasExternalDisplay() = + rootTaskDisplayAreaOrganizer.getDisplayIds().any { it != DEFAULT_DISPLAY } + private fun logV(msg: String, vararg arguments: Any?) { ProtoLog.v(WM_SHELL_DESKTOP_MODE, "%s: $msg", TAG, *arguments) } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt index 0cc8a6a5c1a3..aa507728739e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt @@ -16,14 +16,18 @@ package com.android.wm.shell.desktopmode +import android.app.ActivityTaskManager.INVALID_TASK_ID import android.window.DesktopExperienceFlags import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.sysui.ShellCommandHandler +import com.android.wm.shell.transition.FocusTransitionObserver import java.io.PrintWriter /** Handles the shell commands for the DesktopTasksController. */ -class DesktopModeShellCommandHandler(private val controller: DesktopTasksController) : - ShellCommandHandler.ShellCommandActionHandler { +class DesktopModeShellCommandHandler( + private val controller: DesktopTasksController, + private val focusTransitionObserver: FocusTransitionObserver, +) : ShellCommandHandler.ShellCommandActionHandler { override fun onShellCommand(args: Array<String>, pw: PrintWriter): Boolean = when (args[0]) { @@ -76,20 +80,21 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl } private fun runMoveToNextDisplay(args: Array<String>, pw: PrintWriter): Boolean { + var taskId = INVALID_TASK_ID if (args.size < 2) { - // First argument is the action name. - pw.println("Error: task id should be provided as arguments") - return false - } - - val taskId = + taskId = focusTransitionObserver.globallyFocusedTaskId + } else { try { - args[1].toInt() + taskId = args[1].toInt() } catch (e: NumberFormatException) { pw.println("Error: task id should be an integer") return false } - + } + if (taskId == INVALID_TASK_ID) { + pw.println("Error: no appropriate task found") + return false + } controller.moveToNextDisplay(taskId) return true } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt index 04e609ec3820..73df9767ee50 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt @@ -460,11 +460,15 @@ class DesktopRepository( .singleOrNull() == taskId } - /** - * Returns the active tasks in the given display's active desk. - * - * TODO: b/389960283 - migrate callers to [getActiveTaskIdsInDesk]. - */ + /** Whether the task is the only visible desktop task in the display. */ + fun isOnlyVisibleTask(taskId: Int, displayId: Int): Boolean { + val desk = desktopData.getActiveDesk(displayId) ?: return false + return desk.visibleTasks.size == 1 && desk.visibleTasks.single() == taskId + } + + /** Whether the display has only one visible desktop task. */ + fun hasOnlyOneVisibleTask(displayId: Int): Boolean = getVisibleTaskCount(displayId) == 1 + @VisibleForTesting fun getActiveTasks(displayId: Int): ArraySet<Int> = ArraySet(desktopData.getActiveDesk(displayId)?.activeTasks) @@ -593,7 +597,7 @@ class DesktopRepository( } else { desk.visibleTasks.remove(taskId) } - val newCount = getVisibleTaskCount(deskId) + val newCount = getVisibleTaskCountInDesk(deskId) if (prevCount != newCount) { logD( "Update task visibility taskId=%d visible=%b deskId=%d displayId=%d", @@ -777,18 +781,29 @@ class DesktopRepository( } } - /** - * Gets number of visible freeform tasks on given [displayId]'s active desk. - * - * TODO: b/389960283 - migrate callers to [getVisibleTaskCountInDesk]. - */ + /** Whether the display is currently showing any desk. */ + fun isAnyDeskActive(displayId: Int): Boolean { + if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { + val desk = desktopData.getDefaultDesk(displayId) + if (desk == null) { + logE("Could not find default desk for display: $displayId") + return false + } + return desk.visibleTasks.isNotEmpty() + } + return desktopData.getActiveDesk(displayId) != null + } + + /** Gets number of visible freeform tasks on given [displayId]'s active desk. */ + @Deprecated("Use isAnyDeskActive() instead.", ReplaceWith("isAnyDeskActive()")) + @VisibleForTesting fun getVisibleTaskCount(displayId: Int): Int = (desktopData.getActiveDesk(displayId)?.visibleTasks?.size ?: 0).also { logD("getVisibleTaskCount=$it") } /** Gets the number of visible tasks on the given desk. */ - fun getVisibleTaskCountInDesk(deskId: Int): Int = + private fun getVisibleTaskCountInDesk(deskId: Int): Int = desktopData.getDesk(deskId)?.visibleTasks?.size ?: 0 /** @@ -1007,6 +1022,21 @@ class DesktopRepository( fun saveBoundsBeforeFullImmersive(taskId: Int, bounds: Rect) = boundsBeforeFullImmersiveByTaskId.set(taskId, Rect(bounds)) + /** Returns the current state of the desktop, formatted for usage by remote clients. */ + fun getDeskDisplayStateForRemote(): Array<DisplayDeskState> = + desktopData + .desksSequence() + .groupBy { it.displayId } + .map { (displayId, desks) -> + val activeDeskId = desktopData.getActiveDesk(displayId)?.deskId + DisplayDeskState().apply { + this.displayId = displayId + this.activeDeskId = activeDeskId ?: INVALID_DESK_ID + this.deskIds = desks.map { it.deskId }.toIntArray() + } + } + .toTypedArray() + /** TODO: b/389960283 - consider updating only the changing desks. */ private fun updatePersistentRepository(displayId: Int) { val desks = desktopData.desksSequence(displayId).map { desk -> desk.deepCopy() }.toList() diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 180d069f359d..b47dfe2064cd 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -138,6 +138,7 @@ import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit import com.android.wm.shell.sysui.UserChangeListener +import com.android.wm.shell.transition.FocusTransitionObserver import com.android.wm.shell.transition.OneShotRemoteHandler import com.android.wm.shell.transition.Transitions import com.android.wm.shell.transition.Transitions.TransitionFinishCallback @@ -196,6 +197,7 @@ class DesktopTasksController( private val recentTasksController: RecentTasksController?, private val interactionJankMonitor: InteractionJankMonitor, @ShellMainThread private val handler: Handler, + private val focusTransitionObserver: FocusTransitionObserver, private val desktopModeEventLogger: DesktopModeEventLogger, private val desktopModeUiEventLogger: DesktopModeUiEventLogger, private val desktopWallpaperActivityTokenProvider: DesktopWallpaperActivityTokenProvider, @@ -205,6 +207,7 @@ class DesktopTasksController( private val desksTransitionObserver: DesksTransitionObserver, private val userProfileContexts: UserProfileContexts, private val desktopModeCompatPolicy: DesktopModeCompatPolicy, + private val dragToDisplayTransitionHandler: DragToDisplayTransitionHandler, ) : RemoteCallable<DesktopTasksController>, Transitions.TransitionHandler, @@ -216,7 +219,7 @@ class DesktopTasksController( private var visualIndicator: DesktopModeVisualIndicator? = null private var userId: Int private val desktopModeShellCommandHandler: DesktopModeShellCommandHandler = - DesktopModeShellCommandHandler(this) + DesktopModeShellCommandHandler(this, focusTransitionObserver) private val mOnAnimationFinishedCallback = { releaseVisualIndicator() } private lateinit var snapEventHandler: SnapEventHandler @@ -336,8 +339,8 @@ class DesktopTasksController( activateDefaultDeskInDisplay(displayId, remoteTransition) } - /** Gets number of visible freeform tasks in [displayId]. */ - fun visibleTaskCount(displayId: Int): Int = taskRepository.getVisibleTaskCount(displayId) + /** Returns whether the given display has an active desk. */ + fun isAnyDeskActive(displayId: Int): Boolean = taskRepository.isAnyDeskActive(displayId) /** * Returns true if any of the following is true: @@ -345,9 +348,16 @@ class DesktopTasksController( * - A transparent fullscreen task exists on top in Desktop Mode * - PiP on Desktop Windowing is enabled, there is an active PiP window and the desktop * wallpaper is visible. + * + * TODO: b/362720497 - consolidate with [isAnyDeskActive]. + * - top-transparent-fullscreen case: should not be needed if we allow it to launch inside + * the desk in fullscreen instead of force-exiting desktop and having to trick this method + * into thinking it is in desktop mode when a task in this state exists. + * - PIP case: a PIP presence should influence desk activation, so + * [DesktopRepository#isAnyDeskActive] should be sufficient. */ fun isDesktopModeShowing(displayId: Int): Boolean { - val hasVisibleTasks = visibleTaskCount(displayId) > 0 + val hasVisibleTasks = taskRepository.isAnyDeskActive(displayId) val hasTopTransparentFullscreenTask = taskRepository.getTopTransparentFullscreenTaskId(displayId) != null val hasMinimizedPip = @@ -462,15 +472,14 @@ class DesktopTasksController( remoteTransition: RemoteTransition? = null, callback: IMoveToDesktopCallback? = null, ): Boolean { - val runningTask = shellTaskOrganizer.getRunningTaskInfo(taskId) - val backgroundTask = recentTasksController?.findTaskInBackground(taskId) - if (runningTask == null && backgroundTask == null) { + val task = + shellTaskOrganizer.getRunningTaskInfo(taskId) + ?: recentTasksController?.findTaskInBackground(taskId) + if (task == null) { logW("moveTaskToDefaultDeskAndActivate taskId=%d not found", taskId) return false } - // TODO(342378842): Instead of using default display, support multiple displays - val displayId = runningTask?.displayId ?: DEFAULT_DISPLAY - val deskId = getDefaultDeskId(displayId) + val deskId = getDefaultDeskId(task.displayId) return moveTaskToDesk( taskId = taskId, deskId = deskId, @@ -522,14 +531,14 @@ class DesktopTasksController( remoteTransition: RemoteTransition? = null, callback: IMoveToDesktopCallback? = null, ): Boolean { - if (recentTasksController?.findTaskInBackground(taskId) == null) { + val task = recentTasksController?.findTaskInBackground(taskId) + if (task == null) { logW("moveBackgroundTaskToDesktop taskId=%d not found", taskId) return false } logV("moveBackgroundTaskToDesktop with taskId=%d", taskId) - // TODO(342378842): Instead of using default display, support multiple displays val taskIdToMinimize = - bringDesktopAppsToFrontBeforeShowingNewTask(DEFAULT_DISPLAY, wct, taskId) + bringDesktopAppsToFrontBeforeShowingNewTask(task.displayId, wct, taskId) val exitResult = desktopImmersiveController.exitImmersiveIfApplicable( wct = wct, @@ -811,7 +820,7 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = taskInfo.taskId, displayId = displayId, - forceToFullscreen = false, + forceExitDesktop = false, ) taskRepository.setPipShouldKeepDesktopActive(displayId, keepActive = true) val desktopExitRunnable = @@ -884,7 +893,7 @@ class DesktopTasksController( snapEventHandler.removeTaskIfTiled(displayId, taskId) taskRepository.setPipShouldKeepDesktopActive(displayId, keepActive = true) - val willExitDesktop = willExitDesktop(taskId, displayId, forceToFullscreen = false) + val willExitDesktop = willExitDesktop(taskId, displayId, forceExitDesktop = false) val desktopExitRunnable = performDesktopExitCleanUp( wct = wct, @@ -977,7 +986,7 @@ class DesktopTasksController( ) { logV("moveToFullscreenWithAnimation taskId=%d", task.taskId) val wct = WindowContainerTransaction() - val willExitDesktop = willExitDesktop(task.taskId, task.displayId, forceToFullscreen = true) + val willExitDesktop = willExitDesktop(task.taskId, task.displayId, forceExitDesktop = true) val deactivationRunnable = addMoveToFullscreenChanges(wct, task, willExitDesktop) // We are moving a freeform task to fullscreen, put the home task under the fullscreen task. @@ -996,7 +1005,14 @@ class DesktopTasksController( deactivationRunnable?.invoke(transition) // handles case where we are moving to full screen without closing all DW tasks. - if (!taskRepository.isOnlyVisibleNonClosingTask(task.taskId)) { + if ( + !taskRepository.isOnlyVisibleNonClosingTask(task.taskId) + // This callback is already invoked by |addMoveToFullscreenChanges| when one of these + // flags is enabled. + && + !DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue && + !Flags.enableDesktopWindowingPip() + ) { desktopModeEnterExitTransitionListener?.onExitDesktopModeTransitionStarted( FULLSCREEN_ANIMATION_DURATION ) @@ -1304,25 +1320,23 @@ class DesktopTasksController( applyFreeformDisplayChange(wct, task, displayId) } - val activationRunnable: RunOnTransitStart? if (DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { desksOrganizer.moveTaskToDesk(wct, destinationDeskId, task) - prepareForDeskActivation(displayId, wct) - desksOrganizer.activateDesk(wct, destinationDeskId) - activationRunnable = { transition -> - desksTransitionObserver.addPendingTransition( - DeskTransition.ActiveDeskWithTask( - token = transition, - displayId = displayId, - deskId = destinationDeskId, - enterTaskId = task.taskId, - ) - ) - } } else { wct.reparent(task.token, displayAreaInfo.token, /* onTop= */ true) - activationRunnable = null } + addDeskActivationChanges(destinationDeskId, wct) + val activationRunnable: RunOnTransitStart = { transition -> + desksTransitionObserver.addPendingTransition( + DeskTransition.ActiveDeskWithTask( + token = transition, + displayId = displayId, + deskId = destinationDeskId, + enterTaskId = task.taskId, + ) + ) + } + if (Flags.enableDisplayFocusInShellTransitions()) { // Bring the destination display to top with includingParents=true, so that the // destination display gains the display focus, which makes the top task in the display @@ -1893,16 +1907,24 @@ class DesktopTasksController( private fun willExitDesktop( triggerTaskId: Int, displayId: Int, - forceToFullscreen: Boolean, + forceExitDesktop: Boolean, ): Boolean { + if ( + forceExitDesktop && + (Flags.enableDesktopWindowingPip() || + DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) + ) { + // |forceExitDesktop| is true when the callers knows we'll exit desktop, such as when + // explicitly going fullscreen, so there's no point in checking the desktop state. + return true + } if (Flags.enablePerDisplayDesktopWallpaperActivity()) { if (!taskRepository.isOnlyVisibleNonClosingTask(triggerTaskId, displayId)) { return false } } else if ( Flags.enableDesktopWindowingPip() && - taskRepository.isMinimizedPipPresentInDisplay(displayId) && - !forceToFullscreen + taskRepository.isMinimizedPipPresentInDisplay(displayId) ) { return false } else { @@ -2295,7 +2317,7 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = task.taskId, displayId = task.displayId, - forceToFullscreen = true, + forceExitDesktop = true, ), ) wct.reorder(task.token, true) @@ -2328,7 +2350,7 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = task.taskId, displayId = task.displayId, - forceToFullscreen = true, + forceExitDesktop = true, ), ) return wct @@ -2433,7 +2455,7 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = task.taskId, displayId = task.displayId, - forceToFullscreen = true, + forceExitDesktop = true, ), ) } @@ -2471,7 +2493,7 @@ class DesktopTasksController( willExitDesktop( triggerTaskId = task.taskId, displayId = task.displayId, - forceToFullscreen = true, + forceExitDesktop = true, ), ) } @@ -3173,25 +3195,24 @@ class DesktopTasksController( val wct = WindowContainerTransaction() wct.setBounds(taskInfo.token, destinationBounds) - // TODO: b/362720497 - reparent to a specific desk within the target display. - // Reparent task if it has been moved to a new display. - if (Flags.enableConnectedDisplaysWindowDrag()) { - val newDisplayId = motionEvent.getDisplayId() - if (newDisplayId != taskInfo.getDisplayId()) { - val displayAreaInfo = - rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(newDisplayId) - if (displayAreaInfo == null) { - logW( - "Task reparent cannot find DisplayAreaInfo for displayId=%d", - newDisplayId, - ) - } else { - wct.reparent(taskInfo.token, displayAreaInfo.token, /* onTop= */ true) - } + val newDisplayId = motionEvent.getDisplayId() + val displayAreaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(newDisplayId) + val isCrossDisplayDrag = + Flags.enableConnectedDisplaysWindowDrag() && + newDisplayId != taskInfo.getDisplayId() && + displayAreaInfo != null + val handler = + if (isCrossDisplayDrag) { + dragToDisplayTransitionHandler + } else { + null } + if (isCrossDisplayDrag) { + // TODO: b/362720497 - reparent to a specific desk within the target display. + wct.reparent(taskInfo.token, displayAreaInfo.token, /* onTop= */ true) } - transitions.startTransition(TRANSIT_CHANGE, wct, null) + transitions.startTransition(TRANSIT_CHANGE, wct, handler) releaseVisualIndicator() } @@ -3613,27 +3634,11 @@ class DesktopTasksController( controller, { c -> run { - c.taskRepository.addDeskChangeListener( - deskChangeListener, - c.mainExecutor, - ) - c.taskRepository.addVisibleTasksListener( - visibleTasksListener, - c.mainExecutor, - ) - c.taskbarDesktopTaskListener = taskbarDesktopTaskListener - c.desktopModeEnterExitTransitionListener = - desktopModeEntryExitTransitionListener - } - }, - { c -> - run { - c.taskRepository.removeDeskChangeListener(deskChangeListener) - c.taskRepository.removeVisibleTasksListener(visibleTasksListener) - c.taskbarDesktopTaskListener = null - c.desktopModeEnterExitTransitionListener = null + syncInitialState(c) + registerListeners(c) } }, + { c -> run { unregisterListeners(c) } }, ) } @@ -3729,6 +3734,31 @@ class DesktopTasksController( c.startLaunchIntentTransition(intent, options, displayId) } } + + private fun syncInitialState(c: DesktopTasksController) { + remoteListener.call { l -> + // TODO: b/393962589 - implement desks limit. + val canCreateDesks = true + l.onListenerConnected( + c.taskRepository.getDeskDisplayStateForRemote(), + canCreateDesks, + ) + } + } + + private fun registerListeners(c: DesktopTasksController) { + c.taskRepository.addDeskChangeListener(deskChangeListener, c.mainExecutor) + c.taskRepository.addVisibleTasksListener(visibleTasksListener, c.mainExecutor) + c.taskbarDesktopTaskListener = taskbarDesktopTaskListener + c.desktopModeEnterExitTransitionListener = desktopModeEntryExitTransitionListener + } + + private fun unregisterListeners(c: DesktopTasksController) { + c.taskRepository.removeDeskChangeListener(deskChangeListener) + c.taskRepository.removeVisibleTasksListener(visibleTasksListener) + c.taskbarDesktopTaskListener = null + c.desktopModeEnterExitTransitionListener = null + } } private fun logV(msg: String, vararg arguments: Any?) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt index 9a97ae8d61a0..df2cf67fced2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserver.kt @@ -26,6 +26,7 @@ import android.view.WindowManager.TRANSIT_OPEN import android.view.WindowManager.TRANSIT_PIP import android.view.WindowManager.TRANSIT_TO_BACK import android.view.WindowManager.TRANSIT_TO_FRONT +import android.window.DesktopExperienceFlags import android.window.DesktopModeFlags import android.window.DesktopModeFlags.ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER import android.window.DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY @@ -162,18 +163,24 @@ class DesktopTasksTransitionObserver( continue } val desktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) - val visibleTaskCount = desktopRepository.getVisibleTaskCount(taskInfo.displayId) + val isInDesktop = desktopRepository.isAnyDeskActive(taskInfo.displayId) if ( - visibleTaskCount > 0 && + isInDesktop && change.mode == TRANSIT_TO_BACK && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM ) { + val isLastTask = + if (!DesktopExperienceFlags.ENABLE_MULTIPLE_DESKTOPS_BACKEND.isTrue) { + desktopRepository.hasOnlyOneVisibleTask(taskInfo.displayId) + } else { + desktopRepository.isOnlyVisibleTask(taskInfo.taskId, taskInfo.displayId) + } desktopRepository.minimizeTask(taskInfo.displayId, taskInfo.taskId) desktopMixedTransitionHandler.addPendingMixedTransition( DesktopMixedTransitionHandler.PendingMixedTransition.Minimize( transition, taskInfo.taskId, - visibleTaskCount == 1, + isLastTask, ) ) } @@ -227,9 +234,9 @@ class DesktopTasksTransitionObserver( taskInfo: ActivityManager.RunningTaskInfo ): Int? { val desktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) - val visibleTaskCount = desktopRepository.getVisibleTaskCount(taskInfo.displayId) + val isInDesktop = desktopRepository.isAnyDeskActive(taskInfo.displayId) if ( - visibleTaskCount > 0 && + isInDesktop && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM && backAnimationController.latestTriggerBackTask == taskInfo.taskId && !desktopRepository.isClosingTask(taskInfo.taskId) @@ -253,7 +260,7 @@ class DesktopTasksTransitionObserver( val desktopRepository = desktopUserRepositories.getProfile(taskInfo.userId) if ( - desktopRepository.getVisibleTaskCount(taskInfo.displayId) == 0 && + !desktopRepository.isAnyDeskActive(taskInfo.displayId) && change.mode == TRANSIT_CLOSE && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM && desktopWallpaperActivityTokenProvider.getToken(taskInfo.displayId) != null diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandler.kt new file mode 100644 index 000000000000..d51576a5148e --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandler.kt @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wm.shell.desktopmode + +import android.os.IBinder +import android.view.SurfaceControl +import android.window.TransitionInfo +import android.window.TransitionRequestInfo +import android.window.WindowContainerTransaction +import com.android.wm.shell.transition.Transitions + +/** Handles the transition to drag a window to another display by dragging the caption. */ +class DragToDisplayTransitionHandler : Transitions.TransitionHandler { + override fun handleRequest( + transition: IBinder, + request: TransitionRequestInfo, + ): WindowContainerTransaction? { + return null + } + + override fun startAnimation( + transition: IBinder, + info: TransitionInfo, + startTransaction: SurfaceControl.Transaction, + finishTransaction: SurfaceControl.Transaction, + finishCallback: Transitions.TransitionFinishCallback, + ): Boolean { + for (change in info.changes) { + val sc = change.leash + val endBounds = change.endAbsBounds + val endPosition = change.endRelOffset + startTransaction + .setWindowCrop(sc, endBounds.width(), endBounds.height()) + .setPosition(sc, endPosition.x.toFloat(), endPosition.y.toFloat()) + finishTransaction + .setWindowCrop(sc, endBounds.width(), endBounds.height()) + .setPosition(sc, endPosition.x.toFloat(), endPosition.y.toFloat()) + } + + startTransaction.apply() + finishCallback.onTransitionFinished(null) + return true + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt index 224ff37a1dca..3576b25e06b0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandler.kt @@ -162,7 +162,7 @@ class SystemModalsTransitionHandler( } private fun isDesktopModeShowing(displayId: Int): Boolean = - desktopUserRepositories.current.getVisibleTaskCount(displayId) > 0 + desktopUserRepositories.current.isAnyDeskActive(displayId) override fun handleRequest( transition: IBinder, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 61a193c7d523..04f03361258e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -782,7 +782,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, private boolean isPipExitingToDesktopMode() { DesktopRepository currentRepo = getCurrentRepo(); return Flags.enableDesktopWindowingPip() && currentRepo != null - && (currentRepo.getVisibleTaskCount(mTaskInfo.displayId) > 0 + && (currentRepo.isAnyDeskActive(mTaskInfo.displayId) || isDisplayInFreeform()); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS index 5aa3c4e2abef..245669b644db 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/OWNERS @@ -1,3 +1,2 @@ # WM shell sub-module TV pip owner -galinap@google.com bronger@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java index b869bf153c34..af1e98a3a8d2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipResizeGestureHandler.java @@ -395,6 +395,7 @@ public class PipResizeGestureHandler implements void finishResize() { if (mLastResizeBounds.isEmpty()) { resetState(); + return; } // Cache initial bounds after release for animation before mLastResizeBounds are modified. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java index 7805ec34e105..383afcf6f821 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java @@ -16,9 +16,11 @@ package com.android.wm.shell.pip2.phone; +import android.app.PictureInPictureParams; import android.content.Context; import android.graphics.Matrix; import android.graphics.Rect; +import android.os.SystemProperties; import android.view.SurfaceControl; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; @@ -28,6 +30,7 @@ import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.ProtoLog; +import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.pip.PipBoundsState; import com.android.wm.shell.common.pip.PipDesktopState; @@ -39,6 +42,7 @@ import com.android.wm.shell.shared.split.SplitScreenConstants; import com.android.wm.shell.splitscreen.SplitScreenController; import java.util.Optional; +import java.util.function.Supplier; /** * Scheduler for Shell initiated PiP transitions and animations. @@ -46,6 +50,15 @@ import java.util.Optional; public class PipScheduler { private static final String TAG = PipScheduler.class.getSimpleName(); + /** + * The fixed start delay in ms when fading out the content overlay from bounds animation. + * The fadeout animation is guaranteed to start after the client has drawn under the new config. + */ + public static final int EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS = + SystemProperties.getInt( + "persist.wm.debug.extra_content_overlay_fade_out_delay_ms", 400); + private static final int CONTENT_OVERLAY_FADE_OUT_DURATION_MS = 500; + private final Context mContext; private final PipBoundsState mPipBoundsState; private final ShellExecutor mMainExecutor; @@ -60,6 +73,7 @@ public class PipScheduler { @Nullable private Runnable mUpdateMovementBoundsRunnable; private PipAlphaAnimatorSupplier mPipAlphaAnimatorSupplier; + private Supplier<PictureInPictureParams> mPipParamsSupplier; public PipScheduler(Context context, PipBoundsState pipBoundsState, @@ -222,6 +236,16 @@ public class PipScheduler { tx.apply(); } + void startOverlayFadeoutAnimation(@NonNull SurfaceControl overlayLeash, + boolean withStartDelay, @NonNull Runnable onAnimationEnd) { + PipAlphaAnimator animator = mPipAlphaAnimatorSupplier.get(mContext, overlayLeash, + null /* startTx */, null /* finishTx */, PipAlphaAnimator.FADE_OUT); + animator.setDuration(CONTENT_OVERLAY_FADE_OUT_DURATION_MS); + animator.setStartDelay(withStartDelay ? EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS : 0); + animator.setAnimationEndCallback(onAnimationEnd); + animator.start(); + } + void setUpdateMovementBoundsRunnable(@Nullable Runnable updateMovementBoundsRunnable) { mUpdateMovementBoundsRunnable = updateMovementBoundsRunnable; } @@ -236,6 +260,25 @@ public class PipScheduler { if (mPipBoundsState.getBounds().equals(newBounds)) { return; } + + // Take a screenshot of PiP and fade it out after resize is finished if seamless resize + // is off and if the PiP size is changing. + boolean animateCrossFadeResize = !getPipParams().isSeamlessResizeEnabled() + && !(mPipBoundsState.getBounds().width() == newBounds.width() + && mPipBoundsState.getBounds().height() == newBounds.height()); + if (animateCrossFadeResize) { + final Rect crop = new Rect(newBounds); + crop.offsetTo(0, 0); + // Note: Put this at layer=MAX_VALUE-2 since the input consumer for PIP is placed at + // MAX_VALUE-1 + final SurfaceControl snapshotSurface = ScreenshotUtils.takeScreenshot( + mSurfaceControlTransactionFactory.getTransaction(), + mPipTransitionState.getPinnedTaskLeash(), crop, Integer.MAX_VALUE - 2); + startOverlayFadeoutAnimation(snapshotSurface, false /* withStartDelay */, () -> { + mSurfaceControlTransactionFactory.getTransaction().remove(snapshotSurface).apply(); + }); + } + mPipBoundsState.setBounds(newBounds); maybeUpdateMovementBounds(); } @@ -259,4 +302,14 @@ public class PipScheduler { void setPipAlphaAnimatorSupplier(@NonNull PipAlphaAnimatorSupplier supplier) { mPipAlphaAnimatorSupplier = supplier; } + + void setPipParamsSupplier(@NonNull Supplier<PictureInPictureParams> pipParamsSupplier) { + mPipParamsSupplier = pipParamsSupplier; + } + + @NonNull + private PictureInPictureParams getPipParams() { + if (mPipParamsSupplier == null) return new PictureInPictureParams.Builder().build(); + return mPipParamsSupplier.get(); + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java index dbcbf3663827..d6634845ee21 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTaskListener.java @@ -91,6 +91,7 @@ public class PipTaskListener implements ShellTaskOrganizer.TaskListener, }); } mPipResizeAnimatorSupplier = PipResizeAnimator::new; + mPipScheduler.setPipParamsSupplier(this::getPictureInPictureParams); } void setPictureInPictureParams(@Nullable PictureInPictureParams params) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java index 0cfab11dbc64..91fbd456eb63 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java @@ -50,7 +50,6 @@ import android.graphics.PointF; import android.graphics.Rect; import android.os.Bundle; import android.os.IBinder; -import android.os.SystemProperties; import android.view.SurfaceControl; import android.view.WindowManager; import android.window.TransitionInfo; @@ -102,15 +101,6 @@ public class PipTransition extends PipTransitionController implements "animating_bounds_change_duration"; static final int BOUNDS_CHANGE_JUMPCUT_DURATION = 0; - /** - * The fixed start delay in ms when fading out the content overlay from bounds animation. - * The fadeout animation is guaranteed to start after the client has drawn under the new config. - */ - private static final int EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS = - SystemProperties.getInt( - "persist.wm.debug.extra_content_overlay_fade_out_delay_ms", 400); - private static final int CONTENT_OVERLAY_FADE_OUT_DURATION_MS = 500; - // // Dependencies // @@ -481,7 +471,8 @@ public class PipTransition extends PipTransitionController implements if (swipePipToHomeOverlay != null) { // fadeout the overlay if needed. - startOverlayFadeoutAnimation(swipePipToHomeOverlay, () -> { + mPipScheduler.startOverlayFadeoutAnimation(swipePipToHomeOverlay, + true /* withStartDelay */, () -> { SurfaceControl.Transaction tx = new SurfaceControl.Transaction(); tx.remove(swipePipToHomeOverlay); tx.apply(); @@ -542,8 +533,8 @@ public class PipTransition extends PipTransitionController implements animator.setAnimationStartCallback(() -> animator.setEnterStartState(pipChange)); animator.setAnimationEndCallback(() -> { if (animator.getContentOverlayLeash() != null) { - startOverlayFadeoutAnimation(animator.getContentOverlayLeash(), - animator::clearAppIconOverlay); + mPipScheduler.startOverlayFadeoutAnimation(animator.getContentOverlayLeash(), + true /* withStartDelay */, animator::clearAppIconOverlay); } finishTransition(); }); @@ -551,16 +542,6 @@ public class PipTransition extends PipTransitionController implements return true; } - private void startOverlayFadeoutAnimation(@NonNull SurfaceControl overlayLeash, - @NonNull Runnable onAnimationEnd) { - PipAlphaAnimator animator = new PipAlphaAnimator(mContext, overlayLeash, - null /* startTx */, null /* finishTx */, PipAlphaAnimator.FADE_OUT); - animator.setDuration(CONTENT_OVERLAY_FADE_OUT_DURATION_MS); - animator.setStartDelay(EXTRA_CONTENT_OVERLAY_FADE_OUT_DELAY_MS); - animator.setAnimationEndCallback(onAnimationEnd); - animator.start(); - } - private void handleBoundsEnterFixedRotation(TransitionInfo info, TransitionInfo.Change outPipTaskChange, TransitionInfo.Change outPipActivityChange) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 0438d16796cf..93023471fdfb 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -93,6 +93,7 @@ import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.IActivityTaskManager; import android.app.PendingIntent; +import android.app.PictureInPictureParams; import android.app.TaskInfo; import android.content.ActivityNotFoundException; import android.content.Context; @@ -2890,6 +2891,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, prepareEnterSplitScreen(out); mSplitTransitions.setEnterTransition(transition, request.getRemoteTransition(), TRANSIT_SPLIT_SCREEN_PAIR_OPEN, !mIsDropEntering); + } else if (isSplitScreenVisible() && isOpening) { + // launching into an existing split stage; possibly launchAdjacent + // If we're replacing a pip-able app, we need to let mixed handler take care of + // it. Otherwise we'll just treat it as an enter+resize + if (mSplitLayout.calculateCurrentSnapPosition() != SNAP_TO_2_50_50) { + // updated layout will get applied in startAnimation pendingResize + mSplitTransitions.setEnterTransition(transition, + request.getRemoteTransition(), + TRANSIT_SPLIT_SCREEN_OPEN_TO_SIDE, true /*resizeAnim*/); + } } else if (inFullscreen && isSplitScreenVisible()) { // If the trigger task is in fullscreen and in split, exit split and place // task on top diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS index 28be0efc38f6..9dc0ebbb8e56 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/OWNERS @@ -1,3 +1,2 @@ # WM shell sub-module TV splitscreen owner -galinap@google.com bronger@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java index 347dcff86529..a0fb62508cc1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java @@ -377,7 +377,7 @@ public class DefaultMixedHandler implements MixedTransitionHandler, return this::setRecentsTransitionDuringKeyguard; } else if (mDesktopTasksController != null // Check on the default display. Recents/gesture nav is only available there - && mDesktopTasksController.visibleTaskCount(DEFAULT_DISPLAY) > 0) { + && mDesktopTasksController.isAnyDeskActive(DEFAULT_DISPLAY)) { return this::setRecentsTransitionDuringDesktop; } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java index e9c6adec75d7..3652a1661f28 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultTransitionHandler.java @@ -67,7 +67,6 @@ import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITI import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITION_NONE; import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITION_OPEN; import static com.android.wm.shell.transition.DefaultSurfaceAnimator.buildSurfaceAnimation; -import static com.android.wm.shell.transition.TransitionAnimationHelper.edgeExtendWindow; import static com.android.wm.shell.transition.TransitionAnimationHelper.getTransitionBackgroundColorIfSet; import static com.android.wm.shell.transition.TransitionAnimationHelper.getTransitionTypeFromInfo; import static com.android.wm.shell.transition.TransitionAnimationHelper.isCoveredByOpaqueFullscreenChange; @@ -543,21 +542,9 @@ public class DefaultTransitionHandler implements Transitions.TransitionHandler { backgroundColorForTransition); if (!isTask && a.getExtensionEdges() != 0x0) { - if (com.android.graphics.libgui.flags.Flags.edgeExtensionShader()) { - startTransaction.setEdgeExtensionEffect( - change.getLeash(), a.getExtensionEdges()); - finishTransaction.setEdgeExtensionEffect(change.getLeash(), /* edge */ 0); - } else { - if (!TransitionUtil.isOpeningType(mode)) { - // Can screenshot now (before startTransaction is applied) - edgeExtendWindow(change, a, startTransaction, finishTransaction); - } else { - // Need to screenshot after startTransaction is applied otherwise - // activity may not be visible or ready yet. - postStartTransactionCallbacks - .add(t -> edgeExtendWindow(change, a, t, finishTransaction)); - } - } + startTransaction.setEdgeExtensionEffect( + change.getLeash(), a.getExtensionEdges()); + finishTransaction.setEdgeExtensionEffect(change.getLeash(), /* edge */ 0); } final Rect clipRect = TransitionUtil.isClosingType(mode) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java index e04682a4b86f..f0f1ad05008b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java @@ -16,6 +16,7 @@ package com.android.wm.shell.transition; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.view.WindowManager.TRANSIT_CHANGE; @@ -216,6 +217,17 @@ public class FocusTransitionObserver { } /** + * Gets the globally focused task ID. + */ + public int getGloballyFocusedTaskId() { + if (!enableDisplayFocusInShellTransitions() || mFocusedDisplayId == INVALID_DISPLAY) { + return INVALID_TASK_ID; + } + final RunningTaskInfo globallyFocusedTask = mFocusedTaskOnDisplay.get(mFocusedDisplayId); + return globallyFocusedTask != null ? globallyFocusedTask.taskId : INVALID_TASK_ID; + } + + /** * Checks whether the given task has focused globally on the system. * (Note {@link RunningTaskInfo#isFocused} represents per-display focus.) */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java index 7984bcedc4e5..edfb56019a60 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java @@ -26,7 +26,6 @@ import static android.view.WindowManager.TRANSIT_TO_BACK; import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.window.TransitionInfo.FLAGS_IS_NON_APP_WINDOW; import static android.window.TransitionInfo.FLAG_IS_DISPLAY; -import static android.window.TransitionInfo.FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT; import static android.window.TransitionInfo.FLAG_TRANSLUCENT; import static com.android.internal.policy.TransitionAnimation.WALLPAPER_TRANSITION_CLOSE; @@ -39,20 +38,10 @@ import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.WindowConfiguration; -import android.graphics.BitmapShader; -import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.Insets; -import android.graphics.Paint; -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.graphics.Shader; -import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManager; import android.view.animation.Animation; -import android.view.animation.Transformation; -import android.window.ScreenCapture; import android.window.TransitionInfo; import com.android.internal.R; @@ -317,129 +306,6 @@ public class TransitionAnimationHelper { } /** - * Adds edge extension surface to the given {@code change} for edge extension animation. - */ - public static void edgeExtendWindow(@NonNull TransitionInfo.Change change, - @NonNull Animation a, @NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction) { - // Do not create edge extension surface for transfer starting window change. - // The app surface could be empty thus nothing can draw on the hardware renderer, which will - // block this thread when calling Surface#unlockCanvasAndPost. - if ((change.getFlags() & FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT) != 0) { - return; - } - final Transformation transformationAtStart = new Transformation(); - a.getTransformationAt(0, transformationAtStart); - final Transformation transformationAtEnd = new Transformation(); - a.getTransformationAt(1, transformationAtEnd); - - // We want to create an extension surface that is the maximal size and the animation will - // take care of cropping any part that overflows. - final Insets maxExtensionInsets = Insets.min( - transformationAtStart.getInsets(), transformationAtEnd.getInsets()); - - final int targetSurfaceHeight = Math.max(change.getStartAbsBounds().height(), - change.getEndAbsBounds().height()); - final int targetSurfaceWidth = Math.max(change.getStartAbsBounds().width(), - change.getEndAbsBounds().width()); - if (maxExtensionInsets.left < 0) { - final Rect edgeBounds = new Rect(0, 0, 1, targetSurfaceHeight); - final Rect extensionRect = new Rect(0, 0, - -maxExtensionInsets.left, targetSurfaceHeight); - final int xPos = maxExtensionInsets.left; - final int yPos = 0; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Left Edge Extension", startTransaction, finishTransaction); - } - - if (maxExtensionInsets.top < 0) { - final Rect edgeBounds = new Rect(0, 0, targetSurfaceWidth, 1); - final Rect extensionRect = new Rect(0, 0, - targetSurfaceWidth, -maxExtensionInsets.top); - final int xPos = 0; - final int yPos = maxExtensionInsets.top; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Top Edge Extension", startTransaction, finishTransaction); - } - - if (maxExtensionInsets.right < 0) { - final Rect edgeBounds = new Rect(targetSurfaceWidth - 1, 0, - targetSurfaceWidth, targetSurfaceHeight); - final Rect extensionRect = new Rect(0, 0, - -maxExtensionInsets.right, targetSurfaceHeight); - final int xPos = targetSurfaceWidth; - final int yPos = 0; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Right Edge Extension", startTransaction, finishTransaction); - } - - if (maxExtensionInsets.bottom < 0) { - final Rect edgeBounds = new Rect(0, targetSurfaceHeight - 1, - targetSurfaceWidth, targetSurfaceHeight); - final Rect extensionRect = new Rect(0, 0, - targetSurfaceWidth, -maxExtensionInsets.bottom); - final int xPos = maxExtensionInsets.left; - final int yPos = targetSurfaceHeight; - createExtensionSurface(change.getLeash(), edgeBounds, extensionRect, xPos, yPos, - "Bottom Edge Extension", startTransaction, finishTransaction); - } - } - - /** - * Takes a screenshot of {@code surfaceToExtend}'s edge and extends it for edge extension - * animation. - */ - private static SurfaceControl createExtensionSurface(@NonNull SurfaceControl surfaceToExtend, - @NonNull Rect edgeBounds, @NonNull Rect extensionRect, int xPos, int yPos, - @NonNull String layerName, @NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction) { - final SurfaceControl edgeExtensionLayer = new SurfaceControl.Builder() - .setName(layerName) - .setParent(surfaceToExtend) - .setHidden(true) - .setCallsite("TransitionAnimationHelper#createExtensionSurface") - .setOpaque(true) - .setBufferSize(extensionRect.width(), extensionRect.height()) - .build(); - - final ScreenCapture.LayerCaptureArgs captureArgs = - new ScreenCapture.LayerCaptureArgs.Builder(surfaceToExtend) - .setSourceCrop(edgeBounds) - .setFrameScale(1) - .setPixelFormat(PixelFormat.RGBA_8888) - .setChildrenOnly(true) - .setAllowProtected(false) - .setCaptureSecureLayers(true) - .build(); - final ScreenCapture.ScreenshotHardwareBuffer edgeBuffer = - ScreenCapture.captureLayers(captureArgs); - - if (edgeBuffer == null) { - ProtoLog.e(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, - "Failed to capture edge of window."); - return null; - } - - final BitmapShader shader = new BitmapShader(edgeBuffer.asBitmap(), - Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); - final Paint paint = new Paint(); - paint.setShader(shader); - - final Surface surface = new Surface(edgeExtensionLayer); - final Canvas c = surface.lockHardwareCanvas(); - c.drawRect(extensionRect, paint); - surface.unlockCanvasAndPost(c); - surface.release(); - - startTransaction.setLayer(edgeExtensionLayer, Integer.MIN_VALUE); - startTransaction.setPosition(edgeExtensionLayer, xPos, yPos); - startTransaction.setVisibility(edgeExtensionLayer, true); - finishTransaction.remove(edgeExtensionLayer); - - return edgeExtensionLayer; - } - - /** * Returns whether there is an opaque fullscreen Change positioned in front of the given Change * in the given TransitionInfo. */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java index 49510c8060fc..5e8c1fe2aa8d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java @@ -61,6 +61,7 @@ import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.shared.annotations.ShellBackgroundThread; import com.android.wm.shell.shared.annotations.ShellMainThread; +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHostSupplier; import com.android.wm.shell.windowdecor.extension.TaskInfoKt; @@ -247,6 +248,10 @@ public class CaptionWindowDecoration extends WindowDecoration<WindowDecorLinearL relayoutParams.mOccludingCaptionElements.add(controlsElement); relayoutParams.mCaptionTopPadding = getTopPadding(relayoutParams, taskInfo.getConfiguration().windowConfiguration.getBounds(), displayInsetsState); + // Set opaque background for all freeform tasks to prevent freeform tasks below + // from being visible if freeform task window above is translucent. + // Otherwise if fluid resize is enabled, add a background to freeform tasks. + relayoutParams.mShouldSetBackground = DesktopModeStatus.shouldSetBackground(taskInfo); } @SuppressLint("MissingPermission") diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index 0d773ecf88e4..7ef1a93cbe45 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -558,6 +558,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, } else { decoration.relayout(taskInfo, taskInfo.isFocused, decoration.mExclusionRegion); } + mDesktopTilingDecorViewModel.onTaskInfoChange(taskInfo); mActivityOrientationChangeHandler.ifPresent(handler -> handler.handleActivityOrientationChange(oldTaskInfo, taskInfo)); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index 6165dbf686fd..30e5c2ae0914 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -1064,6 +1064,10 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin relayoutParams.mCornerRadius = shouldIgnoreCornerRadius ? INVALID_CORNER_RADIUS : getCornerRadius(context, relayoutParams.mLayoutResId); } + // Set opaque background for all freeform tasks to prevent freeform tasks below + // from being visible if freeform task window above is translucent. + // Otherwise if fluid resize is enabled, add a background to freeform tasks. + relayoutParams.mShouldSetBackground = DesktopModeStatus.shouldSetBackground(taskInfo); } private static int getCornerRadius(@NonNull Context context, int layoutResId) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt index ff50672953c9..ad2e23cb4028 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.kt @@ -50,6 +50,7 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.Accessibilit import androidx.core.view.isGone import com.android.window.flags.Flags import com.android.wm.shell.R +import com.android.wm.shell.bubbles.ContextUtils.isRtl import com.android.wm.shell.shared.annotations.ShellBackgroundThread import com.android.wm.shell.shared.annotations.ShellMainThread import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper @@ -60,6 +61,8 @@ import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewCo import com.android.wm.shell.windowdecor.common.DecorThemeUtil import com.android.wm.shell.windowdecor.common.WindowDecorTaskResourceLoader import com.android.wm.shell.windowdecor.common.calculateMenuPosition +import com.android.wm.shell.windowdecor.common.DrawableInsets +import com.android.wm.shell.windowdecor.common.createRippleDrawable import com.android.wm.shell.windowdecor.extension.isFullscreen import com.android.wm.shell.windowdecor.extension.isMultiWindow import com.android.wm.shell.windowdecor.extension.isPinned @@ -71,6 +74,7 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext + /** * Handle menu opened when the appropriate button is clicked on. * @@ -467,6 +471,33 @@ class HandleMenu( val rootView = LayoutInflater.from(context) .inflate(R.layout.desktop_mode_window_decor_handle_menu, null /* root */) as View + private val windowingButtonRippleRadius = context.resources + .getDimensionPixelSize(R.dimen.desktop_mode_handle_menu_windowing_action_ripple_radius) + private val windowingButtonDrawableInsets = DrawableInsets( + vertical = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base), + horizontal = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base) + ) + private val windowingButtonDrawableInsetsLeft = DrawableInsets( + vertical = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base), + horizontalLeft = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_shift), + ) + private val windowingButtonDrawableInsetsRight = DrawableInsets( + vertical = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_base), + horizontalRight = context.resources + .getDimensionPixelSize( + R.dimen.desktop_mode_handle_menu_windowing_action_ripple_inset_shift) + ) + // App Info Pill. private val appInfoPill = rootView.requireViewById<View>(R.id.app_info_pill) private val collapseMenuButton = appInfoPill.requireViewById<HandleMenuImageButton>( @@ -708,6 +739,49 @@ class HandleMenu( desktopBtn.isSelected = taskInfo.isFreeform desktopBtn.isEnabled = !taskInfo.isFreeform desktopBtn.imageTintList = style.windowingButtonColor + + val startInsets = if (context.isRtl) { + windowingButtonDrawableInsetsRight + } else { + windowingButtonDrawableInsetsLeft + } + val endInsets = if (context.isRtl) { + windowingButtonDrawableInsetsLeft + } else { + windowingButtonDrawableInsetsRight + } + + fullscreenBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = startInsets + ) + } + + splitscreenBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = windowingButtonDrawableInsets + ) + } + + floatingBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = windowingButtonDrawableInsets + ) + } + + desktopBtn.apply { + background = createRippleDrawable( + color = style.textColor, + cornerRadius = windowingButtonRippleRadius, + drawableInsets = endInsets + ) + } } private fun bindMoreActionsPill(style: MenuStyle) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java index 4002dc572897..7baef2b2dc97 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java @@ -16,7 +16,6 @@ package com.android.wm.shell.windowdecor; -import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.content.res.Configuration.DENSITY_DPI_UNDEFINED; import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsets.Type.mandatorySystemGestures; @@ -57,7 +56,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.desktopmode.DesktopModeEventLogger; -import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.windowdecor.WindowDecoration.RelayoutParams.OccludingCaptionElement; import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewHostViewContainer; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost; @@ -504,15 +502,14 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> startT.show(mTaskSurface); } - if (mTaskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM - && !DesktopModeStatus.isVeiledResizeEnabled()) { - // When fluid resize is enabled, add a background to freeform tasks - int backgroundColorInt = mTaskInfo.taskDescription.getBackgroundColor(); + if (params.mShouldSetBackground) { + final int backgroundColorInt = mTaskInfo.taskDescription != null + ? mTaskInfo.taskDescription.getBackgroundColor() : Color.BLACK; mTmpColor[0] = (float) Color.red(backgroundColorInt) / 255.f; mTmpColor[1] = (float) Color.green(backgroundColorInt) / 255.f; mTmpColor[2] = (float) Color.blue(backgroundColorInt) / 255.f; startT.setColor(mTaskSurface, mTmpColor); - } else if (!DesktopModeStatus.isVeiledResizeEnabled()) { + } else { startT.unsetColor(mTaskSurface); } @@ -833,6 +830,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> boolean mSetTaskVisibilityPositionAndCrop; boolean mHasGlobalFocus; boolean mShouldSetAppBounds; + boolean mShouldSetBackground; void reset() { mLayoutResId = Resources.ID_NULL; @@ -857,6 +855,7 @@ public abstract class WindowDecoration<T extends View & TaskFocusStateConsumer> mAsyncViewHost = false; mHasGlobalFocus = false; mShouldSetAppBounds = false; + mShouldSetBackground = false; } boolean hasInputFeatureSpy() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ButtonBackgroundDrawableUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ButtonBackgroundDrawableUtils.kt new file mode 100644 index 000000000000..e18239d3eb70 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/common/ButtonBackgroundDrawableUtils.kt @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wm.shell.windowdecor.common + +import android.annotation.ColorInt +import android.graphics.Color +import android.graphics.drawable.LayerDrawable +import android.graphics.drawable.RippleDrawable +import android.graphics.drawable.ShapeDrawable +import android.graphics.drawable.shapes.RoundRectShape +import com.android.wm.shell.windowdecor.common.OPACITY_11 +import com.android.wm.shell.windowdecor.common.OPACITY_15 +import android.content.res.ColorStateList + +/** + * Represents drawable insets, specifying the number of pixels to inset a drawable from its bounds. + */ +data class DrawableInsets(val l: Int, val t: Int, val r: Int, val b: Int) { + constructor(vertical: Int = 0, horizontal: Int = 0) : + this(horizontal, vertical, horizontal, vertical) + constructor(vertical: Int = 0, horizontalLeft: Int = 0, horizontalRight: Int = 0) : + this(horizontalLeft, vertical, horizontalRight, vertical) +} + +/** + * Replaces the alpha component of a color with the given alpha value. + */ +@ColorInt +fun replaceColorAlpha(@ColorInt color: Int, alpha: Int): Int { + return Color.argb( + alpha, + Color.red(color), + Color.green(color), + Color.blue(color) + ) +} + +/** + * Creates a RippleDrawable with specified color, corner radius, and insets. + */ +fun createRippleDrawable( + @ColorInt color: Int, + cornerRadius: Int, + drawableInsets: DrawableInsets, +): RippleDrawable { + return RippleDrawable( + ColorStateList( + arrayOf( + intArrayOf(android.R.attr.state_hovered), + intArrayOf(android.R.attr.state_pressed), + intArrayOf(), + ), + intArrayOf( + replaceColorAlpha(color, OPACITY_11), + replaceColorAlpha(color, OPACITY_15), + Color.TRANSPARENT, + ) + ), + null /* content */, + LayerDrawable(arrayOf( + ShapeDrawable().apply { + shape = RoundRectShape( + FloatArray(8) { cornerRadius.toFloat() }, + null /* inset */, + null /* innerRadii */ + ) + paint.color = Color.WHITE + } + )).apply { + require(numberOfLayers == 1) { "Must only contain one layer" } + setLayerInset(0 /* index */, + drawableInsets.l, drawableInsets.t, drawableInsets.r, drawableInsets.b) + } + ) +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt index ee5d0e80d90c..e9426d2f67ad 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDecorViewModel.kt @@ -137,6 +137,10 @@ class DesktopTilingDecorViewModel( } } + fun onTaskInfoChange(taskInfo: RunningTaskInfo) { + tilingTransitionHandlerByDisplayId.get(taskInfo.displayId)?.onTaskInfoChange(taskInfo) + } + override fun onDisplayChange( displayId: Int, fromRotation: Int, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt index fbbf1a5db72c..cb45c1732476 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManager.kt @@ -57,6 +57,7 @@ class DesktopTilingDividerWindowManager( private val transactionSupplier: Supplier<SurfaceControl.Transaction>, private var dividerBounds: Rect, private val displayContext: Context, + private val isDarkMode: Boolean, ) : WindowlessWindowManager(config, leash, null), DividerMoveCallback, View.OnLayoutChangeListener { private lateinit var viewHost: SurfaceControlViewHost private var tilingDividerView: TilingDividerView? = null @@ -153,7 +154,7 @@ class DesktopTilingDividerWindowManager( surfaceControlViewHost.setView(dividerView, lp) val tmpDividerBounds = Rect() getDividerBounds(tmpDividerBounds) - dividerView.setup(this, tmpDividerBounds, handleRegionSize) + dividerView.setup(this, tmpDividerBounds, handleRegionSize, isDarkMode) t.setRelativeLayer(leash, relativeLeash, 1) .setPosition( leash, @@ -172,6 +173,11 @@ class DesktopTilingDividerWindowManager( updateTouchRegion() } + /** Changes divider colour if dark/light mode is toggled. */ + fun onUiModeChange(isDarkMode: Boolean) { + tilingDividerView?.onUiModeChange(isDarkMode) + } + /** Hides the divider bar. */ fun hideDividerBar() { if (!dividerShown) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt index 983332565bd9..a45df045041f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingWindowDecoration.kt @@ -103,6 +103,7 @@ class DesktopTilingWindowDecoration( @VisibleForTesting var desktopTilingDividerWindowManager: DesktopTilingDividerWindowManager? = null private lateinit var dividerBounds: Rect + private var isDarkMode = false private var isResizing = false private var isTilingFocused = false @@ -129,6 +130,7 @@ class DesktopTilingWindowDecoration( val isTiled = destinationBounds != taskInfo.configuration.windowConfiguration.bounds initTilingApps(resizeMetadata, position, taskInfo) + isDarkMode = isTaskInDarkMode(taskInfo) // Observe drag resizing to break tiling if a task is drag resized. desktopModeWindowDecoration.addDragResizeListener(this) @@ -232,6 +234,7 @@ class DesktopTilingWindowDecoration( transactionSupplier, dividerBounds, displayContext, + isDarkMode, ) } // a leash to present the divider on top of, without re-parenting. @@ -356,6 +359,17 @@ class DesktopTilingWindowDecoration( transitions.startTransition(TRANSIT_CHANGE, wct, this) } + fun onTaskInfoChange(taskInfo: RunningTaskInfo) { + val isCurrentTaskInDarkMode = isTaskInDarkMode(taskInfo) + if (isCurrentTaskInDarkMode == isDarkMode || !isTilingManagerInitialised) return + isDarkMode = isCurrentTaskInDarkMode + desktopTilingDividerWindowManager?.onUiModeChange(isDarkMode) + } + + fun isTaskInDarkMode(taskInfo: RunningTaskInfo): Boolean = + (taskInfo.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) == + Configuration.UI_MODE_NIGHT_YES + override fun startAnimation( transition: IBinder, info: TransitionInfo, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt index b8e3b0fdb8d8..54dcd2d082dc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/tiling/TilingDividerView.kt @@ -16,6 +16,7 @@ package com.android.wm.shell.windowdecor.tiling import android.content.Context +import android.content.res.Configuration import android.graphics.Canvas import android.graphics.Paint import android.graphics.Rect @@ -85,11 +86,14 @@ class TilingDividerView : FrameLayout, View.OnTouchListener, DragDetector.Motion dividerMoveCallback: DividerMoveCallback, dividerBounds: Rect, handleRegionSize: Size, + isDarkMode: Boolean, ) { callback = dividerMoveCallback this.dividerBounds.set(dividerBounds) handle.setIsLeftRightSplit(true) + handle.setup(/* isSplitScreen= */ false, isDarkMode) corners.setIsLeftRightSplit(true) + corners.setup(/* isSplitScreen= */ false, isDarkMode) handleRegionHeight = handleRegionSize.height handleRegionWidth = handleRegionSize.width cornersRadius = @@ -103,6 +107,18 @@ class TilingDividerView : FrameLayout, View.OnTouchListener, DragDetector.Motion ) } + fun onUiModeChange(isDarkMode: Boolean) { + handle.onUiModeChange(isDarkMode) + corners.onUiModeChange(isDarkMode) + paint.color = + if (isDarkMode) { + resources.getColor(R.color.tiling_divider_background_dark, null /* theme */) + } else { + resources.getColor(R.color.tiling_divider_background_light, null /* theme */) + } + invalidate() + } + override fun onFinishInflate() { super.onFinishInflate() dividerBar = requireViewById(R.id.divider_bar) @@ -112,7 +128,15 @@ class TilingDividerView : FrameLayout, View.OnTouchListener, DragDetector.Motion resources.getDimensionPixelSize(R.dimen.docked_stack_divider_lift_elevation) setOnTouchListener(this) setWillNotDraw(false) - paint.color = resources.getColor(R.color.split_divider_background, null) + paint.color = + if ( + context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == + Configuration.UI_MODE_NIGHT_YES + ) { + resources.getColor(R.color.tiling_divider_background_dark, /* theme= */null) + } else { + resources.getColor(R.color.tiling_divider_background_light, /* theme= */ null) + } paint.isAntiAlias = true paint.style = Paint.Style.FILL } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt index 870c894fe885..eb8b617df4ce 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt @@ -61,6 +61,8 @@ import com.android.wm.shell.windowdecor.common.OPACITY_15 import com.android.wm.shell.windowdecor.common.OPACITY_55 import com.android.wm.shell.windowdecor.common.OPACITY_65 import com.android.wm.shell.windowdecor.common.Theme +import com.android.wm.shell.windowdecor.common.DrawableInsets +import com.android.wm.shell.windowdecor.common.createRippleDrawable import com.android.wm.shell.windowdecor.extension.isLightCaptionBarAppearance import com.android.wm.shell.windowdecor.extension.isTransparentCaptionBarAppearance @@ -635,61 +637,10 @@ class AppHeaderViewHolder( ) } - @ColorInt - private fun replaceColorAlpha(@ColorInt color: Int, alpha: Int): Int { - return Color.argb( - alpha, - Color.red(color), - Color.green(color), - Color.blue(color) - ) - } - - private fun createRippleDrawable( - @ColorInt color: Int, - cornerRadius: Int, - drawableInsets: DrawableInsets, - ): RippleDrawable { - return RippleDrawable( - ColorStateList( - arrayOf( - intArrayOf(android.R.attr.state_hovered), - intArrayOf(android.R.attr.state_pressed), - intArrayOf(), - ), - intArrayOf( - replaceColorAlpha(color, OPACITY_11), - replaceColorAlpha(color, OPACITY_15), - Color.TRANSPARENT - ) - ), - null /* content */, - LayerDrawable(arrayOf( - ShapeDrawable().apply { - shape = RoundRectShape( - FloatArray(8) { cornerRadius.toFloat() }, - null /* inset */, - null /* innerRadii */ - ) - paint.color = Color.WHITE - } - )).apply { - require(numberOfLayers == 1) { "Must only contain one layer" } - setLayerInset(0 /* index */, - drawableInsets.l, drawableInsets.t, drawableInsets.r, drawableInsets.b) - } - ) - } - private enum class SizeToggleDirection { MAXIMIZE, RESTORE } - private data class DrawableInsets(val l: Int, val t: Int, val r: Int, val b: Int) { - constructor(vertical: Int = 0, horizontal: Int = 0) : - this(horizontal, vertical, horizontal, vertical) - } - private data class Header( val type: Type, val appTheme: Theme, diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt index 28008393da84..d82c06691e46 100644 --- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt +++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/ExitDesktopWithDragToTopDragZone.kt @@ -18,9 +18,9 @@ package com.android.wm.shell.scenarios import android.tools.NavBar import android.tools.Rotation -import com.android.internal.R import com.android.window.flags.Flags import com.android.wm.shell.Utils +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus import org.junit.After import org.junit.Assume import org.junit.Before @@ -42,8 +42,8 @@ constructor( fun setup() { Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet) // Skip the test when the drag-to-maximize is enabled on this device. - Assume.assumeFalse(Flags.enableDragToMaximize() && - instrumentation.context.resources.getBoolean(R.bool.config_dragToMaximizeInDesktopMode)) + Assume.assumeFalse( + DesktopModeStatus.shouldMaximizeWhenDragToTopEdge(instrumentation.context)) tapl.setEnableRotation(true) tapl.setExpectedRotation(rotation.value) testApp.enterDesktopMode(wmHelper, device) diff --git a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt index 60a0fb547909..675b63cf56bb 100644 --- a/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt +++ b/libs/WindowManager/Shell/tests/e2e/desktopmode/scenarios/src/com/android/wm/shell/scenarios/MaximizeAppWindowWithDragToTopDragZone.kt @@ -23,12 +23,12 @@ import android.tools.flicker.rules.ChangeDisplayOrientationRule import android.tools.traces.parsers.WindowManagerStateHelper import androidx.test.platform.app.InstrumentationRegistry import androidx.test.uiautomator.UiDevice -import com.android.internal.R import com.android.launcher3.tapl.LauncherInstrumentation import com.android.server.wm.flicker.helpers.DesktopModeAppHelper import com.android.server.wm.flicker.helpers.SimpleAppHelper import com.android.window.flags.Flags import com.android.wm.shell.Utils +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus import org.junit.After import org.junit.Assume import org.junit.Before @@ -54,8 +54,8 @@ constructor(private val rotation: Rotation = Rotation.ROTATION_0) { fun setup() { Assume.assumeTrue(Flags.enableDesktopWindowingMode() && tapl.isTablet) // Skip the test when the drag-to-maximize is disabled on this device. - Assume.assumeTrue(Flags.enableDragToMaximize() && - instrumentation.context.resources.getBoolean(R.bool.config_dragToMaximizeInDesktopMode)) + Assume.assumeTrue( + DesktopModeStatus.shouldMaximizeWhenDragToTopEdge(instrumentation.context)) tapl.setEnableRotation(true) tapl.setExpectedRotation(rotation.value) ChangeDisplayOrientationRule.setRotation(rotation) diff --git a/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt b/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt index 7f48499b0558..e39fa3a71b03 100644 --- a/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt +++ b/libs/WindowManager/Shell/tests/e2e/splitscreen/flicker-legacy/src/com/android/wm/shell/flicker/splitscreen/CopyContentInSplit.kt @@ -22,7 +22,6 @@ import android.tools.flicker.legacy.FlickerBuilder import android.tools.flicker.legacy.LegacyFlickerTest import android.tools.flicker.legacy.LegacyFlickerTestFactory import android.tools.traces.component.ComponentNameMatcher -import android.tools.traces.component.EdgeExtensionComponentMatcher import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.wm.shell.flicker.splitscreen.benchmark.CopyContentInSplitBenchmark @@ -99,7 +98,6 @@ class CopyContentInSplit(override val flicker: LegacyFlickerTest) : ComponentNameMatcher.SPLASH_SCREEN, ComponentNameMatcher.SNAPSHOT, ComponentNameMatcher.IME_SNAPSHOT, - EdgeExtensionComponentMatcher(), magnifierLayer, popupWindowLayer ) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java index 75ad621e1cad..e85d30fbaebd 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/pip/PipDesktopStateTest.java @@ -124,7 +124,7 @@ public class PipDesktopStateTest { @Test public void isPipEnteringInDesktopMode_visibleCountZero_minimizedPipPresent_returnsTrue() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(true); assertTrue(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo)); @@ -132,7 +132,7 @@ public class PipDesktopStateTest { @Test public void isPipEnteringInDesktopMode_visibleCountNonzero_minimizedPipAbsent_returnsTrue() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(false); assertTrue(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo)); @@ -140,7 +140,7 @@ public class PipDesktopStateTest { @Test public void isPipEnteringInDesktopMode_visibleCountZero_minimizedPipAbsent_returnsFalse() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopRepository.isMinimizedPipPresentInDisplay(DISPLAY_ID)).thenReturn(false); assertFalse(mPipDesktopState.isPipEnteringInDesktopMode(mMockTaskInfo)); @@ -148,7 +148,7 @@ public class PipDesktopStateTest { @Test public void shouldExitPipExitDesktopMode_visibleCountZero_wallpaperInvisible_returnsFalse() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible( DISPLAY_ID)).thenReturn(false); @@ -157,7 +157,7 @@ public class PipDesktopStateTest { @Test public void shouldExitPipExitDesktopMode_visibleCountNonzero_wallpaperVisible_returnsFalse() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible( DISPLAY_ID)).thenReturn(true); @@ -166,7 +166,7 @@ public class PipDesktopStateTest { @Test public void shouldExitPipExitDesktopMode_visibleCountZero_wallpaperVisible_returnsTrue() { - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(false); when(mMockDesktopWallpaperActivityTokenProvider.isWallpaperActivityVisible( DISPLAY_ID)).thenReturn(true); @@ -176,7 +176,7 @@ public class PipDesktopStateTest { @Test public void getOutPipWindowingMode_exitToDesktop_displayFreeform_returnsUndefined() { // Set visible task count to 1 so isPipExitingToDesktopMode returns true - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); setDisplayWindowingMode(WINDOWING_MODE_FREEFORM); assertEquals(WINDOWING_MODE_UNDEFINED, mPipDesktopState.getOutPipWindowingMode()); @@ -185,7 +185,7 @@ public class PipDesktopStateTest { @Test public void getOutPipWindowingMode_exitToDesktop_displayFullscreen_returnsFreeform() { // Set visible task count to 1 so isPipExitingToDesktopMode returns true - when(mMockDesktopRepository.getVisibleTaskCount(DISPLAY_ID)).thenReturn(1); + when(mMockDesktopRepository.isAnyDeskActive(DISPLAY_ID)).thenReturn(true); setDisplayWindowingMode(WINDOWING_MODE_FULLSCREEN); assertEquals(WINDOWING_MODE_FREEFORM, mPipDesktopState.getOutPipWindowingMode()); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java index 2264adec9a19..598a101b8bcd 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/CompatUIControllerTest.java @@ -67,8 +67,6 @@ import com.android.wm.shell.transition.Transitions; import dagger.Lazy; -import java.util.Optional; - import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -78,6 +76,8 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Optional; + /** * Tests for {@link CompatUIController}. * @@ -707,13 +707,13 @@ public class CompatUIControllerTest extends ShellTestCase { @EnableFlags(Flags.FLAG_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE) public void testUpdateActiveTaskInfo_removeAllComponentWhenInDesktopModeFlagEnabled() { TaskInfo taskInfo = createTaskInfo(DISPLAY_ID, TASK_ID, /* hasSizeCompat= */ true); - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(false); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); verify(mController, never()).removeLayouts(taskInfo.taskId); - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(2); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(true); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); @@ -724,14 +724,14 @@ public class CompatUIControllerTest extends ShellTestCase { @RequiresFlagsDisabled(Flags.FLAG_APP_COMPAT_UI_FRAMEWORK) @DisableFlags(Flags.FLAG_SKIP_COMPAT_UI_EDUCATION_IN_DESKTOP_MODE) public void testUpdateActiveTaskInfo_removeAllComponentWhenInDesktopModeFlagDisabled() { - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(0); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(false); TaskInfo taskInfo = createTaskInfo(DISPLAY_ID, TASK_ID, /* hasSizeCompat= */ true); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); verify(mController, never()).removeLayouts(taskInfo.taskId); - when(mDesktopUserRepositories.getCurrent().getVisibleTaskCount(DISPLAY_ID)).thenReturn(2); + when(mDesktopUserRepositories.getCurrent().isAnyDeskActive(DISPLAY_ID)).thenReturn(true); mController.onCompatInfoChanged(new CompatUIInfo(taskInfo, mMockTaskListener)); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt index 0ff7230f6e0c..d054de4d6fc1 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayModeControllerTest.kt @@ -22,6 +22,8 @@ import android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.content.ContentResolver import android.os.Binder +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags import android.provider.Settings import android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS import android.testing.AndroidTestingRunner @@ -32,6 +34,7 @@ import android.window.DisplayAreaInfo import android.window.WindowContainerTransaction import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.never +import com.android.window.flags.Flags import com.android.wm.shell.MockToken import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTaskOrganizer @@ -101,7 +104,7 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { private fun testDisplayWindowingModeSwitch( defaultWindowingMode: Int, extendedDisplayEnabled: Boolean, - expectTransition: Boolean, + expectToSwitch: Boolean, ) { defaultTDA.configuration.windowConfiguration.windowingMode = defaultWindowingMode whenever(mockWindowManager.getWindowingMode(anyInt())).thenReturn(defaultWindowingMode) @@ -113,10 +116,14 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { settingsSession.use { connectExternalDisplay() - defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM + if (expectToSwitch) { + // Assumes [connectExternalDisplay] properly triggered the switching transition. + // Will verify the transition later along with [disconnectExternalDisplay]. + defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM + } disconnectExternalDisplay() - if (expectTransition) { + if (expectToSwitch) { val arg = argumentCaptor<WindowContainerTransaction>() verify(transitions, times(2)) .startTransition(eq(TRANSIT_CHANGE), arg.capture(), isNull()) @@ -135,33 +142,47 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { } @Test + @DisableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) + fun displayWindowingModeSwitchOnDisplayConnected_fullscreenDisplay_flagDisabled() { + testDisplayWindowingModeSwitch( + defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, + extendedDisplayEnabled = true, + expectToSwitch = false, + ) + } + + @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitchOnDisplayConnected_extendedDisplayDisabled() { testDisplayWindowingModeSwitch( defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, extendedDisplayEnabled = false, - expectTransition = false, + expectToSwitch = false, ) } @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitchOnDisplayConnected_fullscreenDisplay() { testDisplayWindowingModeSwitch( defaultWindowingMode = WINDOWING_MODE_FULLSCREEN, extendedDisplayEnabled = true, - expectTransition = true, + expectToSwitch = true, ) } @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitchOnDisplayConnected_freeformDisplay() { testDisplayWindowingModeSwitch( defaultWindowingMode = WINDOWING_MODE_FREEFORM, extendedDisplayEnabled = true, - expectTransition = false, + expectToSwitch = false, ) } @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitch_existingTasksOnConnected() { defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FULLSCREEN whenever(mockWindowManager.getWindowingMode(anyInt())).thenReturn(WINDOWING_MODE_FULLSCREEN) @@ -180,6 +201,7 @@ class DesktopDisplayModeControllerTest : ShellTestCase() { } @Test + @EnableFlags(Flags.FLAG_ENABLE_DISPLAY_WINDOWING_MODE_SWITCHING) fun displayWindowingModeSwitch_existingTasksOnDisconnected() { defaultTDA.configuration.windowConfiguration.windowingMode = WINDOWING_MODE_FREEFORM whenever(mockWindowManager.getWindowingMode(anyInt())).thenAnswer { diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt index ac1deec53bf6..d5c84bafbd81 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt @@ -145,6 +145,7 @@ import com.android.wm.shell.splitscreen.SplitScreenController import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit +import com.android.wm.shell.transition.FocusTransitionObserver import com.android.wm.shell.transition.OneShotRemoteHandler import com.android.wm.shell.transition.TestRemoteTransition import com.android.wm.shell.transition.Transitions @@ -239,6 +240,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Mock private lateinit var taskbarDesktopTaskListener: TaskbarDesktopTaskListener @Mock private lateinit var freeformTaskTransitionStarter: FreeformTaskTransitionStarter @Mock private lateinit var mockHandler: Handler + @Mock private lateinit var focusTransitionObserver: FocusTransitionObserver @Mock private lateinit var desktopModeEventLogger: DesktopModeEventLogger @Mock private lateinit var desktopModeUiEventLogger: DesktopModeUiEventLogger @Mock lateinit var persistentRepository: DesktopPersistentRepository @@ -261,6 +263,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Mock private lateinit var desksTransitionsObserver: DesksTransitionObserver @Mock private lateinit var packageManager: PackageManager @Mock private lateinit var mockDisplayContext: Context + @Mock private lateinit var dragToDisplayTransitionHandler: DragToDisplayTransitionHandler private lateinit var controller: DesktopTasksController private lateinit var shellInit: ShellInit @@ -422,6 +425,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() recentTasksController, mockInteractionJankMonitor, mockHandler, + focusTransitionObserver, desktopModeEventLogger, desktopModeUiEventLogger, desktopWallpaperActivityTokenProvider, @@ -431,6 +435,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() desksTransitionsObserver, userProfileContexts, desktopModeCompatPolicy, + dragToDisplayTransitionHandler, ) @After @@ -1062,34 +1067,40 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - fun visibleTaskCount_noTasks_returnsZero() { - assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(0) + fun isAnyDeskActive_noTasks_returnsFalse() { + assertThat(controller.isAnyDeskActive(DEFAULT_DISPLAY)).isFalse() } @Test - fun visibleTaskCount_twoTasks_bothVisible_returnsTwo() { + fun isAnyDeskActive_twoTasks_bothVisible_returnsTrue() { setUpHomeTask() + setUpFreeformTask().also(::markTaskVisible) setUpFreeformTask().also(::markTaskVisible) - assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(2) + + assertThat(controller.isAnyDeskActive(DEFAULT_DISPLAY)).isTrue() } @Test - fun visibleTaskCount_twoTasks_oneVisible_returnsOne() { + fun isInDesktop_twoTasks_oneVisible_returnsTrue() { setUpHomeTask() + setUpFreeformTask().also(::markTaskVisible) setUpFreeformTask().also(::markTaskHidden) - assertThat(controller.visibleTaskCount(DEFAULT_DISPLAY)).isEqualTo(1) + + assertThat(controller.isAnyDeskActive(DEFAULT_DISPLAY)).isTrue() } @Test - fun visibleTaskCount_twoTasksVisibleOnDifferentDisplays_returnsOne() { + fun isAnyDeskActive_twoTasksVisibleOnDifferentDisplays_returnsTrue() { taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY) taskRepository.setActiveDesk(displayId = SECOND_DISPLAY, deskId = SECOND_DISPLAY) setUpHomeTask() + setUpFreeformTask(DEFAULT_DISPLAY).also(::markTaskVisible) setUpFreeformTask(SECOND_DISPLAY).also(::markTaskVisible) - assertThat(controller.visibleTaskCount(SECOND_DISPLAY)).isEqualTo(1) + + assertThat(controller.isAnyDeskActive(SECOND_DISPLAY)).isTrue() } @Test @@ -1605,7 +1616,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY) fun moveTaskToDesktop_desktopWallpaperDisabled_nonRunningTask_launchesInFreeform() { - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task) @@ -1620,7 +1631,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY) fun moveTaskToDesktop_desktopWallpaperEnabled_nonRunningTask_launchesInFreeform() { whenever(desktopWallpaperActivityTokenProvider.getToken()).thenReturn(null) - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task) @@ -1792,7 +1803,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() whenever(transitions.startTransition(anyInt(), any(), transitionHandlerArgCaptor.capture())) .thenReturn(Binder()) - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever(recentTasksController.findTaskInBackground(anyInt())).thenReturn(task) controller.moveTaskToDefaultDeskAndActivate( @@ -1807,6 +1818,34 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, + ) + fun moveBackgroundTaskToDesktop_nonDefaultDisplay_reordersHomeAndWallpaperOfNonDefaultDisplay() { + val homeTask = setUpHomeTask(displayId = SECOND_DISPLAY) + val wallpaperToken = MockToken().token() + whenever(desktopWallpaperActivityTokenProvider.getToken(SECOND_DISPLAY)) + .thenReturn(wallpaperToken) + val task = setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = 2, background = true) + + controller.moveTaskToDefaultDeskAndActivate( + taskId = task.taskId, + transitionSource = UNKNOWN, + remoteTransition = RemoteTransition(spy(TestRemoteTransition())), + ) + + val wct = getLatestTransition() + val homeReorderIndex = wct.indexOfReorder(homeTask, toTop = true) + val wallpaperReorderIndex = wct.indexOfReorder(wallpaperToken, toTop = true) + assertThat(homeReorderIndex).isNotEqualTo(-1) + assertThat(wallpaperReorderIndex).isNotEqualTo(-1) + // Wallpaper last, to be in front of Home. + assertThat(wallpaperReorderIndex).isGreaterThan(homeReorderIndex) + } + + @Test fun moveRunningTaskToDesktop_remoteTransition_usesOneShotHandler() { val transitionHandlerArgCaptor = argumentCaptor<TransitionHandler>() whenever(transitions.startTransition(anyInt(), any(), transitionHandlerArgCaptor.capture())) @@ -2069,6 +2108,21 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun moveToFullscreen_fromDeskWithMultipleTasks_deactivatesDesk() { + val deskId = 1 + taskRepository.addDesk(displayId = DEFAULT_DISPLAY, deskId = deskId) + taskRepository.setActiveDesk(displayId = DEFAULT_DISPLAY, deskId = deskId) + val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = deskId) + val task2 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = deskId) + + controller.moveToFullscreen(task1.taskId, transitionSource = UNKNOWN) + + val wct = getLatestExitDesktopWct() + verify(desksOrganizer).deactivateDesk(wct, deskId = deskId) + } + + @Test fun moveToFullscreen_tdaFullscreen_windowingModeSetToUndefined() { val task = setUpFreeformTask() val tda = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY)!! @@ -2278,7 +2332,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + @DisableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP, + ) fun moveToFullscreen_multipleVisibleNonMinimizedTasks_doesNotRemoveWallpaperActivity() { val homeTask = setUpHomeTask() val task1 = setUpFreeformTask() @@ -2305,29 +2362,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) - fun moveToFullscreen_multipleVisibleNonMinimizedTasks_doesNotRemoveWallpaperActivity_multiDesksEnabled() { - val homeTask = setUpHomeTask() - val task1 = setUpFreeformTask() - // Setup task2 - setUpFreeformTask() - - val tdaInfo = rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(DEFAULT_DISPLAY) - assertNotNull(tdaInfo).configuration.windowConfiguration.windowingMode = - WINDOWING_MODE_FULLSCREEN - - controller.moveToFullscreen(task1.taskId, transitionSource = UNKNOWN) - - val wct = getLatestExitDesktopWct() - val task1Change = assertNotNull(wct.changes[task1.token.asBinder()]) - assertThat(task1Change.windowingMode).isEqualTo(WINDOWING_MODE_UNDEFINED) - verify(desktopModeEnterExitTransitionListener) - .onExitDesktopModeTransitionStarted(FULLSCREEN_ANIMATION_DURATION) - // Does not remove wallpaper activity, as desktop still has a visible desktop task - wct.assertWithoutHop(ReorderPredicate(wallpaperToken, toTop = false)) - } - - @Test fun moveToFullscreen_nonExistentTask_doesNothing() { controller.moveToFullscreen(999, transitionSource = UNKNOWN) verifyExitDesktopWCTNotExecuted() @@ -2462,7 +2496,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun moveTaskToFront_backgroundTask_launchesTask() { - val task = createTaskInfo(1) + val task = createRecentTaskInfo(1) whenever(shellTaskOrganizer.getRunningTaskInfo(anyInt())).thenReturn(null) whenever( desktopMixedTransitionHandler.startLaunchTransition( @@ -2484,7 +2518,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test fun moveTaskToFront_backgroundTaskBringsTasksOverLimit_minimizesBackTask() { val freeformTasks = (1..MAX_TASK_LIMIT).map { _ -> setUpFreeformTask() } - val task = createTaskInfo(1001) + val task = createRecentTaskInfo(1001) whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null) whenever( desktopMixedTransitionHandler.startLaunchTransition( @@ -2780,6 +2814,73 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun moveToNextDisplay_toDesktopInOtherDisplay_bringsExistingTasksToFront() { + val transition = Binder() + val sourceDeskId = 0 + val targetDeskId = 2 + taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = targetDeskId) + taskRepository.setDeskInactive(deskId = targetDeskId) + // Set up two display ids + whenever(rootTaskDisplayAreaOrganizer.displayIds) + .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY)) + // Create a mock for the target display area: second display + val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0) + whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY)) + .thenReturn(secondDisplayArea) + whenever(transitions.startTransition(eq(TRANSIT_CHANGE), any(), anyOrNull())) + .thenReturn(transition) + val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = sourceDeskId) + val task2 = setUpFreeformTask(displayId = SECOND_DISPLAY, deskId = targetDeskId) + + controller.moveToNextDisplay(task1.taskId) + + // Existing desktop task in the target display is moved to front. + val wct = getLatestTransition() + wct.assertReorder(task2.token, /* toTop= */ true) + } + + @Test + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_PER_DISPLAY_DESKTOP_WALLPAPER_ACTIVITY, + Flags.FLAG_ENABLE_DESKTOP_WALLPAPER_ACTIVITY_FOR_SYSTEM_USER, + ) + @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + fun moveToNextDisplay_toDesktopInOtherDisplay_movesHomeAndWallpaperToFront() { + val homeTask = setUpHomeTask(displayId = SECOND_DISPLAY) + whenever(desktopWallpaperActivityTokenProvider.getToken(SECOND_DISPLAY)) + .thenReturn(wallpaperToken) + val transition = Binder() + val sourceDeskId = 0 + val targetDeskId = 2 + taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = targetDeskId) + taskRepository.setDeskInactive(deskId = targetDeskId) + // Set up two display ids + whenever(rootTaskDisplayAreaOrganizer.displayIds) + .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY)) + // Create a mock for the target display area: second display + val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0) + whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY)) + .thenReturn(secondDisplayArea) + whenever(transitions.startTransition(eq(TRANSIT_CHANGE), any(), anyOrNull())) + .thenReturn(transition) + val task1 = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = sourceDeskId) + + controller.moveToNextDisplay(task1.taskId) + + // Home / Wallpaper should be moved to front as the background of desktop tasks, otherwise + // fullscreen (non-desktop) tasks could remain visible. + val wct = getLatestTransition() + val homeReorderIndex = wct.indexOfReorder(homeTask, toTop = true) + val wallpaperReorderIndex = wct.indexOfReorder(wallpaperToken, toTop = true) + assertThat(homeReorderIndex).isNotEqualTo(-1) + assertThat(wallpaperReorderIndex).isNotEqualTo(-1) + // Wallpaper last, to be in front of Home. + assertThat(wallpaperReorderIndex).isGreaterThan(homeReorderIndex) + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveToNextDisplay_toDeskInOtherDisplay_movesToDeskAndActivates() { val transition = Binder() @@ -2853,6 +2954,35 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + fun moveToNextDisplay_movingToDesktop_sendsTaskbarRoundingUpdate() { + val transition = Binder() + val sourceDeskId = 1 + val targetDeskId = 2 + taskRepository.addDesk(displayId = SECOND_DISPLAY, deskId = targetDeskId) + taskRepository.setDeskInactive(deskId = targetDeskId) + // Set up two display ids + whenever(rootTaskDisplayAreaOrganizer.displayIds) + .thenReturn(intArrayOf(DEFAULT_DISPLAY, SECOND_DISPLAY)) + // Create a mock for the target display area: second display + val secondDisplayArea = DisplayAreaInfo(MockToken().token(), SECOND_DISPLAY, 0) + whenever(rootTaskDisplayAreaOrganizer.getDisplayAreaInfo(SECOND_DISPLAY)) + .thenReturn(secondDisplayArea) + whenever(transitions.startTransition(eq(TRANSIT_CHANGE), any(), anyOrNull())) + .thenReturn(transition) + + val task = setUpFreeformTask(displayId = DEFAULT_DISPLAY, deskId = sourceDeskId) + taskRepository.addTaskToDesk( + displayId = DEFAULT_DISPLAY, + deskId = sourceDeskId, + taskId = task.taskId, + isVisible = true, + ) + controller.moveToNextDisplay(task.taskId) + + verify(taskbarDesktopTaskListener).onTaskbarCornerRoundingUpdate(anyBoolean()) + } + + @Test fun getTaskWindowingMode() { val fullscreenTask = setUpFullscreenTask() val freeformTask = setUpFreeformTask() @@ -4455,7 +4585,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test - @DisableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) + @DisableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP, + ) fun moveFocusedTaskToFullscreen_multipleVisibleTasks_doesNotRemoveWallpaperActivity() { val homeTask = setUpHomeTask() val task1 = setUpFreeformTask() @@ -4480,27 +4613,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() @Test @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) - fun moveFocusedTaskToFullscreen_multipleVisibleTasks_doesNotRemoveWallpaperActivity_multiDesksEnabled() { - val homeTask = setUpHomeTask() - val task1 = setUpFreeformTask() - val task2 = setUpFreeformTask() - val task3 = setUpFreeformTask() - - task1.isFocused = false - task2.isFocused = true - task3.isFocused = false - controller.enterFullscreen(DEFAULT_DISPLAY, transitionSource = UNKNOWN) - - val wct = getLatestExitDesktopWct() - val taskChange = assertNotNull(wct.changes[task2.token.asBinder()]) - assertThat(taskChange.windowingMode) - .isEqualTo(WINDOWING_MODE_UNDEFINED) // inherited FULLSCREEN - // Does not remove wallpaper activity - wct.assertWithoutHop(ReorderPredicate(wallpaperToken, toTop = null)) - } - - @Test - @EnableFlags(Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND) fun moveFocusedTaskToFullscreen_multipleVisibleTasks_fullscreenOverHome_multiDesksEnabled() { val homeTask = setUpHomeTask() val task1 = setUpFreeformTask() @@ -5031,7 +5143,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() Mockito.argThat { wct -> return@argThat wct.hierarchyOps[0].isReparent }, - eq(null), + eq(dragToDisplayTransitionHandler), ) } @@ -5225,6 +5337,10 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() } @Test + @DisableFlags( + Flags.FLAG_ENABLE_MULTIPLE_DESKTOPS_BACKEND, + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PIP, + ) fun enterSplit_multipleVisibleNonMinimizedTasks_removesWallpaperActivity() { val task1 = setUpFreeformTask() val task2 = setUpFreeformTask() @@ -6628,7 +6744,7 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() if (background) { whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(null) whenever(recentTasksController.findTaskInBackground(task.taskId)) - .thenReturn(createTaskInfo(task.taskId)) + .thenReturn(createRecentTaskInfo(taskId = task.taskId, displayId = displayId)) } else { whenever(shellTaskOrganizer.getRunningTaskInfo(task.taskId)).thenReturn(task) } @@ -6799,6 +6915,12 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase() return arg.lastValue } + private fun getLatestTransition(): WindowContainerTransaction { + val arg = argumentCaptor<WindowContainerTransaction>() + verify(transitions).startTransition(any(), arg.capture(), anyOrNull()) + return arg.lastValue + } + private fun getLatestEnterDesktopWct(): WindowContainerTransaction { val arg = argumentCaptor<WindowContainerTransaction>() verify(enterDesktopTransitionHandler).moveToDesktop(arg.capture(), any()) @@ -7057,8 +7179,9 @@ private fun WindowContainerTransaction?.anyWindowingModeChange( } ?: false } -private fun createTaskInfo(id: Int) = +private fun createRecentTaskInfo(taskId: Int, displayId: Int = DEFAULT_DISPLAY) = RecentTaskInfo().apply { - taskId = id + this.taskId = taskId + this.displayId = displayId token = WindowContainerToken(mock(IWindowContainerToken::class.java)) } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt index dd577f402952..5b0f94f91a13 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksTransitionObserverTest.kt @@ -128,7 +128,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun backNavigation_taskMinimized() { val task = createTaskInfo(1) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) transitionObserver.onTransitionReady( transition = mock(), @@ -146,7 +146,9 @@ class DesktopTasksTransitionObserverTest { fun backNavigation_withCloseTransitionNotLastTask_taskMinimized() { val task = createTaskInfo(1) val transition = mock<IBinder>() - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(2) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) + whenever(taskRepository.isOnlyVisibleTask(task.taskId, task.displayId)).thenReturn(false) + whenever(taskRepository.hasOnlyOneVisibleTask(task.displayId)).thenReturn(false) whenever(taskRepository.isClosingTask(task.taskId)).thenReturn(false) whenever(backAnimationController.latestTriggerBackTask).thenReturn(task.taskId) @@ -173,7 +175,7 @@ class DesktopTasksTransitionObserverTest { fun backNavigation_withCloseTransitionLastTask_wallpaperActivityClosed_taskMinimized() { val task = createTaskInfo(1) val transition = mock<IBinder>() - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isClosingTask(task.taskId)).thenReturn(false) whenever(backAnimationController.latestTriggerBackTask).thenReturn(task.taskId) @@ -202,7 +204,7 @@ class DesktopTasksTransitionObserverTest { fun backNavigation_withCloseTransitionLastTask_wallpaperActivityReordered_taskMinimized() { val task = createTaskInfo(1) val transition = mock<IBinder>() - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isClosingTask(task.taskId)).thenReturn(false) whenever(backAnimationController.latestTriggerBackTask).thenReturn(task.taskId) @@ -227,7 +229,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun backNavigation_nullTaskInfo_taskNotMinimized() { val task = createTaskInfo(1) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) transitionObserver.onTransitionReady( transition = mock(), @@ -243,7 +245,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun removeTasks_onTaskFullscreenLaunchWithOpenTransition_taskRemovedFromRepo() { val task = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isActiveTask(task.taskId)).thenReturn(true) transitionObserver.onTransitionReady( @@ -261,7 +263,7 @@ class DesktopTasksTransitionObserverTest { @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION) fun removeTasks_onTaskFullscreenLaunchExitDesktopTransition_taskRemovedFromRepo() { val task = createTaskInfo(1, WINDOWING_MODE_FULLSCREEN) - whenever(taskRepository.getVisibleTaskCount(any())).thenReturn(1) + whenever(taskRepository.isAnyDeskActive(any())).thenReturn(true) whenever(taskRepository.isActiveTask(task.taskId)).thenReturn(true) transitionObserver.onTransitionReady( @@ -280,7 +282,7 @@ class DesktopTasksTransitionObserverTest { fun closeLastTask_wallpaperTokenExists_wallpaperIsRemoved() { val mockTransition = Mockito.mock(IBinder::class.java) val task = createTaskInfo(1, WINDOWING_MODE_FREEFORM) - whenever(taskRepository.getVisibleTaskCount(task.displayId)).thenReturn(0) + whenever(taskRepository.isAnyDeskActive(task.displayId)).thenReturn(false) transitionObserver.onTransitionReady( transition = mockTransition, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandlerTest.kt new file mode 100644 index 000000000000..51c302983fd0 --- /dev/null +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDisplayTransitionHandlerTest.kt @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.wm.shell.desktopmode + +import android.graphics.Point +import android.graphics.Rect +import android.os.IBinder +import android.view.SurfaceControl +import android.window.TransitionInfo +import android.window.TransitionRequestInfo +import com.android.wm.shell.transition.Transitions +import org.junit.Before +import org.junit.Test +import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever + +/** + * Test class for {@link DragToDisplayTransitionHandler} + * + * Usage: atest WMShellUnitTests:DragToDisplayTransitionHandlerTest + */ +class DragToDisplayTransitionHandlerTest { + private lateinit var handler: DragToDisplayTransitionHandler + private val mockTransition: IBinder = mock() + private val mockRequestInfo: TransitionRequestInfo = mock() + private val mockTransitionInfo: TransitionInfo = mock() + private val mockStartTransaction: SurfaceControl.Transaction = mock() + private val mockFinishTransaction: SurfaceControl.Transaction = mock() + private val mockFinishCallback: Transitions.TransitionFinishCallback = mock() + + @Before + fun setUp() { + handler = DragToDisplayTransitionHandler() + whenever(mockStartTransaction.setWindowCrop(any(), any(), any())) + .thenReturn(mockStartTransaction) + whenever(mockFinishTransaction.setWindowCrop(any(), any(), any())) + .thenReturn(mockFinishTransaction) + } + + @Test + fun handleRequest_anyRequest_returnsNull() { + val result = handler.handleRequest(mockTransition, mockRequestInfo) + assert(result == null) + } + + @Test + fun startAnimation_verifyTransformationsApplied() { + val mockChange1 = mock<TransitionInfo.Change>() + val leash1 = mock<SurfaceControl>() + val endBounds1 = Rect(0, 0, 50, 50) + val endPosition1 = Point(5, 5) + + whenever(mockChange1.leash).doReturn(leash1) + whenever(mockChange1.endAbsBounds).doReturn(endBounds1) + whenever(mockChange1.endRelOffset).doReturn(endPosition1) + + val mockChange2 = mock<TransitionInfo.Change>() + val leash2 = mock<SurfaceControl>() + val endBounds2 = Rect(100, 100, 200, 150) + val endPosition2 = Point(15, 25) + + whenever(mockChange2.leash).doReturn(leash2) + whenever(mockChange2.endAbsBounds).doReturn(endBounds2) + whenever(mockChange2.endRelOffset).doReturn(endPosition2) + + whenever(mockTransitionInfo.changes).doReturn(listOf(mockChange1, mockChange2)) + + handler.startAnimation( + mockTransition, + mockTransitionInfo, + mockStartTransaction, + mockFinishTransaction, + mockFinishCallback, + ) + + verify(mockStartTransaction).setWindowCrop(leash1, endBounds1.width(), endBounds1.height()) + verify(mockStartTransaction) + .setPosition(leash1, endPosition1.x.toFloat(), endPosition1.y.toFloat()) + verify(mockStartTransaction).setWindowCrop(leash2, endBounds2.width(), endBounds2.height()) + verify(mockStartTransaction) + .setPosition(leash2, endPosition2.x.toFloat(), endPosition2.y.toFloat()) + verify(mockStartTransaction).apply() + verify(mockFinishCallback).onTransitionFinished(null) + } +} diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt index 143d232013fc..7560945856ec 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/compatui/SystemModalsTransitionHandlerTest.kt @@ -84,7 +84,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() { spyContext = spy(mContext) // Simulate having one Desktop task so that we see Desktop Mode as active whenever(desktopUserRepositories.current).thenReturn(desktopRepository) - whenever(desktopRepository.getVisibleTaskCount(anyInt())).thenReturn(1) + whenever(desktopRepository.isAnyDeskActive(anyInt())).thenReturn(true) whenever(spyContext.packageManager).thenReturn(packageManager) whenever(componentName.packageName).thenReturn(HOME_LAUNCHER_PACKAGE_NAME) whenever(packageManager.getHomeActivities(ArrayList())).thenReturn(componentName) @@ -111,7 +111,7 @@ class SystemModalsTransitionHandlerTest : ShellTestCase() { @Test fun startAnimation_desktopNotActive_doesNotAnimate() { - whenever(desktopUserRepositories.current.getVisibleTaskCount(anyInt())).thenReturn(1) + whenever(desktopUserRepositories.current.isAnyDeskActive(anyInt())).thenReturn(true) val info = TransitionInfoBuilder(TRANSIT_OPEN) .addChange(TRANSIT_OPEN, createSystemModalTaskWithBaseActivity()) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS index 736d4cff6ce8..a7d1890a0286 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/OWNERS @@ -1,3 +1,2 @@ # WM shell sub-module TV pip owners -galinap@google.com -bronger@google.com
\ No newline at end of file +bronger@google.com diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java index 0c1952910d1a..275e4882a79d 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipSchedulerTest.java @@ -28,6 +28,7 @@ import static org.mockito.kotlin.VerificationKt.times; import static org.mockito.kotlin.VerificationKt.verify; import android.app.ActivityManager; +import android.app.PictureInPictureParams; import android.content.Context; import android.content.res.Resources; import android.graphics.Matrix; @@ -47,6 +48,7 @@ import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.pip2.PipSurfaceTransactionHelper; import com.android.wm.shell.pip2.animation.PipAlphaAnimator; import com.android.wm.shell.splitscreen.SplitScreenController; +import com.android.wm.shell.util.StubTransaction; import org.junit.Before; import org.junit.Test; @@ -107,6 +109,8 @@ public class PipSchedulerTest { mPipScheduler.setSurfaceControlTransactionFactory(mMockFactory); mPipScheduler.setPipAlphaAnimatorSupplier((context, leash, startTx, finishTx, direction) -> mMockAlphaAnimator); + final PictureInPictureParams params = new PictureInPictureParams.Builder().build(); + mPipScheduler.setPipParamsSupplier(() -> params); SurfaceControl testLeash = new SurfaceControl.Builder() .setContainerLayer() @@ -289,6 +293,28 @@ public class PipSchedulerTest { verify(mMockUpdateMovementBoundsRunnable, times(1)).run(); } + @Test + public void finishResize_nonSeamless_alphaAnimatorStarted() { + final PictureInPictureParams params = + new PictureInPictureParams.Builder().setSeamlessResizeEnabled(false).build(); + mPipScheduler.setPipParamsSupplier(() -> params); + when(mMockFactory.getTransaction()).thenReturn(new StubTransaction()); + + mPipScheduler.scheduleFinishResizePip(TEST_BOUNDS); + + verify(mMockAlphaAnimator, times(1)).start(); + } + + @Test + public void finishResize_seamless_animatorNotStarted() { + final PictureInPictureParams params = + new PictureInPictureParams.Builder().setSeamlessResizeEnabled(true).build(); + mPipScheduler.setPipParamsSupplier(() -> params); + + mPipScheduler.scheduleFinishResizePip(TEST_BOUNDS); + verify(mMockAlphaAnimator, never()).start(); + } + private void setNullPipTaskToken() { when(mMockPipTransitionState.getPipTaskToken()).thenReturn(null); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java index 1b462c30e017..333569a7206e 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip2/phone/PipTaskListenerTest.java @@ -294,6 +294,8 @@ public class PipTaskListenerTest { mPipTaskListener = new PipTaskListener(mMockContext, mMockShellTaskOrganizer, mMockPipTransitionState, mMockPipScheduler, mMockPipBoundsState, mMockPipBoundsAlgorithm, mMockShellExecutor); + clearInvocations(mMockPipScheduler); + Bundle extras = new Bundle(); extras.putBoolean(ANIMATING_ASPECT_RATIO_CHANGE, false); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt index 4082ffd4ac0a..fb62ba75e056 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt @@ -16,6 +16,7 @@ package com.android.wm.shell.shared.desktopmode +import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM import android.content.Context import android.content.res.Resources import android.platform.test.annotations.DisableFlags @@ -27,6 +28,7 @@ import androidx.test.filters.SmallTest import com.android.internal.R import com.android.window.flags.Flags import com.android.wm.shell.ShellTestCase +import com.android.wm.shell.util.createTaskInfo import com.google.common.truth.Truth.assertThat import org.junit.After import org.junit.Before @@ -152,6 +154,70 @@ class DesktopModeStatusTest : ShellTestCase() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_freeformTask_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_notFreeformTask_returnsFalse() { + val notFreeFormTaskInfo = createTaskInfo() + assertThat(DesktopModeStatus.shouldSetBackground(notFreeFormTaskInfo)).isFalse() + } + + @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) + @DisableFlags(Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS) + @Test + fun shouldSetBackground_BTWFlagDisabled_freeformTaskAndFluid_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(false) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + + @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) + @DisableFlags(Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS) + @Test + fun shouldSetBackground_BTWFlagDisabled_freeformTaskAndVeiled_returnsFalse() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(true) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isFalse() + } + + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_freeformTaskAndFluid_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(false) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + + @EnableFlags( + Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_ENABLE_OPAQUE_BACKGROUND_FOR_TRANSPARENT_WINDOWS, + ) + @Test + fun shouldSetBackground_BTWFlagEnabled_windowModesTask_freeformTaskAndVeiled_returnsTrue() { + val freeFormTaskInfo = createTaskInfo(deviceWindowingMode = WINDOWING_MODE_FREEFORM) + + setIsVeiledResizeEnabled(true) + assertThat(DesktopModeStatus.shouldSetBackground(freeFormTaskInfo)).isTrue() + } + @Test fun isDeviceEligibleForDesktopMode_configDEModeOnAndIntDispHostsDesktop_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) @@ -254,4 +320,11 @@ class DesktopModeStatusTest : ShellTestCase() { deviceRestrictions.isAccessible = true deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ !eligible) } + + private fun setIsVeiledResizeEnabled(enabled: Boolean) { + val deviceRestrictions = + DesktopModeStatus::class.java.getDeclaredField("IS_VEILED_RESIZE_ENABLED") + deviceRestrictions.isAccessible = true + deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ enabled) + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java index 414c0147660c..ffef0d18bcc1 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java @@ -16,6 +16,8 @@ package com.android.wm.shell.splitscreen; +import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_50_50; + import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -58,6 +60,7 @@ public class SplitTestUtils { doReturn(leash).when(out).getDividerLeash(); doReturn(bounds1).when(out).getTopLeftBounds(); doReturn(bounds2).when(out).getBottomRightBounds(); + doReturn(SNAP_TO_2_50_50).when(out).calculateCurrentSnapPosition(); return out; } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java index 6f73db0bacc3..677330790bab 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java @@ -1316,9 +1316,11 @@ public class ShellTransitionTests extends ShellTestCase { mTransactionPool, createTestDisplayController(), mMainExecutor, mMainHandler, mAnimExecutor, mock(HomeTransitionObserver.class), mock(FocusTransitionObserver.class)); + final RecentTasksController mockRecentsTaskController = mock(RecentTasksController.class); + doReturn(mContext).when(mockRecentsTaskController).getContext(); final RecentsTransitionHandler recentsHandler = new RecentsTransitionHandler(shellInit, mock(ShellTaskOrganizer.class), transitions, - mock(RecentTasksController.class), mock(HomeTransitionObserver.class)); + mockRecentsTaskController, mock(HomeTransitionObserver.class)); transitions.replaceDefaultHandlerForTest(mDefaultHandler); shellInit.init(); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt index 16c793587ade..e89a122595d5 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt @@ -321,6 +321,19 @@ class DesktopModeWindowDecorViewModelTests : DesktopModeWindowDecorViewModelTest } @Test + fun testOnTaskInfoChanged_tilingNotified() { + val task = createTask( + windowingMode = WINDOWING_MODE_FREEFORM + ) + setUpMockDecorationsForTasks(task) + + onTaskOpening(task) + desktopModeWindowDecorViewModel.onTaskInfoChanged(task) + + verify(mockTilingWindowDecoration).onTaskInfoChange(task) + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_IMMERSIVE_HANDLE_HIDING) fun testInsetsStateChanged_notifiesAllDecorsInDisplay() { val task1 = createTask(windowingMode = WINDOWING_MODE_FREEFORM, displayId = 1) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java index af0162334440..a2927fa3527b 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java @@ -24,7 +24,6 @@ import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsets.Type.mandatorySystemGestures; import static android.view.WindowInsets.Type.statusBars; -import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession; import static com.android.wm.shell.MockSurfaceControlHelper.createMockSurfaceControlBuilder; import static com.android.wm.shell.MockSurfaceControlHelper.createMockSurfaceControlTransaction; @@ -51,7 +50,6 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import static org.mockito.quality.Strictness.LENIENT; import android.annotation.NonNull; import android.app.ActivityManager; @@ -79,13 +77,11 @@ import android.window.WindowContainerTransaction; import androidx.test.filters.SmallTest; -import com.android.dx.mockito.inline.extended.StaticMockitoSession; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.TestRunningTaskInfoBuilder; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.desktopmode.DesktopModeEventLogger; -import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.tests.R; import com.android.wm.shell.windowdecor.additionalviewcontainer.AdditionalViewContainer; import com.android.wm.shell.windowdecor.common.viewhost.WindowDecorViewHost; @@ -564,12 +560,7 @@ public class WindowDecorationTests extends ShellTestCase { } @Test - public void testRelayout_fluidResizeEnabled_freeformTask_setTaskSurfaceColor() { - StaticMockitoSession mockitoSession = mockitoSession().mockStatic( - DesktopModeStatus.class).strictness( - LENIENT).startMocking(); - when(DesktopModeStatus.isVeiledResizeEnabled()).thenReturn(false); - + public void testRelayout_shouldSetBackground_freeformTask_setTaskSurfaceColor() { final Display defaultDisplay = mock(Display.class); doReturn(defaultDisplay).when(mMockDisplayController) .getDisplay(Display.DEFAULT_DISPLAY); @@ -595,11 +586,10 @@ public class WindowDecorationTests extends ShellTestCase { .build(); final TestWindowDecoration windowDecor = createWindowDecoration(taskInfo); + mRelayoutParams.mShouldSetBackground = true; windowDecor.relayout(taskInfo, true /* hasGlobalFocus */); verify(mMockSurfaceControlStartT).setColor(mMockTaskSurface, new float[]{1.f, 1.f, 0.f}); - - mockitoSession.finishMocking(); } @Test @@ -627,11 +617,7 @@ public class WindowDecorationTests extends ShellTestCase { } @Test - public void testRelayout_fluidResizeEnabled_fullscreenTask_clearTaskSurfaceColor() { - StaticMockitoSession mockitoSession = mockitoSession().mockStatic( - DesktopModeStatus.class).strictness(LENIENT).startMocking(); - when(DesktopModeStatus.isVeiledResizeEnabled()).thenReturn(false); - + public void testRelayout_shouldNotSetBackground_fullscreenTask_clearTaskSurfaceColor() { final Display defaultDisplay = mock(Display.class); doReturn(defaultDisplay).when(mMockDisplayController) .getDisplay(Display.DEFAULT_DISPLAY); @@ -655,12 +641,11 @@ public class WindowDecorationTests extends ShellTestCase { .setWindowingMode(WINDOWING_MODE_FULLSCREEN) .build(); final TestWindowDecoration windowDecor = createWindowDecoration(taskInfo); + mRelayoutParams.mIsCaptionVisible = false; windowDecor.relayout(taskInfo, true /* hasGlobalFocus */); verify(mMockSurfaceControlStartT).unsetColor(mMockTaskSurface); - - mockitoSession.finishMocking(); } @Test diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt index 121e0e915d08..844205682d31 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/DesktopTilingDividerWindowManagerTest.kt @@ -81,6 +81,7 @@ class DesktopTilingDividerWindowManagerTest : ShellTestCase() { transactionSupplierMock, BOUNDS, context, + /* isDarkMode= */ true ) } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt index 9a9d05a72442..9a3d5d871456 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/tiling/TilingDividerViewTest.kt @@ -60,7 +60,7 @@ class TilingDividerViewTest : ShellTestCase() { tilingDividerView = LayoutInflater.from(mContext).inflate(R.layout.tiling_split_divider, /* root= */ null) as TilingDividerView - tilingDividerView.setup(dividerMoveCallbackMock, DIVIDER_BOUNDS, HANDLE_SIZE) + tilingDividerView.setup(dividerMoveCallbackMock, DIVIDER_BOUNDS, HANDLE_SIZE, true) tilingDividerView.handleY = 0..1500 } diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index 38ac8ab7135e..a892e887bd43 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -141,6 +141,7 @@ cc_defaults { "libsync", "libui", "aconfig_text_flags_c_lib", + "aconfig_view_accessibility_flags_c_lib", "server_configurable_flags", "libaconfig_storage_read_api_cc", "libgraphicsenv", diff --git a/libs/hwui/FeatureFlags.h b/libs/hwui/FeatureFlags.h index 5f84f47b725d..5ceb97cef17f 100644 --- a/libs/hwui/FeatureFlags.h +++ b/libs/hwui/FeatureFlags.h @@ -18,6 +18,7 @@ #define ANDROID_HWUI_FEATURE_FLAGS_H #ifdef __ANDROID__ +#include <android_view_accessibility.h> #include <com_android_text_flags.h> #endif // __ANDROID__ @@ -44,6 +45,19 @@ inline bool typeface_redesign_readonly() { } // namespace text_feature +namespace view_accessibility_flags { + +inline bool force_invert_color() { +#ifdef __ANDROID__ + static bool flag = android::view::accessibility::force_invert_color(); + return flag; +#else + return true; +#endif // __ANDROID__ +} + +} // namespace view_accessibility_flags + } // namespace android #endif // ANDROID_HWUI_FEATURE_FLAGS_H diff --git a/libs/hwui/OWNERS b/libs/hwui/OWNERS index 70d13ab8b3e5..9c06fd5f0225 100644 --- a/libs/hwui/OWNERS +++ b/libs/hwui/OWNERS @@ -3,7 +3,7 @@ alecmouri@google.com djsollen@google.com jreck@google.com -njawad@google.com +nscobie@google.com sumir@google.com # For text, e.g. Typeface, Font, Minikin, etc. diff --git a/location/java/android/location/GnssAntennaInfo.java b/location/java/android/location/GnssAntennaInfo.java index 3558dd501d20..39ce8a328838 100644 --- a/location/java/android/location/GnssAntennaInfo.java +++ b/location/java/android/location/GnssAntennaInfo.java @@ -33,6 +33,8 @@ import java.util.Objects; * * <p> Antenna info parameters are measured for each specific device model by the device * manufacturers and provided to the Android framework. + * + * <p> {@link GnssAntennaInfo} is returned per frequency band at the center frequency of the band. */ public final class GnssAntennaInfo implements Parcelable { private final double mCarrierFrequencyMHz; @@ -479,6 +481,7 @@ public final class GnssAntennaInfo implements Parcelable { } } + /** Returns the center frequency of the corresponding carrier frequency band. */ @FloatRange(from = 0.0f) public double getCarrierFrequencyMHz() { return mCarrierFrequencyMHz; diff --git a/media/OWNERS b/media/OWNERS index 5e391959b663..50995ea6de58 100644 --- a/media/OWNERS +++ b/media/OWNERS @@ -18,5 +18,4 @@ wonsik@google.com include platform/frameworks/av:/media/janitors/media_solutions_OWNERS # SEA/KIR/BVE -jtinker@google.com robertshih@google.com diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java index b11a81047bf8..4e1d472688ea 100644 --- a/media/java/android/media/MediaExtractor.java +++ b/media/java/android/media/MediaExtractor.java @@ -375,6 +375,9 @@ public final class MediaExtractor { /** * Extract DRM initialization data if it exists * + * <p>If the media contains a PSSH box, only PSSH version 0 is supported. The result for media + * with other PSSH versions is undefined. + * * @return DRM initialization data in the content, or {@code null} * if no recognizable DRM format is found; * @see DrmInitData @@ -460,6 +463,10 @@ public final class MediaExtractor { /** * Get the PSSH info if present. + * + * <p>This method only supports version 0 PSSH boxes. The result for other versions is + * undefined. + * * @return a map of uuid-to-bytes, with the uuid specifying * the crypto scheme, and the bytes being the data specific to that scheme. * This can be {@code null} if the source does not contain PSSH info. diff --git a/media/java/android/media/flags/projection.aconfig b/media/java/android/media/flags/projection.aconfig index 6d4f0b4f47d5..846448b6afbf 100644 --- a/media/java/android/media/flags/projection.aconfig +++ b/media/java/android/media/flags/projection.aconfig @@ -39,3 +39,12 @@ flag { } is_exported: true } + +flag { + namespace: "media_projection" + name: "app_content_sharing" + description: "Enable apps to share some sub-surface" + bug: "379989921" + is_exported: true +} + diff --git a/media/java/android/media/musicrecognition/OWNERS b/media/java/android/media/musicrecognition/OWNERS index 037b04831260..820be004efd5 100644 --- a/media/java/android/media/musicrecognition/OWNERS +++ b/media/java/android/media/musicrecognition/OWNERS @@ -1,5 +1,4 @@ # Bug component: 830636 oni@google.com -volnov@google.com diff --git a/media/java/android/media/projection/MediaProjectionConfig.java b/media/java/android/media/projection/MediaProjectionConfig.java index 30f34fecc6ce..598b534e81ca 100644 --- a/media/java/android/media/projection/MediaProjectionConfig.java +++ b/media/java/android/media/projection/MediaProjectionConfig.java @@ -27,7 +27,6 @@ import android.annotation.Nullable; import android.os.Parcelable; import com.android.internal.util.AnnotationValidations; -import com.android.internal.util.DataClass; import java.lang.annotation.Retention; @@ -35,36 +34,25 @@ import java.lang.annotation.Retention; * Configure the {@link MediaProjection} session requested from * {@link MediaProjectionManager#createScreenCaptureIntent(MediaProjectionConfig)}. */ -@DataClass( - genEqualsHashCode = true, - genAidl = true, - genSetters = false, - genConstructor = false, - genBuilder = false, - genToString = false, - genHiddenConstDefs = true, - genHiddenGetters = true, - genConstDefs = false -) public final class MediaProjectionConfig implements Parcelable { /** * The user, rather than the host app, determines which region of the display to capture. + * * @hide */ public static final int CAPTURE_REGION_USER_CHOICE = 0; /** * The host app specifies a particular display to capture. + * * @hide */ public static final int CAPTURE_REGION_FIXED_DISPLAY = 1; /** @hide */ - @IntDef(prefix = "CAPTURE_REGION_", value = { - CAPTURE_REGION_USER_CHOICE, - CAPTURE_REGION_FIXED_DISPLAY - }) + @IntDef(prefix = "CAPTURE_REGION_", value = {CAPTURE_REGION_USER_CHOICE, + CAPTURE_REGION_FIXED_DISPLAY}) @Retention(SOURCE) public @interface CaptureRegion { } @@ -72,7 +60,7 @@ public final class MediaProjectionConfig implements Parcelable { /** * The particular display to capture. Only used when {@link #getRegionToCapture()} is * {@link #CAPTURE_REGION_FIXED_DISPLAY}; ignored otherwise. - * + * <p> * Only supports values of {@link android.view.Display#DEFAULT_DISPLAY}. */ @IntRange(from = DEFAULT_DISPLAY, to = DEFAULT_DISPLAY) @@ -82,13 +70,7 @@ public final class MediaProjectionConfig implements Parcelable { * The region to capture. Defaults to the user's choice. */ @CaptureRegion - private int mRegionToCapture = CAPTURE_REGION_USER_CHOICE; - - /** - * Default instance, with region set to the user's choice. - */ - private MediaProjectionConfig() { - } + private int mRegionToCapture; /** * Customized instance, with region set to the provided value. @@ -129,51 +111,29 @@ public final class MediaProjectionConfig implements Parcelable { */ @NonNull private static String captureRegionToString(int value) { - switch (value) { - case CAPTURE_REGION_USER_CHOICE: - return "CAPTURE_REGION_USERS_CHOICE"; - case CAPTURE_REGION_FIXED_DISPLAY: - return "CAPTURE_REGION_GIVEN_DISPLAY"; - default: - return Integer.toHexString(value); - } + return switch (value) { + case CAPTURE_REGION_USER_CHOICE -> "CAPTURE_REGION_USERS_CHOICE"; + case CAPTURE_REGION_FIXED_DISPLAY -> "CAPTURE_REGION_GIVEN_DISPLAY"; + default -> Integer.toHexString(value); + }; } @Override public String toString() { - return "MediaProjectionConfig { " - + "displayToCapture = " + mDisplayToCapture + ", " - + "regionToCapture = " + captureRegionToString(mRegionToCapture) - + " }"; + return "MediaProjectionConfig { " + "displayToCapture = " + mDisplayToCapture + ", " + + "regionToCapture = " + captureRegionToString(mRegionToCapture) + " }"; } - - - - // Code below generated by codegen v1.0.23. - // - // DO NOT MODIFY! - // CHECKSTYLE:OFF Generated code - // - // To regenerate run: - // $ codegen $ANDROID_BUILD_TOP/frameworks/base/media/java/android/media/projection/MediaProjectionConfig.java - // - // To exclude the generated code from IntelliJ auto-formatting enable (one-time): - // Settings > Editor > Code Style > Formatter Control - //@formatter:off - - /** * The particular display to capture. Only used when {@link #getRegionToCapture()} is * {@link #CAPTURE_REGION_FIXED_DISPLAY}; ignored otherwise. - * + * <p> * Only supports values of {@link android.view.Display#DEFAULT_DISPLAY}. * * @hide */ - @DataClass.Generated.Member - public @IntRange(from = DEFAULT_DISPLAY, to = DEFAULT_DISPLAY) int getDisplayToCapture() { + public int getDisplayToCapture() { return mDisplayToCapture; } @@ -182,34 +142,21 @@ public final class MediaProjectionConfig implements Parcelable { * * @hide */ - @DataClass.Generated.Member public @CaptureRegion int getRegionToCapture() { return mRegionToCapture; } @Override - @DataClass.Generated.Member public boolean equals(@Nullable Object o) { - // You can override field equality logic by defining either of the methods like: - // boolean fieldNameEquals(MediaProjectionConfig other) { ... } - // boolean fieldNameEquals(FieldType otherValue) { ... } - if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - @SuppressWarnings("unchecked") MediaProjectionConfig that = (MediaProjectionConfig) o; - //noinspection PointlessBooleanExpression - return true - && mDisplayToCapture == that.mDisplayToCapture + return mDisplayToCapture == that.mDisplayToCapture && mRegionToCapture == that.mRegionToCapture; } @Override - @DataClass.Generated.Member public int hashCode() { - // You can override field hashCode logic by defining methods like: - // int fieldNameHashCode() { ... } - int _hash = 1; _hash = 31 * _hash + mDisplayToCapture; _hash = 31 * _hash + mRegionToCapture; @@ -217,65 +164,36 @@ public final class MediaProjectionConfig implements Parcelable { } @Override - @DataClass.Generated.Member public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { - // You can override field parcelling by defining methods like: - // void parcelFieldName(Parcel dest, int flags) { ... } - dest.writeInt(mDisplayToCapture); dest.writeInt(mRegionToCapture); } @Override - @DataClass.Generated.Member - public int describeContents() { return 0; } + public int describeContents() { + return 0; + } /** @hide */ - @SuppressWarnings({"unchecked", "RedundantCast"}) - @DataClass.Generated.Member /* package-private */ MediaProjectionConfig(@NonNull android.os.Parcel in) { - // You can override field unparcelling by defining methods like: - // static FieldType unparcelFieldName(Parcel in) { ... } - int displayToCapture = in.readInt(); int regionToCapture = in.readInt(); - this.mDisplayToCapture = displayToCapture; - AnnotationValidations.validate( - IntRange.class, null, mDisplayToCapture, - "from", DEFAULT_DISPLAY, - "to", DEFAULT_DISPLAY); - this.mRegionToCapture = regionToCapture; - AnnotationValidations.validate( - CaptureRegion.class, null, mRegionToCapture); - - // onConstructed(); // You can define this method to get a callback + mDisplayToCapture = displayToCapture; + mRegionToCapture = regionToCapture; + AnnotationValidations.validate(CaptureRegion.class, null, mRegionToCapture); } - @DataClass.Generated.Member - public static final @NonNull Parcelable.Creator<MediaProjectionConfig> CREATOR - = new Parcelable.Creator<MediaProjectionConfig>() { - @Override - public MediaProjectionConfig[] newArray(int size) { - return new MediaProjectionConfig[size]; - } - - @Override - public MediaProjectionConfig createFromParcel(@NonNull android.os.Parcel in) { - return new MediaProjectionConfig(in); - } - }; - - @DataClass.Generated( - time = 1673548980960L, - codegenVersion = "1.0.23", - sourceFile = "frameworks/base/media/java/android/media/projection/MediaProjectionConfig.java", - inputSignatures = "public static final int CAPTURE_REGION_USER_CHOICE\npublic static final int CAPTURE_REGION_FIXED_DISPLAY\nprivate @android.annotation.IntRange int mDisplayToCapture\nprivate @android.media.projection.MediaProjectionConfig.CaptureRegion int mRegionToCapture\npublic static @android.annotation.NonNull android.media.projection.MediaProjectionConfig createConfigForDefaultDisplay()\npublic static @android.annotation.NonNull android.media.projection.MediaProjectionConfig createConfigForUserChoice()\nprivate static @android.annotation.NonNull java.lang.String captureRegionToString(int)\npublic @java.lang.Override java.lang.String toString()\nclass MediaProjectionConfig extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genAidl=true, genSetters=false, genConstructor=false, genBuilder=false, genToString=false, genHiddenConstDefs=true, genHiddenGetters=true, genConstDefs=false)") - @Deprecated - private void __metadata() {} - - - //@formatter:on - // End of generated code - + public static final @NonNull Parcelable.Creator<MediaProjectionConfig> CREATOR = + new Parcelable.Creator<>() { + @Override + public MediaProjectionConfig[] newArray(int size) { + return new MediaProjectionConfig[size]; + } + + @Override + public MediaProjectionConfig createFromParcel(@NonNull android.os.Parcel in) { + return new MediaProjectionConfig(in); + } + }; } diff --git a/media/jni/OWNERS b/media/jni/OWNERS index fdddf13a0a23..84618a35cd4f 100644 --- a/media/jni/OWNERS +++ b/media/jni/OWNERS @@ -1,5 +1,5 @@ # extra for MTP related files -per-file android_mtp_*.cpp=aprasath@google.com,anothermark@google.com,kumarashishg@google.com,sarup@google.com,jsharkey@android.com,jameswei@google.com,rmojumder@google.com +per-file android_mtp_*.cpp=aprasath@google.com,anothermark@google.com,sarup@google.com,jsharkey@android.com,jameswei@google.com,rmojumder@google.com # extra for TV related files per-file android_media_tv_*=hgchen@google.com,quxiangfang@google.com diff --git a/opengl/java/android/opengl/OWNERS b/opengl/java/android/opengl/OWNERS index e340bc62567a..4ec9e29c48b0 100644 --- a/opengl/java/android/opengl/OWNERS +++ b/opengl/java/android/opengl/OWNERS @@ -3,4 +3,3 @@ sumir@google.com prahladk@google.com ianelliott@google.com -lpy@google.com diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml index 9476dc55e86a..b802d0f69a08 100644 --- a/packages/CompanionDeviceManager/res/values-af/strings.xml +++ b/packages/CompanionDeviceManager/res/values-af/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Moenie toelaat nie"</string> <string name="consent_cancel" msgid="5655005528379285841">"Kanselleer"</string> <string name="consent_back" msgid="2560683030046918882">"Terug"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Vou <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> uit"</string> <string name="permission_collapse" msgid="3320833884220844084">"Vou <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> in"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Gee programme op <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> dieselfde toestemmings as op <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml index e53efcedd8cc..d4d0b0708302 100644 --- a/packages/CompanionDeviceManager/res/values-am/strings.xml +++ b/packages/CompanionDeviceManager/res/values-am/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"አትፍቀድ"</string> <string name="consent_cancel" msgid="5655005528379285841">"ይቅር"</string> <string name="consent_back" msgid="2560683030046918882">"ተመለስ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>ን ዘርጋ"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>ን ሰብስብ"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"በ<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ላይ ላሉ መተግበሪያዎች በ<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> ላይ ካሉት ጋር ተመሳሳይ ፈቃዶች ይሰጣቸው?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml index 5b6ea65e42ed..f4e17213fd2d 100644 --- a/packages/CompanionDeviceManager/res/values-ar/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"عدم السماح"</string> <string name="consent_cancel" msgid="5655005528379285841">"إلغاء"</string> <string name="consent_back" msgid="2560683030046918882">"رجوع"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"توسيع <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"تصغير <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"هل تريد منح التطبيقات على <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> نفس الأذونات على <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>؟"</string> diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml index 9001a2c5e758..322d422f60d7 100644 --- a/packages/CompanionDeviceManager/res/values-as/strings.xml +++ b/packages/CompanionDeviceManager/res/values-as/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"অনুমতি নিদিব"</string> <string name="consent_cancel" msgid="5655005528379285841">"বাতিল কৰক"</string> <string name="consent_back" msgid="2560683030046918882">"উভতি যাওক"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> বিস্তাৰ কৰক"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> সংকোচন কৰক"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"এপ্সমূহক <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>ত দিয়াৰ দৰে <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>তো একে অনুমতি প্ৰদান কৰিবনে?"</string> diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml index 2ffe84ead5b0..9f3ab2bd50cd 100644 --- a/packages/CompanionDeviceManager/res/values-az/strings.xml +++ b/packages/CompanionDeviceManager/res/values-az/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"İcazə verməyin"</string> <string name="consent_cancel" msgid="5655005528379285841">"Ləğv edin"</string> <string name="consent_back" msgid="2560683030046918882">"Geriyə"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Genişləndirin: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Yığcamlaşdırın: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> cihazındakı tətbiqlərə <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> cihazındakılarla eyni icazələr verilsin?"</string> diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml index dfe3cbefcb5b..d28b9b26fb07 100644 --- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ne dozvoli"</string> <string name="consent_cancel" msgid="5655005528379285841">"Otkaži"</string> <string name="consent_back" msgid="2560683030046918882">"Nazad"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Proširi <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Skupi <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Aplikcijama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> dajete sve dozvole kao na uređaju <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml index 6e5e1b58f362..14878c11c5db 100644 --- a/packages/CompanionDeviceManager/res/values-be/strings.xml +++ b/packages/CompanionDeviceManager/res/values-be/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Не дазваляць"</string> <string name="consent_cancel" msgid="5655005528379285841">"Скасаваць"</string> <string name="consent_back" msgid="2560683030046918882">"Назад"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Разгарнуць <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Згарнуць <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Даць праграмам на прыладзе <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> такія самыя дазволы, што і на прыладзе <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml index 9c3b94e6a0fe..6e5b3234b992 100644 --- a/packages/CompanionDeviceManager/res/values-bg/strings.xml +++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Забраняване"</string> <string name="consent_cancel" msgid="5655005528379285841">"Отказ"</string> <string name="consent_back" msgid="2560683030046918882">"Назад"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Разгъване на <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Свиване на <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Искате ли да дадете на приложенията на <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> същите разрешения както на <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml index 88db2a5d0975..214dc71a6a88 100644 --- a/packages/CompanionDeviceManager/res/values-bn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"অনুমতি দেবেন না"</string> <string name="consent_cancel" msgid="5655005528379285841">"বাতিল করুন"</string> <string name="consent_back" msgid="2560683030046918882">"ফিরুন"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> বড় করুন"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> আড়াল করুন"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>-এ যে অনুমতি দেওয়া আছে <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>-এও সেই একই অনুমতি দিতে চান?"</string> diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml index bc74b1aaefbc..b23f600cbcf0 100644 --- a/packages/CompanionDeviceManager/res/values-bs/strings.xml +++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nemoj dozvoliti"</string> <string name="consent_cancel" msgid="5655005528379285841">"Otkaži"</string> <string name="consent_back" msgid="2560683030046918882">"Nazad"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Proširivanje stavke <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Sužavanje stavke <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Dati aplikacijama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ista odobrenja kao na uređaju <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml index 8c0b117f29ea..21f3871d8209 100644 --- a/packages/CompanionDeviceManager/res/values-ca/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"No permetis"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancel·la"</string> <string name="consent_back" msgid="2560683030046918882">"Enrere"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Desplega <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Replega <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Vols concedir a les aplicacions del dispositiu <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> els mateixos permisos que tenen a <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml index cde31af7ec97..cd8913012eeb 100644 --- a/packages/CompanionDeviceManager/res/values-cs/strings.xml +++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nepovolovat"</string> <string name="consent_cancel" msgid="5655005528379285841">"Zrušit"</string> <string name="consent_back" msgid="2560683030046918882">"Zpět"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Rozbalit sekci <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Sbalit sekci <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Udělit aplikacím v zařízení <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> stejné oprávnění, jako mají v zařízení <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml index 1062af845c9f..6dc34e77c5ce 100644 --- a/packages/CompanionDeviceManager/res/values-da/strings.xml +++ b/packages/CompanionDeviceManager/res/values-da/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Tillad ikke"</string> <string name="consent_cancel" msgid="5655005528379285841">"Annuller"</string> <string name="consent_back" msgid="2560683030046918882">"Tilbage"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Udvid <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Skjul <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Vil du give apps på <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> de samme tilladelser som på <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml index 6f8a902edc91..4dc292916628 100644 --- a/packages/CompanionDeviceManager/res/values-de/strings.xml +++ b/packages/CompanionDeviceManager/res/values-de/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nicht zulassen"</string> <string name="consent_cancel" msgid="5655005528379285841">"Abbrechen"</string> <string name="consent_back" msgid="2560683030046918882">"Zurück"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> maximieren"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> minimieren"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Apps auf <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> die gleichen Berechtigungen geben wie auf <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml index c90bf21c87ab..1dc00dc4085b 100644 --- a/packages/CompanionDeviceManager/res/values-el/strings.xml +++ b/packages/CompanionDeviceManager/res/values-el/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Να μην επιτρέπεται"</string> <string name="consent_cancel" msgid="5655005528379285841">"Ακύρωση"</string> <string name="consent_back" msgid="2560683030046918882">"Πίσω"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Ανάπτυξη <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Σύμπτυξη <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Παραχώρηση των ίδιων αδειών στις εφαρμογές στη συσκευή <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> όπως στη συσκευή <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>;"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml index 8590e9f96f1c..bbd81bf68b9d 100644 --- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Don\'t allow"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancel"</string> <string name="consent_back" msgid="2560683030046918882">"Back"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Expand <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Collapse <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Give apps on <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml index 041966ec0ce4..8d7338024107 100644 --- a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Don\'t allow"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancel"</string> <string name="consent_back" msgid="2560683030046918882">"Back"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Expand <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Collapse <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Give apps on <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml index 8590e9f96f1c..bbd81bf68b9d 100644 --- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Don\'t allow"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancel"</string> <string name="consent_back" msgid="2560683030046918882">"Back"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Expand <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Collapse <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Give apps on <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml index 8590e9f96f1c..bbd81bf68b9d 100644 --- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Don\'t allow"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancel"</string> <string name="consent_back" msgid="2560683030046918882">"Back"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Expand <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Collapse <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Give apps on <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml index 88ae3ed0356b..50f76549d807 100644 --- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml +++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"No permitir"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancelar"</string> <string name="consent_back" msgid="2560683030046918882">"Atrás"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Expandir <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Contraer <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"¿Dar a las apps de <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> los mismos permisos que tienen en <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml index a309d7cb4d27..f8e2c742cccc 100644 --- a/packages/CompanionDeviceManager/res/values-es/strings.xml +++ b/packages/CompanionDeviceManager/res/values-es/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"No permitir"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancelar"</string> <string name="consent_back" msgid="2560683030046918882">"Atrás"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Desplegar <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Contraer <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"¿Dar a las aplicaciones de <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> los mismos permisos que <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml index 91d1b6914e23..0f390e1fea89 100644 --- a/packages/CompanionDeviceManager/res/values-et/strings.xml +++ b/packages/CompanionDeviceManager/res/values-et/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ära luba"</string> <string name="consent_cancel" msgid="5655005528379285841">"Tühista"</string> <string name="consent_back" msgid="2560683030046918882">"Tagasi"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Laienda: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Ahenda: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Kas anda rakendustele seadmes <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> samad load, mis seadmes <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml index c52c2b982f02..1c7f1f364764 100644 --- a/packages/CompanionDeviceManager/res/values-eu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ez eman baimenik"</string> <string name="consent_cancel" msgid="5655005528379285841">"Utzi"</string> <string name="consent_back" msgid="2560683030046918882">"Atzera"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Zabaldu <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Tolestu <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> gailuan dituzten baimen berberak eman nahi dizkiezu <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> gailuko aplikazioei?"</string> diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml index 048bf3e7b0b4..fb36c46d2d6a 100644 --- a/packages/CompanionDeviceManager/res/values-fa/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"اجازه ندادن"</string> <string name="consent_cancel" msgid="5655005528379285841">"لغو"</string> <string name="consent_back" msgid="2560683030046918882">"برگشتن"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"ازهم بازکردن <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"جمع کردن <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"به برنامههای موجود در <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> همان اجازههای <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> داده شود؟"</string> diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml index 3f4a9d3cc1e0..ff6cae1bbe3c 100644 --- a/packages/CompanionDeviceManager/res/values-fi/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Älä salli"</string> <string name="consent_cancel" msgid="5655005528379285841">"Peruuta"</string> <string name="consent_back" msgid="2560683030046918882">"Takaisin"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Laajenna <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Tiivistä <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Anna laitteen <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> sovelluksille samat luvat kuin laitteella <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml index 52b136c0c322..4d7de76334de 100644 --- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ne pas autoriser"</string> <string name="consent_cancel" msgid="5655005528379285841">"Annuler"</string> <string name="consent_back" msgid="2560683030046918882">"Retour"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Développer <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Réduire <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Accorder aux applis sur <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> les autorisations déjà accordées sur <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml index e7741c42850e..d4c12fba1492 100644 --- a/packages/CompanionDeviceManager/res/values-fr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ne pas autoriser"</string> <string name="consent_cancel" msgid="5655005528379285841">"Annuler"</string> <string name="consent_back" msgid="2560683030046918882">"Retour"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Développer <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Réduire <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Accorder les mêmes autorisations aux applis sur <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> que sur <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml index bf58761da26f..999ab9741084 100644 --- a/packages/CompanionDeviceManager/res/values-gl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Non permitir"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancelar"</string> <string name="consent_back" msgid="2560683030046918882">"Atrás"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Despregar <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Contraer <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Queres darlles ás aplicacións de <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> os mesmos permisos que teñen as de <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml index 9df54dac3470..51d07c97fa5c 100644 --- a/packages/CompanionDeviceManager/res/values-gu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"મંજૂરી આપશો નહીં"</string> <string name="consent_cancel" msgid="5655005528379285841">"રદ કરો"</string> <string name="consent_back" msgid="2560683030046918882">"પાછળ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>ને મોટું કરો"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>ને નાનું કરો"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> પરની ઍપને <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> પર છે તે જ પરવાનગીઓ આપીએ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml index fe04cbd3503f..f7086c650e2e 100644 --- a/packages/CompanionDeviceManager/res/values-hi/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"अनुमति न दें"</string> <string name="consent_cancel" msgid="5655005528379285841">"रद्द करें"</string> <string name="consent_back" msgid="2560683030046918882">"वापस जाएं"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> को बड़ा करें"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> को छोटा करें"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"क्या <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> पर ऐप्लिकेशन को वही अनुमतियां देनी हैं जो <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> पर दी हैं?"</string> diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml index c5ed386799dd..04872e53cb36 100644 --- a/packages/CompanionDeviceManager/res/values-hr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nemoj dopustiti"</string> <string name="consent_cancel" msgid="5655005528379285841">"Odustani"</string> <string name="consent_back" msgid="2560683030046918882">"Natrag"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Proširi <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Sažmi <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Dati jednaka dopuštenja aplikacijama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> kao i na uređaju <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml index 9fb92c31b836..5d3b31329198 100644 --- a/packages/CompanionDeviceManager/res/values-hu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Tiltás"</string> <string name="consent_cancel" msgid="5655005528379285841">"Mégse"</string> <string name="consent_back" msgid="2560683030046918882">"Vissza"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> kibontása"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> összecsukása"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Ugyanolyan engedélyeket ad a(z) <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> eszközön található alkalmazásoknak, mint a(z) <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> eszköz esetén?"</string> diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml index b398b94c0c3f..e7c71391fb91 100644 --- a/packages/CompanionDeviceManager/res/values-hy/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Չթույլատրել"</string> <string name="consent_cancel" msgid="5655005528379285841">"Չեղարկել"</string> <string name="consent_back" msgid="2560683030046918882">"Հետ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Ծավալել «<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>» բաժինը"</string> <string name="permission_collapse" msgid="3320833884220844084">"Ծալել «<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>» բաժինը"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>-ում հավելվածներին տա՞լ նույն թույլտվությունները, ինչ <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>-ում"</string> diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml index 9c9144c4f63d..f58220563e4e 100644 --- a/packages/CompanionDeviceManager/res/values-in/strings.xml +++ b/packages/CompanionDeviceManager/res/values-in/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Jangan izinkan"</string> <string name="consent_cancel" msgid="5655005528379285841">"Batal"</string> <string name="consent_back" msgid="2560683030046918882">"Kembali"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Luaskan <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Ciutkan <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Berikan aplikasi di <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> izin yang sama seperti di <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml index 1247aaef319f..b66133cddeb6 100644 --- a/packages/CompanionDeviceManager/res/values-is/strings.xml +++ b/packages/CompanionDeviceManager/res/values-is/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ekki leyfa"</string> <string name="consent_cancel" msgid="5655005528379285841">"Hætta við"</string> <string name="consent_back" msgid="2560683030046918882">"Til baka"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Stækka <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Minnka <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Veita forritum í <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> sömu heimildir og í <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml index 36647ada789c..34967181eea7 100644 --- a/packages/CompanionDeviceManager/res/values-it/strings.xml +++ b/packages/CompanionDeviceManager/res/values-it/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Non consentire"</string> <string name="consent_cancel" msgid="5655005528379285841">"Annulla"</string> <string name="consent_back" msgid="2560683030046918882">"Indietro"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Espandi <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Comprimi <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Vuoi dare alle app su <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> le stesse autorizzazioni che hai dato su <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml index f08ee6e674d2..626ae7a3b50e 100644 --- a/packages/CompanionDeviceManager/res/values-iw/strings.xml +++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"אין אישור"</string> <string name="consent_cancel" msgid="5655005528379285841">"ביטול"</string> <string name="consent_back" msgid="2560683030046918882">"חזרה"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"הרחבה של <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"כיווץ של <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"האם לתת לאפליקציות ב-<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> את אותן הרשאות כמו ב-<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml index 0ad41cd72916..a8dc756fee76 100644 --- a/packages/CompanionDeviceManager/res/values-ja/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"許可しない"</string> <string name="consent_cancel" msgid="5655005528379285841">"キャンセル"</string> <string name="consent_back" msgid="2560683030046918882">"戻る"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>を開く"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>を閉じる"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> のアプリに <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> の場合と同じ権限を付与しますか?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml index 3fb5519b8177..97f3087663cf 100644 --- a/packages/CompanionDeviceManager/res/values-ka/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"არ დაიშვას"</string> <string name="consent_cancel" msgid="5655005528379285841">"გაუქმება"</string> <string name="consent_back" msgid="2560683030046918882">"უკან"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>-ის გაფართოება"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>-ის ჩაკეცვა"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"გსურთ აპებს <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>-ზე იგივე ნებართვები მიანიჭოთ, როგორიც აქვს <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>-ზე?"</string> diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml index 06b82ec171ee..4d77c6cc588c 100644 --- a/packages/CompanionDeviceManager/res/values-kk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Рұқсат бермеу"</string> <string name="consent_cancel" msgid="5655005528379285841">"Бас тарту"</string> <string name="consent_back" msgid="2560683030046918882">"Артқа"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"\"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>\" панелін жаю"</string> <string name="permission_collapse" msgid="3320833884220844084">"\"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>\" панелін жию"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> құрылғысындағы қолданбаларға <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> құрылғысындағыдай рұқсаттар берілсін бе?"</string> diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml index 3f6eacfb4c44..9047b05eb373 100644 --- a/packages/CompanionDeviceManager/res/values-km/strings.xml +++ b/packages/CompanionDeviceManager/res/values-km/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"មិនអនុញ្ញាត"</string> <string name="consent_cancel" msgid="5655005528379285841">"បោះបង់"</string> <string name="consent_back" msgid="2560683030046918882">"ថយក្រោយ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"ពង្រីក <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"បង្រួម <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"ផ្ដល់ការអនុញ្ញាតឱ្យកម្មវិធីនៅលើ <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ដូចនៅលើ <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> ឬ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml index 269d729db9b1..751ac1f1a5ad 100644 --- a/packages/CompanionDeviceManager/res/values-kn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ಅನುಮತಿಸಬೇಡಿ"</string> <string name="consent_cancel" msgid="5655005528379285841">"ರದ್ದುಮಾಡಿ"</string> <string name="consent_back" msgid="2560683030046918882">"ಹಿಂದೆ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ಅನ್ನು ವಿಸ್ತರಿಸಿ"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ಅನ್ನು ಕುಗ್ಗಿಸಿ"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"</strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> ನಲ್ಲಿನ ಅನುಮತಿಗಳನ್ನೇ </strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ನಲ್ಲಿನ ಆ್ಯಪ್ಗಳಿಗೆ ನೀಡಬೇಕೆ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml index 0b4274e7bc05..a7a5dc1bd204 100644 --- a/packages/CompanionDeviceManager/res/values-ko/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"허용 안함"</string> <string name="consent_cancel" msgid="5655005528379285841">"취소"</string> <string name="consent_back" msgid="2560683030046918882">"뒤로"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> 펼치기"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> 접기"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>에 설치된 앱에 <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>에 설치된 앱과 동일한 권한을 부여하시겠습니까?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml index a7b4f40eecd1..991fc9f13248 100644 --- a/packages/CompanionDeviceManager/res/values-ky/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Уруксат берилбесин"</string> <string name="consent_cancel" msgid="5655005528379285841">"Жок"</string> <string name="consent_back" msgid="2560683030046918882">"Артка"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> жайып көрсөтүү"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> жыйыштыруу"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> түзмөгүнө да <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> түзмөгүнө берилген уруксаттар берилсинби?"</string> diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml index d7f777d3c8f1..91399b60f7b7 100644 --- a/packages/CompanionDeviceManager/res/values-lo/strings.xml +++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ບໍ່ອະນຸຍາດ"</string> <string name="consent_cancel" msgid="5655005528379285841">"ຍົກເລີກ"</string> <string name="consent_back" msgid="2560683030046918882">"ກັບຄືນ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"ຂະຫຍາຍ <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"ຫຍໍ້ <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ລົງ"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"ໃຫ້ການອະນຸຍາດແອັບຢູ່ <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ເປັນການອະນຸຍາດດຽວກັນກັບຢູ່ <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> ບໍ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml index 5dd1d06d545e..a3ac47b9642f 100644 --- a/packages/CompanionDeviceManager/res/values-lt/strings.xml +++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Neleisti"</string> <string name="consent_cancel" msgid="5655005528379285841">"Atšaukti"</string> <string name="consent_back" msgid="2560683030046918882">"Atgal"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Išskleisti „<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>“"</string> <string name="permission_collapse" msgid="3320833884220844084">"Sutraukti „<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>“"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Suteikti <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> esančioms programoms tuos pačius leidimus kaip <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> esančioms programoms?"</string> diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml index 40de5d1afad4..35c748125180 100644 --- a/packages/CompanionDeviceManager/res/values-lv/strings.xml +++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Neatļaut"</string> <string name="consent_cancel" msgid="5655005528379285841">"Atcelt"</string> <string name="consent_back" msgid="2560683030046918882">"Atpakaļ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Izvērst: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Sakļaut: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Vai lietotnēm ierīcē <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> piešķirt tādas pašas atļaujas kā ierīcē <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml index db1c06a78b55..1eaf2d23690b 100644 --- a/packages/CompanionDeviceManager/res/values-mk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Не дозволувај"</string> <string name="consent_cancel" msgid="5655005528379285841">"Откажи"</string> <string name="consent_back" msgid="2560683030046918882">"Назад"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Прошири <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Собери <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Дасе дадат исти дозволи на апликациите на <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> како на <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml index de50fc721522..52fcb1f9a7b6 100644 --- a/packages/CompanionDeviceManager/res/values-ml/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"അനുവദിക്കരുത്"</string> <string name="consent_cancel" msgid="5655005528379285841">"റദ്ദാക്കുക"</string> <string name="consent_back" msgid="2560683030046918882">"മടങ്ങുക"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> വികസിപ്പിക്കുക"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ചുരുക്കുക"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> എന്നതിലെ അതേ അനുമതികൾ <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> എന്നതിലെ ആപ്പുകൾക്ക് നൽകണോ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml index e76f68843f59..5faf241c81a1 100644 --- a/packages/CompanionDeviceManager/res/values-mn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Бүү зөвшөөр"</string> <string name="consent_cancel" msgid="5655005528379285841">"Цуцлах"</string> <string name="consent_back" msgid="2560683030046918882">"Буцах"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>-г дэлгэх"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>-г хураах"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> дээрх аппуудад <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> дээрхтэй адил зөвшөөрөл өгөх үү?"</string> diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml index 03a5271df0d6..94e49fecd7e0 100644 --- a/packages/CompanionDeviceManager/res/values-mr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"अनुमती देऊ नका"</string> <string name="consent_cancel" msgid="5655005528379285841">"रद्द करा"</string> <string name="consent_back" msgid="2560683030046918882">"मागे जा"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> चा विस्तार करा"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> कोलॅप्स करा"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> वरील अॅप्सना <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> प्रमाणेच परवानग्या द्यायच्या आहेत का?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml index ca41c6fe58d2..8b1170ba03d2 100644 --- a/packages/CompanionDeviceManager/res/values-ms/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Jangan benarkan"</string> <string name="consent_cancel" msgid="5655005528379285841">"Batal"</string> <string name="consent_back" msgid="2560683030046918882">"Kembali"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Kembangkan <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Kuncupkan <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Beri apl pada <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> kebenaran yang sama seperti pada <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml index f03048bbc997..faca3e35d549 100644 --- a/packages/CompanionDeviceManager/res/values-my/strings.xml +++ b/packages/CompanionDeviceManager/res/values-my/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ခွင့်မပြုပါ"</string> <string name="consent_cancel" msgid="5655005528379285841">"မလုပ်တော့"</string> <string name="consent_back" msgid="2560683030046918882">"နောက်သို့"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ကို ပိုပြရန်"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ကို လျှော့ပြရန်"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"အက်ပ်များကို <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> တွင်ပေးထားသည့် ခွင့်ပြုချက်များအတိုင်း <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> တွင် ပေးမလား။"</string> diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml index 6008299e1ee0..4188951a15ed 100644 --- a/packages/CompanionDeviceManager/res/values-nb/strings.xml +++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ikke tillat"</string> <string name="consent_cancel" msgid="5655005528379285841">"Avbryt"</string> <string name="consent_back" msgid="2560683030046918882">"Tilbake"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Vis <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Skjul <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Vil du gi apper på <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> de samme tillatelsene som på <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml index dd8b1ae345ec..2cd4fef2c53a 100644 --- a/packages/CompanionDeviceManager/res/values-ne/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"अनुमति नदिनुहोस्"</string> <string name="consent_cancel" msgid="5655005528379285841">"रद्द गर्नुहोस्"</string> <string name="consent_back" msgid="2560683030046918882">"पछाडि"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> एक्स्पान्ड गर्नुहोस्"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> कोल्याप्स गर्नुहोस्"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> मा भएका एपहरूलाई पनि <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> मा दिइएकै अनुमति दिने हो?"</string> diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml index 22feb9deca17..2f0fc9a7997a 100644 --- a/packages/CompanionDeviceManager/res/values-nl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Niet toestaan"</string> <string name="consent_cancel" msgid="5655005528379285841">"Annuleren"</string> <string name="consent_back" msgid="2560683030046918882">"Terug"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> uitvouwen"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> samenvouwen"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Apps op de <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> dezelfde rechten geven als op de <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml index 96c62070ee62..8298a5b9d411 100644 --- a/packages/CompanionDeviceManager/res/values-or/strings.xml +++ b/packages/CompanionDeviceManager/res/values-or/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</string> <string name="consent_cancel" msgid="5655005528379285841">"ବାତିଲ କରନ୍ତୁ"</string> <string name="consent_back" msgid="2560683030046918882">"ପଛକୁ ଫେରନ୍ତୁ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>କୁ ବିସ୍ତାର କରନ୍ତୁ"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>କୁ ସଙ୍କୁଚିତ କରନ୍ତୁ"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>ପରି <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>ରେ ଥିବା ଆପ୍ସକୁ ସମାନ ଅନୁମତିଗୁଡ଼ିକ ଦେବେ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml index c2db62f88248..fe13c00dfb98 100644 --- a/packages/CompanionDeviceManager/res/values-pa/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ਆਗਿਆ ਨਾ ਦਿਓ"</string> <string name="consent_cancel" msgid="5655005528379285841">"ਰੱਦ ਕਰੋ"</string> <string name="consent_back" msgid="2560683030046918882">"ਪਿੱਛੇ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ਦਾ ਵਿਸਤਾਰ ਕਰੋ"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ਨੂੰ ਸਮੇਟੋ"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"ਕੀ <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> \'ਤੇ ਮੌਜੂਦ ਐਪਾਂ ਨੂੰ <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> \'ਤੇ ਮੌਜੂਦ ਐਪਾਂ ਵਾਂਗ ਇਜਾਜ਼ਤਾਂ ਦੇਣੀਆਂ ਹਨ?"</string> diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml index 62a0d407d7ad..1599f3f333fe 100644 --- a/packages/CompanionDeviceManager/res/values-pl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nie zezwalaj"</string> <string name="consent_cancel" msgid="5655005528379285841">"Anuluj"</string> <string name="consent_back" msgid="2560683030046918882">"Wstecz"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Rozwiń sekcję <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Zwiń sekcję <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Czy aplikacjom na urządzeniu <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> przyznać te same uprawnienia co na urządzeniu <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml index 81c50c1c9142..85c23ea7f253 100644 --- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Não permitir"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancelar"</string> <string name="consent_back" msgid="2560683030046918882">"Voltar"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Abrir <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Fechar <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Dar aos apps no dispositivo <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> as mesmas permissões do dispositivo <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml index bec6f11edf51..bee8e916349d 100644 --- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Não permitir"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancelar"</string> <string name="consent_back" msgid="2560683030046918882">"Voltar"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Expandir <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Reduzir <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Dar às apps no dispositivo <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> as mesmas autorizações de <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml index 81c50c1c9142..85c23ea7f253 100644 --- a/packages/CompanionDeviceManager/res/values-pt/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Não permitir"</string> <string name="consent_cancel" msgid="5655005528379285841">"Cancelar"</string> <string name="consent_back" msgid="2560683030046918882">"Voltar"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Abrir <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Fechar <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Dar aos apps no dispositivo <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> as mesmas permissões do dispositivo <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml index 40ae72e6f10d..6820d5b44633 100644 --- a/packages/CompanionDeviceManager/res/values-ro/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nu permite"</string> <string name="consent_cancel" msgid="5655005528379285841">"Anulează"</string> <string name="consent_back" msgid="2560683030046918882">"Înapoi"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Extinde <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Restrânge <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Acorzi aplicațiilor de pe <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> aceleași permisiuni ca pe <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml index a5b5b594608c..3213a2faa7d8 100644 --- a/packages/CompanionDeviceManager/res/values-ru/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Запретить"</string> <string name="consent_cancel" msgid="5655005528379285841">"Отмена"</string> <string name="consent_back" msgid="2560683030046918882">"Назад"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Разворачивать список \"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>\"."</string> <string name="permission_collapse" msgid="3320833884220844084">"Сворачивать список \"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>\"."</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Предоставить приложениям на устройстве <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> те же разрешения, что на устройстве <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml index cc04f4b197c9..7fd66110c10b 100644 --- a/packages/CompanionDeviceManager/res/values-si/strings.xml +++ b/packages/CompanionDeviceManager/res/values-si/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ඉඩ නොදෙන්න"</string> <string name="consent_cancel" msgid="5655005528379285841">"අවලංගු කරන්න"</string> <string name="consent_back" msgid="2560683030046918882">"ආපසු"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> විදහන්න"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> හකුළන්න"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> the හි යෙදුම්වලට <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> හි අවසරම දෙන්නද?"</string> diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml index f46252eda366..5194f215444a 100644 --- a/packages/CompanionDeviceManager/res/values-sk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Nepovoliť"</string> <string name="consent_cancel" msgid="5655005528379285841">"Zrušiť"</string> <string name="consent_back" msgid="2560683030046918882">"Späť"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Rozbaliť sekciu <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Zbaliť sekciu <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Chcete udeliť aplikáciám v zariadení <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> rovnaké povolenia ako v zariadení <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml index 0696c986d3a4..220022095677 100644 --- a/packages/CompanionDeviceManager/res/values-sl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ne dovoli"</string> <string name="consent_cancel" msgid="5655005528379285841">"Prekliči"</string> <string name="consent_back" msgid="2560683030046918882">"Nazaj"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Razširi dovoljenje »<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>«"</string> <string name="permission_collapse" msgid="3320833884220844084">"Strni dovoljenje »<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>«"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Ali želite aplikacijam v napravi <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> odobriti enaka dovoljenja kot v napravi <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml index 02f88ce11637..f683dd9e2974 100644 --- a/packages/CompanionDeviceManager/res/values-sq/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Mos lejo"</string> <string name="consent_cancel" msgid="5655005528379285841">"Anulo"</string> <string name="consent_back" msgid="2560683030046918882">"Pas"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Zgjero: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Palos: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"T\'i jepen aplikacioneve në <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> të njëjtat leje si në <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml index 5f7e53dadbae..d56800958d81 100644 --- a/packages/CompanionDeviceManager/res/values-sr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Не дозволи"</string> <string name="consent_cancel" msgid="5655005528379285841">"Откажи"</string> <string name="consent_back" msgid="2560683030046918882">"Назад"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Прошири <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Скупи <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Апликцијама на уређају <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> дајете све дозволе као на уређају <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml index a622ff4465bd..5c6f5ba65525 100644 --- a/packages/CompanionDeviceManager/res/values-sv/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Tillåt inte"</string> <string name="consent_cancel" msgid="5655005528379285841">"Avbryt"</string> <string name="consent_back" msgid="2560683030046918882">"Tillbaka"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Utöka <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Komprimera <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Vill du ge apparna på <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> samma behörigheter som de har på <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml index c0108372a318..7a1cf98832a4 100644 --- a/packages/CompanionDeviceManager/res/values-sw/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Usiruhusu"</string> <string name="consent_cancel" msgid="5655005528379285841">"Ghairi"</string> <string name="consent_back" msgid="2560683030046918882">"Nyuma"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Panua <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Kunja <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Ungependa kuzipa programu katika <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ruhusa ile ile kama kwenye <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml index 96f7d6310a07..2313cc3d3b2a 100644 --- a/packages/CompanionDeviceManager/res/values-ta/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"அனுமதிக்க வேண்டாம்"</string> <string name="consent_cancel" msgid="5655005528379285841">"ரத்துசெய்"</string> <string name="consent_back" msgid="2560683030046918882">"பின்செல்"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ஐ விரிவாக்கும்"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> ஐச் சுருக்கும்"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> சாதனத்தில் இருக்கும் அதே அனுமதிகளை <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> சாதனத்தில் உள்ள ஆப்ஸுக்கும் வழங்கவா?"</string> diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml index f353b800cc3e..eed0eeef8143 100644 --- a/packages/CompanionDeviceManager/res/values-te/strings.xml +++ b/packages/CompanionDeviceManager/res/values-te/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"అనుమతించవద్దు"</string> <string name="consent_cancel" msgid="5655005528379285841">"రద్దు చేయండి"</string> <string name="consent_back" msgid="2560683030046918882">"వెనుకకు"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>ను విస్తరించండి"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>ను కుదించండి"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>లోని యాప్లకు <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>లో ఉన్న అనుమతులను ఇవ్వాలా?"</string> diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml index 6a38c999ee4b..bf14f4c529fd 100644 --- a/packages/CompanionDeviceManager/res/values-th/strings.xml +++ b/packages/CompanionDeviceManager/res/values-th/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"ไม่อนุญาต"</string> <string name="consent_cancel" msgid="5655005528379285841">"ยกเลิก"</string> <string name="consent_back" msgid="2560683030046918882">"กลับ"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"ขยาย <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"ยุบ <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"ให้แอปใน <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> มีสิทธิ์เหมือนกับใน <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> ไหม"</string> diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml index 8d5470c68c3f..90e5eb7583e0 100644 --- a/packages/CompanionDeviceManager/res/values-tl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Huwag payagan"</string> <string name="consent_cancel" msgid="5655005528379285841">"Kanselahin"</string> <string name="consent_back" msgid="2560683030046918882">"Bumalik"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"I-expand ang <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"I-collapse ang <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Bigyan ang mga app sa <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ng mga pahintulot na mayroon din sa <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml index 86c0e46a2ea3..56997d7a09c3 100644 --- a/packages/CompanionDeviceManager/res/values-tr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"İzin verme"</string> <string name="consent_cancel" msgid="5655005528379285841">"İptal"</string> <string name="consent_back" msgid="2560683030046918882">"Geri"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> panelini genişlet"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> panelini daralt"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> cihazındaki uygulamalara, <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> cihazındakiyle aynı izinler verilsin mi?"</string> diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml index ff93a657455d..7d7b9dedde31 100644 --- a/packages/CompanionDeviceManager/res/values-uk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Не дозволяти"</string> <string name="consent_cancel" msgid="5655005528379285841">"Скасувати"</string> <string name="consent_back" msgid="2560683030046918882">"Назад"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Розгорнути дозвіл \"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>\""</string> <string name="permission_collapse" msgid="3320833884220844084">"Згорнути дозвіл \"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>\""</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Надати додаткам на пристрої <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> такі самі дозволи, що й на пристрої <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml index 8c50d8133fc0..690e439857d1 100644 --- a/packages/CompanionDeviceManager/res/values-ur/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"اجازت نہ دیں"</string> <string name="consent_cancel" msgid="5655005528379285841">"منسوخ کریں"</string> <string name="consent_back" msgid="2560683030046918882">"پیچھے"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> کو پھیلائیں"</string> <string name="permission_collapse" msgid="3320833884220844084">"<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g> کو سکیڑیں"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"ایپس کو <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> پر وہی اجازتیں دیں جو <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> پر دی گئی ہیں؟"</string> diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml index 076bb74d6bf6..e1a024c985fd 100644 --- a/packages/CompanionDeviceManager/res/values-uz/strings.xml +++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ruxsat berilmasin"</string> <string name="consent_cancel" msgid="5655005528379285841">"Bekor qilish"</string> <string name="consent_back" msgid="2560683030046918882">"Orqaga"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Yoyish: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Yopish: <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ilovalariga <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> qurilmasidagi kabi bir xil ruxsatlar berilsinmi?"</string> diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml index a44af74b1182..029331701fd7 100644 --- a/packages/CompanionDeviceManager/res/values-vi/strings.xml +++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Không cho phép"</string> <string name="consent_cancel" msgid="5655005528379285841">"Huỷ"</string> <string name="consent_back" msgid="2560683030046918882">"Quay lại"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Mở rộng <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Thu gọn <xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Cấp cho các ứng dụng trên <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> các quyền giống như trên <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml index ccc046b3c3f7..ed68dd3d08db 100644 --- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"不允许"</string> <string name="consent_cancel" msgid="5655005528379285841">"取消"</string> <string name="consent_back" msgid="2560683030046918882">"返回"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"展开<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"收起<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"要让<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>上的应用享有在<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>上的同等权限吗?"</string> diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml index 3dcaa9f7e5d6..17d3482f0dbc 100644 --- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"不允許"</string> <string name="consent_cancel" msgid="5655005528379285841">"取消"</string> <string name="consent_back" msgid="2560683030046918882">"返回"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"展開<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"收合<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> 上的應用程式可獲在 <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> 上的相同權限嗎?"</string> diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml index a96e43fb135e..542a73fc099b 100644 --- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"不允許"</string> <string name="consent_cancel" msgid="5655005528379285841">"取消"</string> <string name="consent_back" msgid="2560683030046918882">"返回"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"展開<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"收合<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"要讓「<xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g>」<strong></strong>的應用程式沿用在「<xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g>」<strong></strong>上的權限嗎?"</string> diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml index bc7bb819b1c1..b1c7a14d1210 100644 --- a/packages/CompanionDeviceManager/res/values-zu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml @@ -51,6 +51,10 @@ <string name="consent_no" msgid="2640796915611404382">"Ungavumeli"</string> <string name="consent_cancel" msgid="5655005528379285841">"Khansela"</string> <string name="consent_back" msgid="2560683030046918882">"Emuva"</string> + <!-- no translation found for downward_arrow_action (2327165938832076333) --> + <skip /> + <!-- no translation found for downward_arrow (2292427714411156088) --> + <skip /> <string name="permission_expand" msgid="893185038020887411">"Nweba i-<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_collapse" msgid="3320833884220844084">"Goqa i-<xliff:g id="PERMISSION_TYPE">%1$s</xliff:g>"</string> <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Nikeza ama-app <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> izimvume ezifanayot <strong>njengaku-<xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string> diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java index 31131297553e..dd77c6153726 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionAssociationActivity.java @@ -592,6 +592,15 @@ public class CompanionAssociationActivity extends FragmentActivity implements mDeviceListRecyclerView.setVisibility(View.VISIBLE); } + // Set accessibility action for mCancelScanLayout (wraps mButtonCancelScan) for TalkBack. + mButtonCancelScan.setAccessibilityDelegate(new View.AccessibilityDelegate() { + public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(host, info); + info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_CLICK); + } + }); + + mSummary.setVisibility(View.GONE); mButtonAllow.setVisibility(View.GONE); mButtonNotAllow.setVisibility(View.GONE); diff --git a/packages/CredentialManager/res/values-sv/strings.xml b/packages/CredentialManager/res/values-sv/strings.xml index cab499a1d68b..4bdd408da2f2 100644 --- a/packages/CredentialManager/res/values-sv/strings.xml +++ b/packages/CredentialManager/res/values-sv/strings.xml @@ -93,6 +93,6 @@ <string name="get_dialog_heading_from_another_device" msgid="1166697017046724072">"Via en annan enhet"</string> <string name="get_dialog_option_headline_use_a_different_device" msgid="8201578814988047549">"Använd en annan enhet"</string> <string name="request_cancelled_by" msgid="3735222326886267820">"Begäran avbruten av <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> - <string name="dropdown_presentation_more_sign_in_options_text" msgid="1693727354272417902">"Inloggningsalternativ"</string> + <string name="dropdown_presentation_more_sign_in_options_text" msgid="1693727354272417902">"Inloggningsalternativ"</string> <string name="more_options_content_description" msgid="1323427365788198808">"Mer"</string> </resources> diff --git a/packages/SettingsLib/IntroPreference/src/com/android/settingslib/widget/IntroPreference.kt b/packages/SettingsLib/IntroPreference/src/com/android/settingslib/widget/IntroPreference.kt index 9d037e91a86f..806580b10cc8 100644 --- a/packages/SettingsLib/IntroPreference/src/com/android/settingslib/widget/IntroPreference.kt +++ b/packages/SettingsLib/IntroPreference/src/com/android/settingslib/widget/IntroPreference.kt @@ -17,20 +17,20 @@ package com.android.settingslib.widget import android.content.Context -import android.os.Build import android.text.TextUtils import android.util.AttributeSet import android.view.View -import androidx.annotation.RequiresApi import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import com.android.settingslib.widget.preference.intro.R -class IntroPreference @JvmOverloads constructor( +class IntroPreference +@JvmOverloads +constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, - defStyleRes: Int = 0 + defStyleRes: Int = 0, ) : Preference(context, attrs, defStyleAttr, defStyleRes), GroupSectionDividerMixin { private var isCollapsable: Boolean = true @@ -66,9 +66,9 @@ class IntroPreference @JvmOverloads constructor( /** * Sets whether the summary is collapsable. + * * @param collapsable True if the summary should be collapsable, false otherwise. */ - @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) fun setCollapsable(collapsable: Boolean) { isCollapsable = collapsable minLines = if (isCollapsable) DEFAULT_MIN_LINES else DEFAULT_MAX_LINES @@ -77,9 +77,9 @@ class IntroPreference @JvmOverloads constructor( /** * Sets the minimum number of lines to display when collapsed. + * * @param lines The minimum number of lines. */ - @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) fun setMinLines(lines: Int) { minLines = lines.coerceIn(1, DEFAULT_MAX_LINES) notifyChanged() @@ -87,9 +87,9 @@ class IntroPreference @JvmOverloads constructor( /** * Sets the action when clicking on the hyperlink in the text. + * * @param listener The click listener for hyperlink. */ - @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) fun setHyperlinkListener(listener: View.OnClickListener) { if (hyperlinkListener != listener) { hyperlinkListener = listener @@ -99,9 +99,9 @@ class IntroPreference @JvmOverloads constructor( /** * Sets the action when clicking on the learn more view. + * * @param listener The click listener for learn more. */ - @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) fun setLearnMoreAction(listener: View.OnClickListener) { if (learnMoreListener != listener) { learnMoreListener = listener @@ -111,9 +111,9 @@ class IntroPreference @JvmOverloads constructor( /** * Sets the text of learn more view. + * * @param text The text of learn more. */ - @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM) fun setLearnMoreText(text: CharSequence) { if (!TextUtils.equals(learnMoreText, text)) { learnMoreText = text diff --git a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt index 1cb8005ddae0..02bef9fd2fb2 100644 --- a/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt +++ b/packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceScreenBindingHelper.kt @@ -59,8 +59,6 @@ class PreferenceScreenBindingHelper( private val preferenceHierarchy: PreferenceHierarchy, ) : KeyedDataObservable<String>() { - private val mainExecutor = HandlerExecutor.main - private val preferenceLifecycleContext = object : PreferenceLifecycleContext(context) { override val lifecycleScope: LifecycleCoroutineScope @@ -88,11 +86,11 @@ class PreferenceScreenBindingHelper( private val preferences: ImmutableMap<String, PreferenceHierarchyNode> private val dependencies: ImmutableMultimap<String, String> private val lifecycleAwarePreferences: Array<PreferenceLifecycleProvider> - private val storages = mutableMapOf<String, KeyedObservable<String>>() + private val observables = mutableMapOf<String, KeyedObservable<String>>() private val preferenceObserver: KeyedObserver<String?> - private val storageObserver = + private val observer = KeyedObserver<String> { key, reason -> if (DataChangeReason.isDataChange(reason)) { notifyChange(key, PreferenceChangeReason.VALUE) @@ -133,15 +131,19 @@ class PreferenceScreenBindingHelper( this.dependencies = dependenciesBuilder.build() this.lifecycleAwarePreferences = lifecycleAwarePreferences.toTypedArray() + val executor = HandlerExecutor.main preferenceObserver = KeyedObserver { key, reason -> onPreferenceChange(key, reason) } - addObserver(preferenceObserver, mainExecutor) + addObserver(preferenceObserver, executor) preferenceScreen.forEachRecursively { - it.preferenceDataStore?.findKeyValueStore()?.let { keyValueStore -> - val key = it.key - storages[key] = keyValueStore - keyValueStore.addObserver(key, storageObserver, mainExecutor) - } + val key = it.key ?: return@forEachRecursively + @Suppress("UNCHECKED_CAST") + val observable = + it.preferenceDataStore?.findKeyValueStore() + ?: (preferences[key]?.metadata as? KeyedObservable<String>) + ?: return@forEachRecursively + observables[key] = observable + observable.addObserver(key, observer, executor) } } @@ -212,7 +214,7 @@ class PreferenceScreenBindingHelper( fun onDestroy() { removeObserver(preferenceObserver) - for ((key, storage) in storages) storage.removeObserver(key, storageObserver) + for ((key, observable) in observables) observable.removeObserver(key, observer) for (preference in lifecycleAwarePreferences) { preference.onDestroy(preferenceLifecycleContext) } diff --git a/packages/SettingsLib/SelectorWithWidgetPreference/res/layout-v36/preference_selector_with_widget.xml b/packages/SettingsLib/SelectorWithWidgetPreference/res/layout-v36/preference_selector_with_widget.xml new file mode 100644 index 000000000000..a79d69dbff8c --- /dev/null +++ b/packages/SettingsLib/SelectorWithWidgetPreference/res/layout-v36/preference_selector_with_widget.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2025 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:settings="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackground" + android:gravity="center_vertical" + android:minHeight="?android:attr/listPreferredItemHeightSmall" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"> + + <LinearLayout + android:id="@android:id/widget_frame" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:paddingEnd="@dimen/settingslib_expressive_space_extrasmall6" + android:gravity="center" + android:minWidth="32dp" + android:orientation="vertical"/> + + <LinearLayout + android:id="@+id/icon_frame" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minWidth="32dp" + android:orientation="horizontal" + android:layout_marginEnd="@dimen/settingslib_expressive_space_small1" + android:paddingTop="@dimen/settingslib_expressive_space_extrasmall2" + android:paddingBottom="@dimen/settingslib_expressive_space_extrasmall2"> + <androidx.preference.internal.PreferenceImageView + android:id="@android:id/icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + settings:maxWidth="@dimen/secondary_app_icon_size" + settings:maxHeight="@dimen/secondary_app_icon_size"/> + </LinearLayout> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" + android:paddingTop="@dimen/settingslib_expressive_space_small1" + android:paddingBottom="@dimen/settingslib_expressive_space_small1" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"> + + <TextView + android:id="@android:id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:maxLines="2" + android:ellipsize="end" + android:hyphenationFrequency="normalFast" + android:lineBreakWordStyle="phrase" + android:textAppearance="?android:attr/textAppearanceListItem"/> + + <LinearLayout + android:id="@+id/summary_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone"> + <TextView + android:id="@android:id/summary" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textAlignment="viewStart" + android:hyphenationFrequency="normalFast" + android:lineBreakWordStyle="phrase" + android:textColor="?android:attr/textColorSecondary"/> + + <TextView + android:id="@+id/appendix" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textAlignment="viewEnd" + android:textColor="?android:attr/textColorSecondary" + android:maxLines="1" + android:visibility="gone" + android:ellipsize="end"/> + </LinearLayout> + </LinearLayout> + + <LinearLayout + android:id="@+id/selector_extra_widget_container" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:orientation="horizontal" + android:gravity="center_vertical"> + <View + android:layout_width=".75dp" + android:layout_height="32dp" + android:layout_marginTop="@dimen/settingslib_expressive_space_small1" + android:layout_marginBottom="@dimen/settingslib_expressive_space_small1" + android:background="?android:attr/dividerVertical"/> + <ImageView + android:id="@+id/selector_extra_widget" + android:layout_width="match_parent" + android:minWidth="@dimen/two_target_min_width" + android:layout_height="fill_parent" + android:src="@drawable/ic_settings_accent" + android:contentDescription="@string/settings_label" + android:paddingStart="@dimen/settingslib_expressive_space_small4" + android:paddingEnd="@dimen/settingslib_expressive_space_small4" + android:layout_gravity="center" + android:background="?android:attr/selectableItemBackground"/> + </LinearLayout> +</LinearLayout> diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml index 3ccbbc063064..2d6b6cf91494 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml @@ -28,6 +28,7 @@ <item name="switchStyle">@style/SwitchCompat.SettingsLib</item> <item name="android:progressBarStyleHorizontal">@style/HorizontalProgressBar.SettingsLib</item> <item name="android:listDivider">@drawable/settingslib_list_divider</item> + <item name="android:colorBackground">@color/settingslib_materialColorSurfaceContainerLowest</item> </style> <style name="Theme.SettingsBase" parent="Theme.SettingsBase_v31" /> diff --git a/packages/SettingsLib/Spa/OWNERS b/packages/SettingsLib/Spa/OWNERS index 67386d170a0d..d2941dee4e2e 100644 --- a/packages/SettingsLib/Spa/OWNERS +++ b/packages/SettingsLib/Spa/OWNERS @@ -1,9 +1,6 @@ include platform/frameworks/base:/packages/SettingsLib/OWNERS +zhibinliu@google.com chaohuiw@google.com -hanxu@google.com -kellyz@google.com pierreqian@google.com -lijun@google.com -songchenxi@google.com -cyl@google.com +lijun@google.com
\ No newline at end of file diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_actionButtons.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_actionButtons.png Binary files differindex b2f3cf1fe737..65418b938aeb 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_actionButtons.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_actionButtons.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_mainSwitchPreference.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_mainSwitchPreference.png Binary files differindex 75c8e6efd2e2..c9091fb2702b 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_mainSwitchPreference.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_mainSwitchPreference.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_spinner.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_spinner.png Binary files differindex 06f0059ef547..cdc1e790bb55 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_spinner.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_landscape_spinner.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_actionButtons.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_actionButtons.png Binary files differindex fa069275dbd4..614fbe9db37c 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_actionButtons.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_actionButtons.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_imageIllustration.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_imageIllustration.png Binary files differindex a5f3fa5063d6..ce1257f15e82 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_imageIllustration.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_imageIllustration.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_mainSwitchPreference.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_mainSwitchPreference.png Binary files differindex b72c8db9debc..6b1233cc0305 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_mainSwitchPreference.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_mainSwitchPreference.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_slider.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_slider.png Binary files differindex 928e9268292b..782957d5d2d3 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_slider.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_slider.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_spinner.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_spinner.png Binary files differindex 06f0059ef547..cdc1e790bb55 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_spinner.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/phone/light_portrait_spinner.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_actionButtons.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_actionButtons.png Binary files differindex 63983eeacb8f..427f202f100c 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_actionButtons.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_actionButtons.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_barChart.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_barChart.png Binary files differindex 8fcc350804a3..e372f7b5625b 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_barChart.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_barChart.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_footer.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_footer.png Binary files differindex c2f6165daefc..1ed1efcce86a 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_footer.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_footer.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_imageIllustration.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_imageIllustration.png Binary files differindex f32d7421b028..6283dd160d2c 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_imageIllustration.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_imageIllustration.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_lineChart.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_lineChart.png Binary files differindex 6659d7ccca2f..a4eb19e0ac6c 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_lineChart.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_lineChart.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_mainSwitchPreference.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_mainSwitchPreference.png Binary files differindex 15c86dc67736..bd1bb28c5e9c 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_mainSwitchPreference.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_mainSwitchPreference.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_pieChart.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_pieChart.png Binary files differindex 7b6e702616de..d0d5ac1f14e8 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_pieChart.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_pieChart.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_preference.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_preference.png Binary files differindex cd44fb8a9c0c..5cf73819e590 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_preference.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_preference.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_progressBar.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_progressBar.png Binary files differindex d31f2c4dcb5c..96f614c7825e 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_progressBar.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_progressBar.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_slider.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_slider.png Binary files differindex 8a2b80031615..3cbe71513e12 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_slider.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_slider.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_spinner.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_spinner.png Binary files differindex 5be3a217ec91..f151798b0d4e 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_spinner.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_spinner.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_switchPreference.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_switchPreference.png Binary files differindex 9aee004cca79..218e8e3d5244 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_switchPreference.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_switchPreference.png diff --git a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_twoTargetSwitchPreference.png b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_twoTargetSwitchPreference.png Binary files differindex cc74aac45961..44b32e2cf5f9 100644 --- a/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_twoTargetSwitchPreference.png +++ b/packages/SettingsLib/Spa/screenshot/robotests/assets/tablet/dark_portrait_twoTargetSwitchPreference.png diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/TimeMeasurer.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/TimeMeasurer.kt index b23f4e083a1e..ef2745c74abb 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/TimeMeasurer.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/TimeMeasurer.kt @@ -14,14 +14,11 @@ * limitations under the License. */ -@file:OptIn(ExperimentalTime::class) - package com.android.settingslib.spa.framework.compose import android.util.Log import androidx.compose.runtime.Composable import androidx.compose.runtime.remember -import kotlin.time.ExperimentalTime import kotlin.time.TimeSource const val ENABLE_MEASURE_TIME = false diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/BaseLayout.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/BaseLayout.kt index b1bb79d61b03..068ff068cc63 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/BaseLayout.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/preference/BaseLayout.kt @@ -87,15 +87,28 @@ internal fun BaseLayout( @Composable internal fun BaseIcon(icon: @Composable (() -> Unit)?, modifier: Modifier, paddingStart: Dp) { - if (icon != null) { - Box( - modifier = modifier.size(SettingsDimension.itemIconContainerSize), - contentAlignment = Alignment.Center, - ) { - icon() + if (isSpaExpressiveEnabled) { + Spacer(modifier = Modifier.width(width = paddingStart)) + if (icon != null) { + Box( + modifier = modifier.size(SettingsDimension.itemIconContainerSizeSmall), + contentAlignment = Alignment.Center, + ) { + icon() + } + Spacer(modifier = Modifier.width(width = SettingsDimension.paddingExtraSmall6)) } } else { - Spacer(modifier = Modifier.width(width = paddingStart)) + if (icon != null) { + Box( + modifier = modifier.size(SettingsDimension.itemIconContainerSize), + contentAlignment = Alignment.Center, + ) { + icon() + } + } else { + Spacer(modifier = Modifier.width(width = paddingStart)) + } } } diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index e2487d7ec7b4..5fbab96a6a01 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -386,8 +386,7 @@ <string name="debug_hw_drawing_category" msgid="5830815169336975162">"عرض تسارع الأجهزة"</string> <string name="media_category" msgid="8122076702526144053">"الوسائط"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"المراقبة"</string> - <!-- no translation found for window_management_category (2015535427098365170) --> - <skip /> + <string name="window_management_category" msgid="2015535427098365170">"إدارة النوافذ"</string> <string name="strict_mode" msgid="889864762140862437">"تفعيل الوضع المتشدد"</string> <string name="strict_mode_summary" msgid="1838248687233554654">"وميض الشاشة عند إجراء التطبيقات عمليات طويلة في سلسلة المحادثات الرئيسية"</string> <string name="pointer_location" msgid="7516929526199520173">"موقع المؤشر"</string> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index 986c40f26df7..ef1448316f26 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -81,7 +81,7 @@ <string name="speed_label_fast" msgid="2677719134596044051">"Hurtig"</string> <string name="speed_label_very_fast" msgid="8215718029533182439">"Meget hurtig"</string> <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Udløbet"</string> - <string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> – <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> + <string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g> / <xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> <string name="bluetooth_disconnected" msgid="7739366554710388701">"Afbrudt"</string> <string name="bluetooth_disconnecting" msgid="7638892134401574338">"Afbryder ..."</string> <string name="bluetooth_connecting" msgid="5871702668260192755">"Opretter forbindelse..."</string> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index d4c0773ae5f0..c39521f8776f 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -386,8 +386,7 @@ <string name="debug_hw_drawing_category" msgid="5830815169336975162">"עיבוד מואץ של חומרה"</string> <string name="media_category" msgid="8122076702526144053">"מדיה"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"מעקב"</string> - <!-- no translation found for window_management_category (2015535427098365170) --> - <skip /> + <string name="window_management_category" msgid="2015535427098365170">"ניהול החלונות"</string> <string name="strict_mode" msgid="889864762140862437">"מצב קפדני מופעל"</string> <string name="strict_mode_summary" msgid="1838248687233554654">"המסך יהבהב כשאפליקציות יבצעו פעולות ארוכות ב-thread הראשי"</string> <string name="pointer_location" msgid="7516929526199520173">"מיקום מצביע"</string> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 79be6b314ef8..aed9b06d5037 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -113,17 +113,17 @@ <string name="bluetooth_hearing_device_ambient_error" msgid="6035857289108813878">"Nie udało się zaktualizować otoczenia"</string> <string name="bluetooth_active_media_only_battery_level" msgid="7772517511061834073">"Aktywne (tylko multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> <string name="bluetooth_active_media_only_battery_level_untethered" msgid="7444753133664620926">"Aktywne (tylko multimedia), lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string> - <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Urządzenie gościa. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> - <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Urządzenie gościa. Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string> - <string name="bluetooth_guest_media_only_battery_level" msgid="7928347900623812299">"Urządzenie gościa (tylko multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> - <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Urządzenie gościa (tylko multimedia). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string> + <string name="bluetooth_guest_battery_level" msgid="2820003593899467676">"Urządzenie gościa. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterii."</string> + <string name="bluetooth_guest_battery_level_untethered" msgid="5404013822067644960">"Urządzenie gościa. Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterii."</string> + <string name="bluetooth_guest_media_only_battery_level" msgid="7928347900623812299">"Urządzenie gościa (tylko multimedia). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterii."</string> + <string name="bluetooth_guest_media_only_battery_level_untethered" msgid="4458143141394300892">"Urządzenie gościa (tylko multimedia). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterii."</string> <string name="bluetooth_battery_level_lea_support" msgid="5968584103507988820">"Połączone (obsługa udostępniania dźwięku), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> <string name="bluetooth_battery_level_untethered_lea_support" msgid="803110681688633362">"Połączone (obsługa udostępniania dźwięku), lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string> <string name="bluetooth_battery_level_untethered_left_lea_support" msgid="7707464334346454950">"Połączone (obsługa udostępniania dźwięku). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> <string name="bluetooth_battery_level_untethered_right_lea_support" msgid="8941549024377771038">"Połączone (obsługa udostępniania dźwięku). Prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> <string name="bluetooth_no_battery_level_lea_support" msgid="5721725041048434075">"Połączone (obsługa udostępniania dźwięku)"</string> - <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Urządzenie gościa (obsługuje udostępnianie dźwięku). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii."</string> - <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Urządzenie gościa (obsługuje udostępnianie dźwięku). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> naładowania baterii."</string> + <string name="bluetooth_guest_battery_level_lea_support" msgid="8098327939585013928">"Urządzenie gościa (obsługuje udostępnianie dźwięku). <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterii."</string> + <string name="bluetooth_guest_battery_level_untethered_lea_support" msgid="3701035025565668360">"Urządzenie gościa (obsługuje udostępnianie dźwięku). Lewa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, prawa: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterii."</string> <string name="bluetooth_guest_no_battery_level_lea_support" msgid="2977038548753103470">"Urządzenie gościa (obsługuje udostępnianie dźwięku)"</string> <string name="bluetooth_active_media_only_no_battery_level" msgid="71106861912593126">"Aktywne (tylko multimedia)"</string> <string name="bluetooth_guest_no_battery_level" msgid="9122974160381136920">"Urządzenie gościa"</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java index ebd5a1deffd2..3625c002e9d8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java @@ -29,6 +29,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.UserHandle; +import android.os.UserManager; import android.telephony.TelephonyManager; import android.util.Log; @@ -37,6 +38,8 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; +import com.android.settingslib.flags.Flags; +import com.android.settingslib.utils.ThreadUtils; import java.util.Collection; import java.util.HashMap; @@ -65,6 +68,7 @@ public class BluetoothEventManager { private final android.os.Handler mReceiverHandler; private final UserHandle mUserHandle; private final Context mContext; + private boolean mIsWorkProfile = false; interface Handler { void onReceive(Context context, Intent intent, BluetoothDevice device); @@ -140,6 +144,9 @@ public class BluetoothEventManager { addHandler(BluetoothAdapter.ACTION_AUTO_ON_STATE_CHANGED, new AutoOnStateChangedHandler()); registerAdapterIntentReceiver(); + + UserManager userManager = context.getSystemService(UserManager.class); + mIsWorkProfile = userManager != null && userManager.isManagedProfile(); } /** Register to start receiving callbacks for Bluetooth events. */ @@ -220,20 +227,32 @@ public class BluetoothEventManager { callback.onProfileConnectionStateChanged(device, state, bluetoothProfile); } + if (mIsWorkProfile) { + Log.d(TAG, "Skip profileConnectionStateChanged for audio sharing, work profile"); + return; + } + + LocalBluetoothLeBroadcast broadcast = mBtManager == null ? null + : mBtManager.getProfileManager().getLeAudioBroadcastProfile(); + LocalBluetoothLeBroadcastAssistant assistant = mBtManager == null ? null + : mBtManager.getProfileManager().getLeAudioBroadcastAssistantProfile(); // Trigger updateFallbackActiveDeviceIfNeeded when ASSISTANT profile disconnected when // audio sharing is enabled. if (bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT && state == BluetoothAdapter.STATE_DISCONNECTED - && BluetoothUtils.isAudioSharingUIAvailable(mContext)) { - LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager(); - if (profileManager != null - && profileManager.getLeAudioBroadcastProfile() != null - && profileManager.getLeAudioBroadcastProfile().isProfileReady() - && profileManager.getLeAudioBroadcastAssistantProfile() != null - && profileManager.getLeAudioBroadcastAssistantProfile().isProfileReady()) { - Log.d(TAG, "updateFallbackActiveDeviceIfNeeded, ASSISTANT profile disconnected"); - profileManager.getLeAudioBroadcastProfile().updateFallbackActiveDeviceIfNeeded(); - } + && BluetoothUtils.isAudioSharingUIAvailable(mContext) + && broadcast != null && assistant != null && broadcast.isProfileReady() + && assistant.isProfileReady()) { + Log.d(TAG, "updateFallbackActiveDeviceIfNeeded, ASSISTANT profile disconnected"); + broadcast.updateFallbackActiveDeviceIfNeeded(); + } + // Dispatch handleOnProfileStateChanged to local broadcast profile + if (Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice() + && broadcast != null + && state == BluetoothAdapter.STATE_CONNECTED) { + Log.d(TAG, "dispatchProfileConnectionStateChanged to local broadcast profile"); + var unused = ThreadUtils.postOnBackgroundThread( + () -> broadcast.handleProfileConnected(device, bluetoothProfile, mBtManager)); } } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java index 31948e49b4ce..e78a69239334 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java @@ -719,6 +719,30 @@ public class BluetoothUtils { } } + /** Check if the {@link CachedBluetoothDevice} is a media device */ + @WorkerThread + public static boolean isMediaDevice(@Nullable CachedBluetoothDevice cachedDevice) { + if (cachedDevice == null) return false; + return cachedDevice.getProfiles().stream() + .anyMatch( + profile -> + profile instanceof A2dpProfile + || profile instanceof HearingAidProfile + || profile instanceof LeAudioProfile + || profile instanceof HeadsetProfile); + } + + /** Check if the {@link CachedBluetoothDevice} supports LE Audio profile */ + @WorkerThread + public static boolean isLeAudioSupported(@Nullable CachedBluetoothDevice cachedDevice) { + if (cachedDevice == null) return false; + return cachedDevice.getProfiles().stream() + .anyMatch( + profile -> + profile instanceof LeAudioProfile + && profile.isEnabled(cachedDevice.getDevice())); + } + /** Returns if the broadcast is on-going. */ @WorkerThread public static boolean isBroadcasting(@Nullable LocalBluetoothManager manager) { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java index f18a2da27a70..08f7806207db 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothLeBroadcast.java @@ -54,6 +54,7 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import androidx.annotation.WorkerThread; import com.android.settingslib.R; import com.android.settingslib.flags.Flags; @@ -64,6 +65,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -107,6 +109,7 @@ public class LocalBluetoothLeBroadcast implements LocalBluetoothProfile { private static final String SETTINGS_PKG = "com.android.settings"; private static final String SYSUI_PKG = "com.android.systemui"; private static final String TAG = "LocalBluetoothLeBroadcast"; + private static final String AUTO_REJOIN_BROADCAST_TAG = "REJOIN_LE_BROADCAST_ID"; private static final boolean DEBUG = BluetoothUtils.D; private static final String VALID_PASSWORD_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{}|;:," @@ -120,6 +123,7 @@ public class LocalBluetoothLeBroadcast implements LocalBluetoothProfile { // Order of this profile in device profiles list private static final int ORDINAL = 1; static final int UNKNOWN_VALUE_PLACEHOLDER = -1; + private static final int JUST_BOND_MILLIS_THRESHOLD = 30000; // 30s private static final Uri[] SETTINGS_URIS = new Uri[] { Settings.Secure.getUriFor(Settings.Secure.BLUETOOTH_LE_BROADCAST_NAME), @@ -1283,4 +1287,87 @@ public class LocalBluetoothLeBroadcast implements LocalBluetoothProfile { UserManager userManager = context.getSystemService(UserManager.class); return userManager != null && userManager.isManagedProfile(); } + + /** Handle profile connected for {@link CachedBluetoothDevice}. */ + @WorkerThread + public void handleProfileConnected(@NonNull CachedBluetoothDevice cachedDevice, + int bluetoothProfile, @Nullable LocalBluetoothManager btManager) { + if (!Flags.promoteAudioSharingForSecondAutoConnectedLeaDevice()) { + Log.d(TAG, "Skip handleProfileConnected, flag off"); + return; + } + if (!SYSUI_PKG.equals(mContext.getPackageName())) { + Log.d(TAG, "Skip handleProfileConnected, not a valid caller"); + return; + } + if (!BluetoothUtils.isMediaDevice(cachedDevice)) { + Log.d(TAG, "Skip handleProfileConnected, not a media device"); + return; + } + Timestamp bondTimestamp = cachedDevice.getBondTimestamp(); + if (bondTimestamp != null) { + long diff = System.currentTimeMillis() - bondTimestamp.getTime(); + if (diff <= JUST_BOND_MILLIS_THRESHOLD) { + Log.d(TAG, "Skip handleProfileConnected, just bond within " + diff); + return; + } + } + if (!isEnabled(null)) { + Log.d(TAG, "Skip handleProfileConnected, not broadcasting"); + return; + } + BluetoothDevice device = cachedDevice.getDevice(); + if (device == null) { + Log.d(TAG, "Skip handleProfileConnected, null device"); + return; + } + // TODO: sync source in a reasonable place + if (BluetoothUtils.hasConnectedBroadcastSourceForBtDevice(device, btManager)) { + Log.d(TAG, "Skip handleProfileConnected, already has source"); + return; + } + if (isAutoRejoinDevice(device)) { + Log.d(TAG, "Skip handleProfileConnected, auto rejoin device"); + return; + } + boolean isLeAudioSupported = BluetoothUtils.isLeAudioSupported(cachedDevice); + // For eligible (LE audio) remote device, we only check assistant profile connected. + if (isLeAudioSupported + && bluetoothProfile != BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT) { + Log.d(TAG, "Skip handleProfileConnected, lea sink, not the assistant profile"); + return; + } + boolean isFirstConnectedProfile = isFirstConnectedProfile(cachedDevice, bluetoothProfile); + // For ineligible (classic) remote device, we only check its first connected profile. + if (!isLeAudioSupported && !isFirstConnectedProfile) { + Log.d(TAG, "Skip handleProfileConnected, classic sink, not the first profile"); + return; + } + + Intent intent = new Intent( + LocalBluetoothLeBroadcast.ACTION_LE_AUDIO_SHARING_DEVICE_CONNECTED); + intent.putExtra(LocalBluetoothLeBroadcast.EXTRA_BLUETOOTH_DEVICE, device); + intent.setPackage(SETTINGS_PKG); + Log.d(TAG, "notify device connected, device = " + device.getAnonymizedAddress()); + + mContext.sendBroadcast(intent); + } + + private boolean isAutoRejoinDevice(@Nullable BluetoothDevice bluetoothDevice) { + String metadataValue = BluetoothUtils.getFastPairCustomizedField(bluetoothDevice, + AUTO_REJOIN_BROADCAST_TAG); + return getLatestBroadcastId() != UNKNOWN_VALUE_PLACEHOLDER && Objects.equals(metadataValue, + String.valueOf(getLatestBroadcastId())); + } + + private boolean isFirstConnectedProfile(@Nullable CachedBluetoothDevice cachedDevice, + int bluetoothProfile) { + if (cachedDevice == null) return false; + return cachedDevice.getProfiles().stream() + .noneMatch( + profile -> + profile.getProfileId() != bluetoothProfile + && profile.getConnectionStatus(cachedDevice.getDevice()) + == BluetoothProfile.STATE_CONNECTED); + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/qrcode/QrCamera.java b/packages/SettingsLib/src/com/android/settingslib/qrcode/QrCamera.java index ae17acb5104b..8bb41ccf9600 100644 --- a/packages/SettingsLib/src/com/android/settingslib/qrcode/QrCamera.java +++ b/packages/SettingsLib/src/com/android/settingslib/qrcode/QrCamera.java @@ -16,8 +16,8 @@ package com.android.settingslib.qrcode; +import android.annotation.NonNull; import android.content.Context; -import android.content.res.Configuration; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.SurfaceTexture; @@ -75,12 +75,29 @@ public class QrCamera extends Handler { @VisibleForTesting Camera mCamera; + Camera.CameraInfo mCameraInfo; + + /** + * The size of the preview image as requested to camera, e.g. 1920x1080. + */ private Size mPreviewSize; + + /** + * Whether the preview image would be displayed in "portrait" (width less + * than height) orientation in current display orientation. + * + * Note that we don't distinguish between a rotation of 90 degrees or 270 + * degrees here, since we center crop all the preview. + * + * TODO: Handle external camera / multiple display, this likely requires + * migrating to newer Camera2 API. + */ + private boolean mPreviewInPortrait; + private WeakReference<Context> mContext; private ScannerCallback mScannerCallback; private MultiFormatReader mReader; private DecodingTask mDecodeTask; - private int mCameraOrientation; @VisibleForTesting Camera.Parameters mParameters; @@ -152,8 +169,14 @@ public class QrCamera extends Handler { * @param previewSize Is the preview size set by camera * @param cameraOrientation Is the orientation of current Camera * @return The rectangle would like to crop from the camera preview shot. + * @deprecated This is no longer used, and the frame position is + * automatically calculated from the preview size and the + * background View size. */ - Rect getFramePosition(Size previewSize, int cameraOrientation); + @Deprecated + default @NonNull Rect getFramePosition(@NonNull Size previewSize, int cameraOrientation) { + throw new AssertionError("getFramePosition shouldn't be used"); + } /** * Sets the transform to associate with preview area. @@ -172,6 +195,41 @@ public class QrCamera extends Handler { boolean isValid(String qrCode); } + private boolean setPreviewDisplayOrientation() { + if (mContext.get() == null) { + return false; + } + + final WindowManager winManager = + (WindowManager) mContext.get().getSystemService(Context.WINDOW_SERVICE); + final int rotation = winManager.getDefaultDisplay().getRotation(); + int degrees = 0; + switch (rotation) { + case Surface.ROTATION_0: + degrees = 0; + break; + case Surface.ROTATION_90: + degrees = 90; + break; + case Surface.ROTATION_180: + degrees = 180; + break; + case Surface.ROTATION_270: + degrees = 270; + break; + } + int rotateDegrees = 0; + if (mCameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { + rotateDegrees = (mCameraInfo.orientation + degrees) % 360; + rotateDegrees = (360 - rotateDegrees) % 360; // compensate the mirror + } else { + rotateDegrees = (mCameraInfo.orientation - degrees + 360) % 360; + } + mCamera.setDisplayOrientation(rotateDegrees); + mPreviewInPortrait = (rotateDegrees == 90 || rotateDegrees == 270); + return true; + } + @VisibleForTesting void setCameraParameter() { mParameters = mCamera.getParameters(); @@ -195,37 +253,39 @@ public class QrCamera extends Handler { mCamera.setParameters(mParameters); } - private boolean startPreview() { - if (mContext.get() == null) { - return false; - } + /** + * Set transform matrix to crop and center the preview picture. + */ + private void setTransformationMatrix() { + final Size previewDisplaySize = rotateIfPortrait(mPreviewSize); + final Size viewSize = mScannerCallback.getViewSize(); + final Rect cropRegion = calculateCenteredCrop(previewDisplaySize, viewSize); - final WindowManager winManager = - (WindowManager) mContext.get().getSystemService(Context.WINDOW_SERVICE); - final int rotation = winManager.getDefaultDisplay().getRotation(); - int degrees = 0; - switch (rotation) { - case Surface.ROTATION_0: - degrees = 0; - break; - case Surface.ROTATION_90: - degrees = 90; - break; - case Surface.ROTATION_180: - degrees = 180; - break; - case Surface.ROTATION_270: - degrees = 270; - break; - } - final int rotateDegrees = (mCameraOrientation - degrees + 360) % 360; - mCamera.setDisplayOrientation(rotateDegrees); + // Note that strictly speaking, since the preview is mirrored in front + // camera case, we should also mirror the crop region here. But since + // we're cropping at the center, mirroring would result in the same + // crop region other than small off-by-one error from floating point + // calculation and wouldn't be noticeable. + + // Calculate transformation matrix. + float scaleX = previewDisplaySize.getWidth() / (float) cropRegion.width(); + float scaleY = previewDisplaySize.getHeight() / (float) cropRegion.height(); + float translateX = -cropRegion.left / (float) cropRegion.width() * viewSize.getWidth(); + float translateY = -cropRegion.top / (float) cropRegion.height() * viewSize.getHeight(); + + // Set the transform matrix. + final Matrix matrix = new Matrix(); + matrix.setScale(scaleX, scaleY); + matrix.postTranslate(translateX, translateY); + mScannerCallback.setTransform(matrix); + } + + private void startPreview() { mCamera.startPreview(); if (Camera.Parameters.FOCUS_MODE_AUTO.equals(mParameters.getFocusMode())) { mCamera.autoFocus(/* Camera.AutoFocusCallback */ null); sendMessageDelayed(obtainMessage(MSG_AUTO_FOCUS), AUTOFOCUS_INTERVAL_MS); } - return true; } private class DecodingTask extends AsyncTask<Void, Void, String> { @@ -300,7 +360,7 @@ public class QrCamera extends Handler { if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) { releaseCamera(); mCamera = Camera.open(i); - mCameraOrientation = cameraInfo.orientation; + mCameraInfo = cameraInfo; break; } } @@ -309,7 +369,7 @@ public class QrCamera extends Handler { Camera.getCameraInfo(0, cameraInfo); releaseCamera(); mCamera = Camera.open(0); - mCameraOrientation = cameraInfo.orientation; + mCameraInfo = cameraInfo; } } catch (RuntimeException e) { Log.e(TAG, "Fail to open camera: " + e); @@ -323,11 +383,12 @@ public class QrCamera extends Handler { throw new IOException("Cannot find available camera"); } mCamera.setPreviewTexture(surface); + if (!setPreviewDisplayOrientation()) { + throw new IOException("Lost context"); + } setCameraParameter(); setTransformationMatrix(); - if (!startPreview()) { - throw new IOException("Lost contex"); - } + startPreview(); } catch (IOException ioe) { Log.e(TAG, "Fail to startPreview camera: " + ioe); mCamera = null; @@ -345,32 +406,30 @@ public class QrCamera extends Handler { } } - /** Set transform matrix to crop and center the preview picture */ - private void setTransformationMatrix() { - final boolean isPortrait = mContext.get().getResources().getConfiguration().orientation - == Configuration.ORIENTATION_PORTRAIT; - - final int previewWidth = isPortrait ? mPreviewSize.getWidth() : mPreviewSize.getHeight(); - final int previewHeight = isPortrait ? mPreviewSize.getHeight() : mPreviewSize.getWidth(); - final float ratioPreview = (float) getRatio(previewWidth, previewHeight); - - // Calculate transformation matrix. - float scaleX = 1.0f; - float scaleY = 1.0f; - if (previewWidth > previewHeight) { - scaleY = scaleX / ratioPreview; + /** + * Calculates the crop region in `previewSize` to have the same aspect + * ratio as `viewSize` and center aligned. + */ + private Rect calculateCenteredCrop(Size previewSize, Size viewSize) { + final double previewRatio = getRatio(previewSize); + final double viewRatio = getRatio(viewSize); + int width; + int height; + if (previewRatio > viewRatio) { + width = previewSize.getWidth(); + height = (int) Math.round(width * viewRatio); } else { - scaleX = scaleY / ratioPreview; + height = previewSize.getHeight(); + width = (int) Math.round(height / viewRatio); } - - // Set the transform matrix. - final Matrix matrix = new Matrix(); - matrix.setScale(scaleX, scaleY); - mScannerCallback.setTransform(matrix); + final int left = (previewSize.getWidth() - width) / 2; + final int top = (previewSize.getHeight() - height) / 2; + return new Rect(left, top, left + width, top + height); } private QrYuvLuminanceSource getFrameImage(byte[] imageData) { - final Rect frame = mScannerCallback.getFramePosition(mPreviewSize, mCameraOrientation); + final Size viewSize = mScannerCallback.getViewSize(); + final Rect frame = calculateCenteredCrop(mPreviewSize, rotateIfPortrait(viewSize)); final QrYuvLuminanceSource image = new QrYuvLuminanceSource(imageData, mPreviewSize.getWidth(), mPreviewSize.getHeight()); return (QrYuvLuminanceSource) @@ -398,17 +457,18 @@ public class QrCamera extends Handler { */ private Size getBestPreviewSize(Camera.Parameters parameters) { final double minRatioDiffPercent = 0.1; - final Size windowSize = mScannerCallback.getViewSize(); - final double winRatio = getRatio(windowSize.getWidth(), windowSize.getHeight()); + final Size viewSize = rotateIfPortrait(mScannerCallback.getViewSize()); + final double viewRatio = getRatio(viewSize); double bestChoiceRatio = 0; Size bestChoice = new Size(0, 0); for (Camera.Size size : parameters.getSupportedPreviewSizes()) { - double ratio = getRatio(size.width, size.height); + final Size newSize = toAndroidSize(size); + final double ratio = getRatio(newSize); if (size.height * size.width > bestChoice.getWidth() * bestChoice.getHeight() - && (Math.abs(bestChoiceRatio - winRatio) / winRatio > minRatioDiffPercent - || Math.abs(ratio - winRatio) / winRatio <= minRatioDiffPercent)) { - bestChoice = new Size(size.width, size.height); - bestChoiceRatio = getRatio(size.width, size.height); + && (Math.abs(bestChoiceRatio - viewRatio) / viewRatio > minRatioDiffPercent + || Math.abs(ratio - viewRatio) / viewRatio <= minRatioDiffPercent)) { + bestChoice = newSize; + bestChoiceRatio = ratio; } } return bestChoice; @@ -419,25 +479,26 @@ public class QrCamera extends Handler { * picture size and aspect ratio to choose the best one. */ private Size getBestPictureSize(Camera.Parameters parameters) { - final Camera.Size previewSize = parameters.getPreviewSize(); - final double previewRatio = getRatio(previewSize.width, previewSize.height); + final Size previewSize = mPreviewSize; + final double previewRatio = getRatio(previewSize); List<Size> bestChoices = new ArrayList<>(); final List<Size> similarChoices = new ArrayList<>(); // Filter by ratio - for (Camera.Size size : parameters.getSupportedPictureSizes()) { - double ratio = getRatio(size.width, size.height); + for (Camera.Size picSize : parameters.getSupportedPictureSizes()) { + final Size size = toAndroidSize(picSize); + final double ratio = getRatio(size); if (ratio == previewRatio) { - bestChoices.add(new Size(size.width, size.height)); + bestChoices.add(size); } else if (Math.abs(ratio - previewRatio) < MAX_RATIO_DIFF) { - similarChoices.add(new Size(size.width, size.height)); + similarChoices.add(size); } } if (bestChoices.size() == 0 && similarChoices.size() == 0) { Log.d(TAG, "No proper picture size, return default picture size"); Camera.Size defaultPictureSize = parameters.getPictureSize(); - return new Size(defaultPictureSize.width, defaultPictureSize.height); + return toAndroidSize(defaultPictureSize); } if (bestChoices.size() == 0) { @@ -447,7 +508,7 @@ public class QrCamera extends Handler { // Get the best by area int bestAreaDifference = Integer.MAX_VALUE; Size bestChoice = null; - final int previewArea = previewSize.width * previewSize.height; + final int previewArea = previewSize.getWidth() * previewSize.getHeight(); for (Size size : bestChoices) { int areaDifference = Math.abs(size.getWidth() * size.getHeight() - previewArea); if (areaDifference < bestAreaDifference) { @@ -458,8 +519,20 @@ public class QrCamera extends Handler { return bestChoice; } - private double getRatio(double x, double y) { - return (x < y) ? x / y : y / x; + private Size rotateIfPortrait(Size size) { + if (mPreviewInPortrait) { + return new Size(size.getHeight(), size.getWidth()); + } else { + return size; + } + } + + private double getRatio(Size size) { + return size.getHeight() / (double) size.getWidth(); + } + + private Size toAndroidSize(Camera.Size size) { + return new Size(size.width, size.height); } @VisibleForTesting diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS b/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS index b9449acc6f7d..50bfe8c7cd78 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS @@ -1,6 +1,5 @@ # Default reviewers for this and subdirectories. andychou@google.com -arcwang@google.com asapperstein@google.com changbetty@google.com qal@google.com diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java index b86f4b3715b5..eac6923473b1 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java @@ -23,7 +23,6 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -38,12 +37,14 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.UserHandle; import android.os.UserManager; +import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.telephony.TelephonyManager; import com.android.settingslib.R; import com.android.settingslib.flags.Flags; import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter; +import com.android.settingslib.utils.ThreadUtils; import org.junit.Before; import org.junit.Rule; @@ -54,6 +55,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; import org.robolectric.shadow.api.Shadow; import java.util.ArrayList; @@ -61,7 +64,7 @@ import java.util.Collections; import java.util.List; @RunWith(RobolectricTestRunner.class) -@Config(shadows = {ShadowBluetoothAdapter.class}) +@Config(shadows = {ShadowBluetoothAdapter.class, BluetoothEventManagerTest.ShadowThreadUtils.class}) public class BluetoothEventManagerTest { @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @@ -100,6 +103,8 @@ public class BluetoothEventManagerTest { private BluetoothUtils.ErrorListener mErrorListener; @Mock private LocalBluetoothLeBroadcast mBroadcast; + @Mock + private UserManager mUserManager; private Context mContext; private Intent mIntent; @@ -130,6 +135,7 @@ public class BluetoothEventManagerTest { mCachedDevice1 = new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice1); mCachedDevice2 = new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice2); mCachedDevice3 = new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice3); + when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); BluetoothUtils.setErrorListener(mErrorListener); } @@ -196,6 +202,7 @@ public class BluetoothEventManagerTest { * callback. */ @Test + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) public void dispatchProfileConnectionStateChanged_registerCallback_shouldDispatchCallback() { mBluetoothEventManager.registerCallback(mBluetoothCallback); @@ -208,10 +215,12 @@ public class BluetoothEventManagerTest { /** * dispatchProfileConnectionStateChanged should not call {@link - * LocalBluetoothLeBroadcast}#updateFallbackActiveDeviceIfNeeded when audio sharing flag is off. + * LocalBluetoothLeBroadcast}#updateFallbackActiveDeviceIfNeeded and + * {@link LocalBluetoothLeBroadcast}#handleProfileConnected when audio sharing flag is off. */ @Test - public void dispatchProfileConnectionStateChanged_flagOff_noUpdateFallbackDevice() { + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) + public void dispatchProfileConnectionStateChanged_flagOff_noCallToBroadcastProfile() { setUpAudioSharing(/* enableFlag= */ false, /* enableFeature= */ true, /* enableProfile= */ true, /* workProfile= */ false); mBluetoothEventManager.dispatchProfileConnectionStateChanged( @@ -219,16 +228,19 @@ public class BluetoothEventManagerTest { BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT); - verify(mBroadcast, times(0)).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).handleProfileConnected(any(), anyInt(), any()); } /** * dispatchProfileConnectionStateChanged should not call {@link - * LocalBluetoothLeBroadcast}#updateFallbackActiveDeviceIfNeeded when the device does not - * support audio sharing. + * LocalBluetoothLeBroadcast}#updateFallbackActiveDeviceIfNeeded and + * {@link LocalBluetoothLeBroadcast}#handleProfileConnected when the device does not support + * audio sharing. */ @Test - public void dispatchProfileConnectionStateChanged_notSupport_noUpdateFallbackDevice() { + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) + public void dispatchProfileConnectionStateChanged_notSupport_noCallToBroadcastProfile() { setUpAudioSharing(/* enableFlag= */ true, /* enableFeature= */ false, /* enableProfile= */ true, /* workProfile= */ false); mBluetoothEventManager.dispatchProfileConnectionStateChanged( @@ -236,7 +248,8 @@ public class BluetoothEventManagerTest { BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT); - verify(mBroadcast, times(0)).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).handleProfileConnected(any(), anyInt(), any()); } /** @@ -245,6 +258,7 @@ public class BluetoothEventManagerTest { * not ready. */ @Test + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) public void dispatchProfileConnectionStateChanged_profileNotReady_noUpdateFallbackDevice() { setUpAudioSharing(/* enableFlag= */ true, /* enableFeature= */ true, /* enableProfile= */ false, /* workProfile= */ false); @@ -253,7 +267,7 @@ public class BluetoothEventManagerTest { BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT); - verify(mBroadcast, times(0)).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).updateFallbackActiveDeviceIfNeeded(); } /** @@ -262,6 +276,7 @@ public class BluetoothEventManagerTest { * other than LE_AUDIO_BROADCAST_ASSISTANT or state other than STATE_DISCONNECTED. */ @Test + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) public void dispatchProfileConnectionStateChanged_notAssistantProfile_noUpdateFallbackDevice() { setUpAudioSharing(/* enableFlag= */ true, /* enableFeature= */ true, /* enableProfile= */ true, /* workProfile= */ false); @@ -270,16 +285,17 @@ public class BluetoothEventManagerTest { BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO); - verify(mBroadcast, times(0)).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).updateFallbackActiveDeviceIfNeeded(); } /** * dispatchProfileConnectionStateChanged should not call {@link - * LocalBluetoothLeBroadcast}#updateFallbackActiveDeviceIfNeeded when triggered for - * work profile. + * LocalBluetoothLeBroadcast}#updateFallbackActiveDeviceIfNeeded and + * {@link LocalBluetoothLeBroadcast}#handleProfileConnected when triggered for work profile. */ @Test - public void dispatchProfileConnectionStateChanged_workProfile_noUpdateFallbackDevice() { + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) + public void dispatchProfileConnectionStateChanged_workProfile_noCallToBroadcastProfile() { setUpAudioSharing(/* enableFlag= */ true, /* enableFeature= */ true, /* enableProfile= */ true, /* workProfile= */ true); mBluetoothEventManager.dispatchProfileConnectionStateChanged( @@ -287,7 +303,8 @@ public class BluetoothEventManagerTest { BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT); - verify(mBroadcast).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).handleProfileConnected(any(), anyInt(), any()); } /** @@ -296,7 +313,8 @@ public class BluetoothEventManagerTest { * disconnected and audio sharing is enabled. */ @Test - public void dispatchProfileConnectionStateChanged_audioSharing_updateFallbackDevice() { + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) + public void dispatchProfileConnectionStateChanged_assistDisconnected_updateFallbackDevice() { setUpAudioSharing(/* enableFlag= */ true, /* enableFeature= */ true, /* enableProfile= */ true, /* workProfile= */ false); mBluetoothEventManager.dispatchProfileConnectionStateChanged( @@ -305,6 +323,27 @@ public class BluetoothEventManagerTest { BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT); verify(mBroadcast).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast, never()).handleProfileConnected(any(), anyInt(), any()); + } + + /** + * dispatchProfileConnectionStateChanged should call {@link + * LocalBluetoothLeBroadcast}#handleProfileConnected when assistant profile is connected and + * audio sharing is enabled. + */ + @Test + @EnableFlags(Flags.FLAG_PROMOTE_AUDIO_SHARING_FOR_SECOND_AUTO_CONNECTED_LEA_DEVICE) + public void dispatchProfileConnectionStateChanged_assistConnected_handleStateChanged() { + setUpAudioSharing(/* enableFlag= */ true, /* enableFeature= */ true, /* enableProfile= */ + true, /* workProfile= */ false); + mBluetoothEventManager.dispatchProfileConnectionStateChanged( + mCachedBluetoothDevice, + BluetoothProfile.STATE_CONNECTED, + BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT); + + verify(mBroadcast, never()).updateFallbackActiveDeviceIfNeeded(); + verify(mBroadcast).handleProfileConnected(mCachedBluetoothDevice, + BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT, mBtManager); } private void setUpAudioSharing(boolean enableFlag, boolean enableFeature, @@ -325,13 +364,19 @@ public class BluetoothEventManagerTest { LocalBluetoothLeBroadcastAssistant assistant = mock(LocalBluetoothLeBroadcastAssistant.class); when(assistant.isProfileReady()).thenReturn(enableProfile); - LocalBluetoothProfileManager profileManager = mock(LocalBluetoothProfileManager.class); - when(profileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast); - when(profileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(assistant); - when(mBtManager.getProfileManager()).thenReturn(profileManager); - UserManager userManager = mock(UserManager.class); - when(mContext.getSystemService(UserManager.class)).thenReturn(userManager); - when(userManager.isManagedProfile()).thenReturn(workProfile); + when(mLocalProfileManager.getLeAudioBroadcastProfile()).thenReturn(mBroadcast); + when(mLocalProfileManager.getLeAudioBroadcastAssistantProfile()).thenReturn(assistant); + when(mUserManager.isManagedProfile()).thenReturn(workProfile); + if (workProfile) { + mBluetoothEventManager = + new BluetoothEventManager( + mLocalAdapter, + mBtManager, + mCachedDeviceManager, + mContext, + /* handler= */ null, + /* userHandle= */ null); + } } @Test @@ -665,4 +710,12 @@ public class BluetoothEventManagerTest { verify(mBluetoothCallback).onAutoOnStateChanged(anyInt()); } + + @Implements(value = ThreadUtils.class) + public static class ShadowThreadUtils { + @Implementation + protected static void postOnBackgroundThread(Runnable runnable) { + runnable.run(); + } + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java index 0325c0ec7915..b7814127b716 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java @@ -1349,6 +1349,36 @@ public class BluetoothUtilsTest { } @Test + public void isMediaDevice_returnsFalse() { + when(mCachedBluetoothDevice.getProfiles()).thenReturn(ImmutableList.of(mAssistant)); + assertThat(BluetoothUtils.isMediaDevice(mCachedBluetoothDevice)).isFalse(); + } + + @Test + public void isMediaDevice_returnsTrue() { + when(mCachedBluetoothDevice.getProfiles()).thenReturn(ImmutableList.of(mLeAudioProfile)); + assertThat(BluetoothUtils.isMediaDevice(mCachedBluetoothDevice)).isTrue(); + } + + @Test + public void isLeAudioSupported_returnsFalse() { + when(mCachedBluetoothDevice.getProfiles()).thenReturn(ImmutableList.of(mLeAudioProfile)); + when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); + when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(false); + + assertThat(BluetoothUtils.isLeAudioSupported(mCachedBluetoothDevice)).isFalse(); + } + + @Test + public void isLeAudioSupported_returnsTrue() { + when(mCachedBluetoothDevice.getProfiles()).thenReturn(ImmutableList.of(mLeAudioProfile)); + when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); + when(mLeAudioProfile.isEnabled(mBluetoothDevice)).thenReturn(true); + + assertThat(BluetoothUtils.isLeAudioSupported(mCachedBluetoothDevice)).isTrue(); + } + + @Test public void isTemporaryBondDevice_hasMetadata_returnsTrue() { when(mBluetoothDevice.getMetadata(METADATA_FAST_PAIR_CUSTOMIZED_FIELDS)) .thenReturn(TEMP_BOND_METADATA.getBytes()); diff --git a/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowColorDisplayManager.java b/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowColorDisplayManager.java index a9fd380c2733..76b6aa8b5026 100644 --- a/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowColorDisplayManager.java +++ b/packages/SettingsLib/tests/robotests/testutils/com/android/settingslib/testutils/shadow/ShadowColorDisplayManager.java @@ -28,6 +28,7 @@ import org.robolectric.annotation.Implements; public class ShadowColorDisplayManager extends org.robolectric.shadows.ShadowColorDisplayManager { private boolean mIsReduceBrightColorsActivated; + private int mColorMode; @Implementation @SystemApi @@ -43,4 +44,13 @@ public class ShadowColorDisplayManager extends org.robolectric.shadows.ShadowCol return mIsReduceBrightColorsActivated; } + @Implementation + public int getColorMode() { + return mColorMode; + } + + @Implementation + public void setColorMode(int colorMode) { + mColorMode = colorMode; + } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java index c98a741f8254..99c4e21c6053 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java @@ -456,11 +456,16 @@ public class SettingsState { @GuardedBy("mLock") private void loadAconfigDefaultValuesLocked(List<String> filePaths) { for (String fileName : filePaths) { - try (FileInputStream inputStream = new FileInputStream(fileName)) { - loadAconfigDefaultValues( - inputStream.readAllBytes(), mNamespaceDefaults, mAconfigDefaultFlags); - } catch (IOException e) { - Slog.e(LOG_TAG, "failed to read protobuf", e); + File f = new File(fileName); + if (f.isFile() && f.canRead()) { + try (FileInputStream inputStream = new FileInputStream(fileName)) { + loadAconfigDefaultValues( + inputStream.readAllBytes(), mNamespaceDefaults, mAconfigDefaultFlags); + } catch (IOException e) { + Slog.e(LOG_TAG, "failed to read protobuf", e); + } + } else { + Slog.d(LOG_TAG, "No protobuf file at " + fileName); } } } diff --git a/packages/Shell/OWNERS b/packages/Shell/OWNERS index 576afdc824f2..f7b8f8a8c6c5 100644 --- a/packages/Shell/OWNERS +++ b/packages/Shell/OWNERS @@ -7,7 +7,6 @@ nandana@google.com svetoslavganov@google.com hackbod@google.com yamasani@google.com -toddke@google.com patb@google.com cbrubaker@google.com omakoto@google.com diff --git a/packages/Shell/res/values-sv/strings.xml b/packages/Shell/res/values-sv/strings.xml index d8877771fa73..8a636e1b2a7e 100644 --- a/packages/Shell/res/values-sv/strings.xml +++ b/packages/Shell/res/values-sv/strings.xml @@ -18,8 +18,8 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="3701846017049540910">"Skal"</string> <string name="bugreport_notification_channel" msgid="2574150205913861141">"Felrapporter"</string> - <string name="bugreport_in_progress_title" msgid="4311705936714972757">"Felrapporten <xliff:g id="ID">#%d</xliff:g> genereras"</string> - <string name="bugreport_finished_title" msgid="4429132808670114081">"Felrapporten <xliff:g id="ID">#%d</xliff:g> har skapats"</string> + <string name="bugreport_in_progress_title" msgid="4311705936714972757">"Felrapport <xliff:g id="ID">#%d</xliff:g> genereras"</string> + <string name="bugreport_finished_title" msgid="4429132808670114081">"Felrapport <xliff:g id="ID">#%d</xliff:g> har skapats"</string> <string name="bugreport_updating_title" msgid="4423539949559634214">"Lägger till information i felrapporten"</string> <string name="bugreport_updating_wait" msgid="3322151947853929470">"Vänta …"</string> <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"Felrapporten visas på mobilen inom kort"</string> diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index f2c76ba25079..7e8d5496a390 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -203,6 +203,16 @@ flag { } flag { + name: "notifications_hun_shared_animation_values" + namespace: "systemui" + description: "Adds a shared class for fetching HUN animation values." + bug: "393369891" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "notification_undo_guts_on_config_changed" namespace: "systemui" description: "Fixes a bug where a theme or font change while notification guts were open" diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ComposableControllerFactory.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ComposableControllerFactory.kt new file mode 100644 index 000000000000..c842159af870 --- /dev/null +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ComposableControllerFactory.kt @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.animation + +import android.content.ComponentName +import android.util.Log +import com.android.systemui.animation.ActivityTransitionAnimator.Controller +import com.android.systemui.animation.ActivityTransitionAnimator.ControllerFactory +import kotlinx.coroutines.flow.MutableStateFlow + +private const val TAG = "ComposableControllerFactory" + +/** + * [ControllerFactory] extension for Compose. Since composables are not guaranteed to be part of the + * composition when [ControllerFactory.createController] is called, this class provides a way for + * the composable to register itself at the time of composition, and deregister itself when + * disposed. + */ +abstract class ComposableControllerFactory( + cookie: ActivityTransitionAnimator.TransitionCookie, + component: ComponentName?, + launchCujType: Int? = null, + returnCujType: Int? = null, +) : ControllerFactory(cookie, component, launchCujType, returnCujType) { + /** + * The object to be used to create [Controller]s, when its associate composable is in the + * composition. + */ + protected val expandable = MutableStateFlow<Expandable?>(null) + + /** To be called when the composable to be animated enters composition. */ + fun onCompose(expandable: Expandable) { + if (TransitionAnimator.DEBUG) { + Log.d(TAG, "Composable entered composition (expandable=$expandable") + } + this.expandable.value = expandable + } + + /** To be called when the composable to be animated exits composition. */ + fun onDispose() { + if (TransitionAnimator.DEBUG) { + Log.d(TAG, "Composable left composition (expandable=${this.expandable.value}") + } + this.expandable.value = null + } +} diff --git a/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt b/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt index 1e3c4c9e7c09..a352b1eebb81 100644 --- a/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt +++ b/packages/SystemUI/compose/core/src/com/android/compose/animation/Expandable.kt @@ -84,6 +84,7 @@ import androidx.savedstate.findViewTreeSavedStateRegistryOwner import androidx.savedstate.setViewTreeSavedStateRegistryOwner import com.android.compose.modifiers.thenIf import com.android.compose.ui.graphics.FullScreenComposeViewInOverlay +import com.android.systemui.animation.ComposableControllerFactory import com.android.systemui.animation.Expandable import com.android.systemui.animation.TransitionAnimator import kotlin.math.max @@ -119,6 +120,10 @@ import kotlin.math.min * } * ``` * + * [transitionControllerFactory] must be defined when this [Expandable] is registered for a + * long-term launch or return animation, to ensure that animation controllers can be created + * correctly. + * * @sample com.android.systemui.compose.gallery.ActivityLaunchScreen * @sample com.android.systemui.compose.gallery.DialogLaunchScreen */ @@ -134,10 +139,17 @@ fun Expandable( // TODO(b/285250939): Default this to true then remove once the Compose QS expandables have // proven that the new implementation is robust. useModifierBasedImplementation: Boolean = false, + transitionControllerFactory: ComposableControllerFactory? = null, content: @Composable (Expandable) -> Unit, ) { Expandable( - rememberExpandableController(color, shape, contentColor, borderStroke), + rememberExpandableController( + color, + shape, + contentColor, + borderStroke, + transitionControllerFactory, + ), modifier, onClick, interactionSource, @@ -183,6 +195,17 @@ fun Expandable( ) { val controller = controller as ExpandableControllerImpl + if (controller.transitionControllerFactory != null) { + DisposableEffect(controller.transitionControllerFactory) { + // Notify the transition controller factory that the expandable is now available, so it + // can move forward with any pending requests. + controller.transitionControllerFactory.onCompose(controller.expandable) + // Once this composable is gone, the transition controller factory must be notified so + // it doesn't accepts requests providing stale content. + onDispose { controller.transitionControllerFactory.onDispose() } + } + } + if (useModifierBasedImplementation) { Box(modifier.expandable(controller, onClick, interactionSource)) { WrappedContent(controller.expandable, controller.contentColor, content) @@ -308,34 +331,28 @@ private fun Modifier.expandable( interactionSource: MutableInteractionSource? = null, ): Modifier { val controller = controller as ExpandableControllerImpl + val graphicsLayer = rememberGraphicsLayer() val isAnimating = controller.isAnimating - val drawInOverlayModifier = - if (isAnimating) { - val graphicsLayer = rememberGraphicsLayer() - - FullScreenComposeViewInOverlay(controller.overlay) { view -> - Modifier.then(DrawExpandableInOverlayElement(view, controller, graphicsLayer)) - } - - Modifier.drawWithContent { graphicsLayer.record { this@drawWithContent.drawContent() } } - } else { - null + if (isAnimating) { + FullScreenComposeViewInOverlay(controller.overlay) { view -> + Modifier.then(DrawExpandableInOverlayElement(view, controller, graphicsLayer)) } + } + val drawContent = !isAnimating && !controller.isDialogShowing return this.thenIf(onClick != null) { Modifier.minimumInteractiveComponentSize() } - .thenIf(!isAnimating) { + .thenIf(drawContent) { Modifier.border(controller) .then(clickModifier(controller, onClick, interactionSource)) .background(controller.color, controller.shape) } - .thenIf(drawInOverlayModifier != null) { drawInOverlayModifier!! } .onPlaced { controller.boundsInComposeViewRoot = it.boundsInRoot() } - .thenIf(!isAnimating && controller.isDialogShowing) { - Modifier.layout { measurable, constraints -> - measurable.measure(constraints).run { - layout(width, height) { /* Do not place/draw. */ } - } + .drawWithContent { + graphicsLayer.record { this@drawWithContent.drawContent() } + + if (drawContent) { + drawLayer(graphicsLayer) } } } diff --git a/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt b/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt index a03c89626cd7..72da175e26cf 100644 --- a/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt +++ b/packages/SystemUI/compose/core/src/com/android/compose/animation/ExpandableController.kt @@ -47,6 +47,7 @@ import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.LayoutDirection import com.android.internal.jank.InteractionJankMonitor import com.android.systemui.animation.ActivityTransitionAnimator +import com.android.systemui.animation.ComposableControllerFactory import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.animation.Expandable @@ -77,6 +78,7 @@ fun rememberExpandableController( shape: Shape, contentColor: Color = contentColorFor(color), borderStroke: BorderStroke? = null, + transitionControllerFactory: ComposableControllerFactory? = null, ): ExpandableController { val composeViewRoot = LocalView.current val density = LocalDensity.current @@ -95,6 +97,7 @@ fun rememberExpandableController( composeViewRoot, density, layoutDirection, + transitionControllerFactory, ) { ExpandableControllerImpl( color, @@ -103,6 +106,7 @@ fun rememberExpandableController( borderStroke, composeViewRoot, density, + transitionControllerFactory, layoutDirection, { isComposed }, ) @@ -127,6 +131,7 @@ internal class ExpandableControllerImpl( internal val borderStroke: BorderStroke?, internal val composeViewRoot: View, internal val density: Density, + internal val transitionControllerFactory: ComposableControllerFactory?, private val layoutDirection: LayoutDirection, private val isComposed: () -> Boolean, ) : ExpandableController { diff --git a/packages/SystemUI/compose/core/src/com/android/compose/theme/AndroidColorScheme.kt b/packages/SystemUI/compose/core/src/com/android/compose/theme/AndroidColorScheme.kt index ed144bd20234..375dadeba3ad 100644 --- a/packages/SystemUI/compose/core/src/com/android/compose/theme/AndroidColorScheme.kt +++ b/packages/SystemUI/compose/core/src/com/android/compose/theme/AndroidColorScheme.kt @@ -78,6 +78,10 @@ class AndroidColorScheme( val underSurface: Color, val weatherTemp: Color, val widgetBackground: Color, + val surfaceEffect0: Color, + val surfaceEffect1: Color, + val surfaceEffect2: Color, + val surfaceEffect3: Color, ) { companion object { internal fun color(context: Context, @ColorRes id: Int): Color { @@ -123,6 +127,10 @@ class AndroidColorScheme( underSurface = color(context, R.color.customColorUnderSurface), weatherTemp = color(context, R.color.customColorWeatherTemp), widgetBackground = color(context, R.color.customColorWidgetBackground), + surfaceEffect0 = color(context, R.color.surface_effect_0), + surfaceEffect1 = color(context, R.color.surface_effect_1), + surfaceEffect2 = color(context, R.color.surface_effect_2), + surfaceEffect3 = color(context, R.color.surface_effect_3), ) } } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt index 48dee240a1df..f1b273ae5741 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerOverlay.kt @@ -24,6 +24,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag import com.android.compose.animation.scene.ContentScope import com.android.compose.animation.scene.ElementKey import com.android.compose.animation.scene.UserAction @@ -102,6 +103,8 @@ private fun ContentScope.BouncerOverlay( viewModel, dialogFactory, Modifier.element(Bouncer.Elements.Content) + // TODO(b/393516240): Use the same sysuiResTag() as views instead. + .testTag(Bouncer.Elements.Content.testTag) .overscroll(verticalOverscrollEffect) .sysuiResTag(Bouncer.TestTags.Root) .fillMaxSize(), diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt index 5e61af634bbc..aa07370aa9cf 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt @@ -19,6 +19,7 @@ package com.android.systemui.keyguard.ui.composable import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag import com.android.compose.animation.scene.ContentScope import com.android.compose.animation.scene.UserAction import com.android.compose.animation.scene.UserActionResult @@ -55,7 +56,11 @@ constructor( @Composable override fun ContentScope.Content(modifier: Modifier) { - LockscreenScene(lockscreenContent = lockscreenContent, modifier = modifier) + LockscreenScene( + lockscreenContent = lockscreenContent, + // TODO(b/393516240): Use the same sysuiResTag() as views instead. + modifier = modifier.testTag(key.rootElementKey.testTag), + ) } } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/SmartSpaceSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/SmartSpaceSection.kt index c7b797dfa0a2..505044ab8c5e 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/SmartSpaceSection.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/SmartSpaceSection.kt @@ -159,7 +159,7 @@ constructor( factory = { context -> FrameLayout(context).apply { addView( - lockscreenSmartspaceController.buildAndConnectWeatherView(this).apply { + lockscreenSmartspaceController.buildAndConnectWeatherView(this, false).apply { layoutParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, @@ -184,7 +184,7 @@ constructor( factory = { context -> FrameLayout(context).apply { addView( - lockscreenSmartspaceController.buildAndConnectDateView(this).apply { + lockscreenSmartspaceController.buildAndConnectDateView(this, false).apply { layoutParams = FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt index b11c83c778f4..4b3ebc2bd53d 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/volume/ui/composable/VolumeSlider.kt @@ -35,9 +35,9 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon as MaterialIcon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Slider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -73,11 +73,15 @@ import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.res.R import com.android.systemui.volume.haptics.ui.VolumeHapticsConfigsProvider import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.SliderState +import com.android.systemui.volume.ui.slider.AccessibilityParams +import com.android.systemui.volume.ui.slider.Haptics +import com.android.systemui.volume.ui.slider.Slider import kotlin.math.round import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map +@OptIn(ExperimentalMaterial3Api::class) @Composable fun VolumeSlider( state: SliderState, @@ -102,17 +106,6 @@ fun VolumeSlider( return } - val value by valueState(state) - val interactionSource = remember { MutableInteractionSource() } - val hapticsViewModel: SliderHapticsViewModel? = - setUpHapticsViewModel( - value, - state.valueRange, - state.hapticFilter, - interactionSource, - hapticsViewModelFactory, - ) - Column(modifier = modifier.animateContentSize(), verticalArrangement = Arrangement.Top) { Row( horizontalArrangement = Arrangement.spacedBy(12.dp), @@ -134,60 +127,30 @@ fun VolumeSlider( ) button?.invoke() } + Slider( - value = value, + value = state.value, valueRange = state.valueRange, - onValueChange = { newValue -> - hapticsViewModel?.addVelocityDataPoint(newValue) - onValueChange(newValue) - }, - onValueChangeFinished = { - hapticsViewModel?.onValueChangeEnded() - onValueChangeFinished?.invoke() - }, - enabled = state.isEnabled, + onValueChanged = onValueChange, + onValueChangeFinished = { onValueChangeFinished?.invoke() }, + isEnabled = state.isEnabled, + stepDistance = state.a11yStep, + accessibilityParams = + AccessibilityParams( + label = state.label, + disabledMessage = state.disabledMessage, + currentStateDescription = state.a11yStateDescription, + ), + haptics = + hapticsViewModelFactory?.let { + Haptics.Enabled( + hapticsViewModelFactory = it, + hapticFilter = state.hapticFilter, + orientation = Orientation.Horizontal, + ) + } ?: Haptics.Disabled, modifier = - Modifier.height(40.dp) - .padding(top = 4.dp, bottom = 12.dp) - .sysuiResTag(state.label) - .clearAndSetSemantics { - if (state.isEnabled) { - contentDescription = state.label - state.a11yClickDescription?.let { - customActions = - listOf( - CustomAccessibilityAction(it) { - onIconTapped() - true - } - ) - } - - state.a11yStateDescription?.let { stateDescription = it } - progressBarRangeInfo = - ProgressBarRangeInfo(state.value, state.valueRange) - } else { - disabled() - contentDescription = - state.disabledMessage?.let { "${state.label}, $it" } ?: state.label - } - setProgress { targetValue -> - val targetDirection = - when { - targetValue > value -> 1 - targetValue < value -> -1 - else -> 0 - } - - val newValue = - (value + targetDirection * state.a11yStep).coerceIn( - state.valueRange.start, - state.valueRange.endInclusive, - ) - onValueChange(newValue) - true - } - }, + Modifier.height(40.dp).padding(top = 4.dp, bottom = 12.dp).sysuiResTag(state.label), ) state.disabledMessage?.let { disabledMessage -> AnimatedVisibility(visible = !state.isEnabled) { @@ -348,7 +311,7 @@ private fun SliderIcon( } @Composable -fun setUpHapticsViewModel( +private fun setUpHapticsViewModel( value: Float, valueRange: ClosedFloatingPointRange<Float>, hapticFilter: SliderHapticFeedbackFilter, diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt index 907b5bc2143a..05958a212f47 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/Element.kt @@ -169,7 +169,7 @@ internal fun Modifier.element( Modifier.maybeElevateInContent(layoutImpl, content, key, currentTransitionStates) } .then(ElementModifier(layoutImpl, currentTransitionStates, content, key)) - .testTag(key.testTag) + .thenIf(layoutImpl.implicitTestTags) { Modifier.testTag(key.testTag) } } /** diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt index 53d0ee1d2045..404f1b217026 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt @@ -66,6 +66,8 @@ fun SceneTransitionLayout( swipeSourceDetector: SwipeSourceDetector = DefaultEdgeDetector, swipeDetector: SwipeDetector = DefaultSwipeDetector, @FloatRange(from = 0.0, to = 0.5) transitionInterceptionThreshold: Float = 0.05f, + // TODO(b/240432457) Remove this once test utils can access the internal STLForTesting(). + implicitTestTags: Boolean = false, builder: SceneTransitionLayoutScope<ContentScope>.() -> Unit, ) { SceneTransitionLayoutForTesting( @@ -74,6 +76,7 @@ fun SceneTransitionLayout( swipeSourceDetector, swipeDetector, transitionInterceptionThreshold, + implicitTestTags = implicitTestTags, onLayoutImpl = null, builder = builder, ) @@ -727,10 +730,8 @@ class FixedDistance(private val distance: Dp) : UserActionDistance { } /** - * An internal version of [SceneTransitionLayout] to be used for tests. - * - * Important: You should use this only in tests and if you need to access the underlying - * [SceneTransitionLayoutImpl]. In other cases, you should use [SceneTransitionLayout]. + * An internal version of [SceneTransitionLayout] to be used for tests, that provides access to the + * internal [SceneTransitionLayoutImpl] and implicitly tags all scenes and elements. */ @Composable internal fun SceneTransitionLayoutForTesting( @@ -743,6 +744,7 @@ internal fun SceneTransitionLayoutForTesting( sharedElementMap: MutableMap<ElementKey, Element> = remember { mutableMapOf() }, ancestors: List<Ancestor> = remember { emptyList() }, lookaheadScope: LookaheadScope? = null, + implicitTestTags: Boolean = true, builder: SceneTransitionLayoutScope<InternalContentScope>.() -> Unit, ) { val density = LocalDensity.current @@ -767,6 +769,7 @@ internal fun SceneTransitionLayoutForTesting( directionChangeSlop = directionChangeSlop, defaultEffectFactory = defaultEffectFactory, decayAnimationSpec = decayAnimationSpec, + implicitTestTags = implicitTestTags, ) .also { onLayoutImpl?.invoke(it) } } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt index 53996d25afdb..e3c4eb0f8bea 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt @@ -122,6 +122,9 @@ internal class SceneTransitionLayoutImpl( * This is used to enable transformations and shared elements across NestedSTLs. */ internal val ancestors: List<Ancestor> = emptyList(), + + /** Whether elements and scene should be tagged using `Modifier.testTag`. */ + internal val implicitTestTags: Boolean = false, lookaheadScope: LookaheadScope? = null, defaultEffectFactory: OverscrollFactory, ) { diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt index 9ca45fe92ad5..149a9e7c4705 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/Content.kt @@ -173,7 +173,7 @@ internal sealed class Content( .thenIf(layoutImpl.state.isElevationPossible(content = key, element = null)) { Modifier.container(containerState) } - .testTag(key.testTag) + .thenIf(layoutImpl.implicitTestTags) { Modifier.testTag(key.testTag) } ) { CompositionLocalProvider(LocalOverscrollFactory provides lastFactory) { scope.content() @@ -301,6 +301,7 @@ internal class ContentScopeImpl( sharedElementMap = layoutImpl.elements, ancestors = ancestors, lookaheadScope = layoutImpl.lookaheadScope, + implicitTestTags = layoutImpl.implicitTestTags, ) } } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt index 338fb9b674a1..86cbfe4f1a8b 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/ElementTest.kt @@ -227,7 +227,7 @@ class ElementTest { to = SceneB, transitionLayout = { state -> coroutineScope = rememberCoroutineScope() - SceneTransitionLayout(state) { + SceneTransitionLayoutForTesting(state) { scene(SceneA) { Box(Modifier.size(layoutSize)) { // Transformed element @@ -633,7 +633,7 @@ class ElementTest { val scope = rule.setContentAndCreateMainScope { - SceneTransitionLayout(state) { + SceneTransitionLayoutForTesting(state) { scene(SceneA) { Box(Modifier.element(TestElements.Foo).size(20.dp)) } scene(SceneB) {} } @@ -674,7 +674,7 @@ class ElementTest { CompositionLocalProvider( LocalOverscrollFactory provides rememberOffsetOverscrollEffectFactory() ) { - SceneTransitionLayout(state, Modifier.size(layoutWidth, layoutHeight)) { + SceneTransitionLayoutForTesting(state, Modifier.size(layoutWidth, layoutHeight)) { scene(key = SceneA, userActions = mapOf(Swipe.Down to SceneB)) { Spacer(Modifier.fillMaxSize()) } @@ -734,7 +734,7 @@ class ElementTest { CompositionLocalProvider( LocalOverscrollFactory provides rememberOffsetOverscrollEffectFactory() ) { - SceneTransitionLayout(state, Modifier.size(layoutWidth, layoutHeight)) { + SceneTransitionLayoutForTesting(state, Modifier.size(layoutWidth, layoutHeight)) { scene(key = SceneA, userActions = mapOf(Swipe.Down to SceneB)) { Spacer( Modifier.overscroll(verticalOverscrollEffect) @@ -834,7 +834,7 @@ class ElementTest { CompositionLocalProvider( LocalOverscrollFactory provides rememberOffsetOverscrollEffectFactory() ) { - SceneTransitionLayout(state, Modifier.size(layoutWidth, layoutHeight)) { + SceneTransitionLayoutForTesting(state, Modifier.size(layoutWidth, layoutHeight)) { scene(key = SceneA, userActions = mapOf(Swipe.Down to SceneB)) { Spacer(Modifier.fillMaxSize()) } @@ -893,7 +893,7 @@ class ElementTest { CompositionLocalProvider( LocalOverscrollFactory provides rememberOffsetOverscrollEffectFactory() ) { - SceneTransitionLayout( + SceneTransitionLayoutForTesting( state = state, modifier = Modifier.size(layoutWidth, layoutHeight), ) { @@ -970,7 +970,7 @@ class ElementTest { rule.setContent { touchSlop = LocalViewConfiguration.current.touchSlop - SceneTransitionLayout( + SceneTransitionLayoutForTesting( state = state, modifier = Modifier.size(layoutWidth, layoutHeight), ) { @@ -1057,7 +1057,7 @@ class ElementTest { rule.setContent { coroutineScope = rememberCoroutineScope() - SceneTransitionLayout(state) { + SceneTransitionLayoutForTesting(state) { scene(SceneA) { Box(Modifier.size(layoutSize)) { Box( @@ -1374,7 +1374,7 @@ class ElementTest { val scope = rule.setContentAndCreateMainScope { - SceneTransitionLayout(state, Modifier.size(layoutSize)) { + SceneTransitionLayoutForTesting(state, Modifier.size(layoutSize)) { scene(SceneA) { Box(Modifier.fillMaxSize()) { Foo(Modifier.align(Alignment.TopStart)) } } @@ -1742,7 +1742,7 @@ class ElementTest { val scope = rule.setContentAndCreateMainScope { - SceneTransitionLayout(state, Modifier.size(200.dp)) { + SceneTransitionLayoutForTesting(state, Modifier.size(200.dp)) { scene(SceneA) { Foo(offset = 0.dp) } scene(SceneB) { Foo(offset = 20.dp) } scene(SceneC) { Foo(offset = 40.dp) } @@ -1828,7 +1828,7 @@ class ElementTest { val scope = rule.setContentAndCreateMainScope { - SceneTransitionLayout(state) { + SceneTransitionLayoutForTesting(state) { scene(SceneB) { Foo(Modifier.offset(40.dp, 60.dp)) } // Define A after B so that Foo is placed in A during A <=> B. @@ -1887,7 +1887,7 @@ class ElementTest { val scope = rule.setContentAndCreateMainScope { - SceneTransitionLayout(state) { + SceneTransitionLayoutForTesting(state) { scene(SceneA) { Foo() } scene(SceneB) { Foo(Modifier.offset(40.dp, 60.dp)) } } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt index 04c762f43907..98ecb644878b 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/OverlayTest.kt @@ -90,7 +90,7 @@ class OverlayTest { lateinit var coroutineScope: CoroutineScope rule.setContent { coroutineScope = rememberCoroutineScope() - SceneTransitionLayout(state, Modifier.size(200.dp)) { + SceneTransitionLayoutForTesting(state, Modifier.size(200.dp)) { scene(SceneA) { Box(Modifier.fillMaxSize()) { Foo() } } overlay(OverlayA) { Foo() } } @@ -132,7 +132,7 @@ class OverlayTest { lateinit var coroutineScope: CoroutineScope rule.setContent { coroutineScope = rememberCoroutineScope() - SceneTransitionLayout(state, Modifier.size(200.dp)) { + SceneTransitionLayoutForTesting(state, Modifier.size(200.dp)) { scene(SceneA) { Box(Modifier.fillMaxSize()) { Foo() } } overlay(OverlayA) { Foo() } overlay(OverlayB) { Foo() } @@ -230,7 +230,7 @@ class OverlayTest { lateinit var coroutineScope: CoroutineScope rule.setContent { coroutineScope = rememberCoroutineScope() - SceneTransitionLayout(state, Modifier.size(200.dp)) { + SceneTransitionLayoutForTesting(state, Modifier.size(200.dp)) { scene(SceneA) { Box(Modifier.fillMaxSize()) { MovableBar() } } overlay(OverlayA) { MovableBar() } overlay(OverlayB) { MovableBar() } @@ -302,7 +302,7 @@ class OverlayTest { } var alignment by mutableStateOf(Alignment.Center) rule.setContent { - SceneTransitionLayout(state, Modifier.size(200.dp)) { + SceneTransitionLayoutForTesting(state, Modifier.size(200.dp)) { scene(SceneA) { Box(Modifier.fillMaxSize()) { Foo() } } overlay(OverlayA, alignment = alignment) { Foo() } } @@ -761,7 +761,7 @@ class OverlayTest { val movableElementChildTag = "movableElementChildTag" val scope = rule.setContentAndCreateMainScope { - SceneTransitionLayout(state) { + SceneTransitionLayoutForTesting(state) { scene(SceneA) { MovableElement(key, Modifier) { content { Box(Modifier.testTag(movableElementChildTag).size(100.dp)) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt index 2bf235846b32..366b11d9fabd 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/PredictiveBackHandlerTest.kt @@ -250,7 +250,7 @@ class PredictiveBackHandlerTest { } rule.setContent { - SceneTransitionLayout(state, Modifier.size(200.dp)) { + SceneTransitionLayoutForTesting(state, Modifier.size(200.dp)) { scene(SceneA) { Box(Modifier.fillMaxSize()) } overlay(OverlayA) { Box(Modifier.fillMaxSize()) } overlay(OverlayB) { Box(Modifier.fillMaxSize()) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt index d7f7a514682c..fa7661b6d102 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SceneTransitionLayoutTest.kt @@ -97,7 +97,7 @@ class SceneTransitionLayoutTest { MutableSceneTransitionLayoutStateForTests(SceneA, EmptyTestTransitions) } - SceneTransitionLayout(state = layoutState, modifier = Modifier.size(LayoutSize)) { + SceneTransitionLayoutForTesting(state = layoutState, modifier = Modifier.size(LayoutSize)) { scene(SceneA, userActions = mapOf(Back to SceneB)) { Box(Modifier.fillMaxSize()) { SharedFoo(size = 50.dp, childOffset = 0.dp, Modifier.align(Alignment.TopEnd)) diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt index 751b31481e3a..11abbbec79bf 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/SwipeToSceneTest.kt @@ -763,7 +763,7 @@ class SwipeToSceneTest { var touchSlop = 0f rule.setContent { touchSlop = LocalViewConfiguration.current.touchSlop - SceneTransitionLayout(state, Modifier.size(layoutSize)) { + SceneTransitionLayoutForTesting(state, Modifier.size(layoutSize)) { scene(SceneA, userActions = mapOf(Swipe.Start to SceneB, Swipe.End to SceneC)) { Box(Modifier.fillMaxSize()) } @@ -837,7 +837,7 @@ class SwipeToSceneTest { rule.setContent { touchSlop = LocalViewConfiguration.current.touchSlop CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) { - SceneTransitionLayout(state, Modifier.size(layoutSize)) { + SceneTransitionLayoutForTesting(state, Modifier.size(layoutSize)) { scene(SceneA, userActions = mapOf(Swipe.Start to SceneB, Swipe.End to SceneC)) { Box(Modifier.fillMaxSize()) } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/NestedElementTransformationTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/NestedElementTransformationTest.kt index bb511bc27317..8b568928bde0 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/NestedElementTransformationTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/transformation/NestedElementTransformationTest.kt @@ -40,7 +40,7 @@ import com.android.compose.animation.scene.MutableSceneTransitionLayoutState import com.android.compose.animation.scene.MutableSceneTransitionLayoutStateForTests import com.android.compose.animation.scene.Scale import com.android.compose.animation.scene.SceneKey -import com.android.compose.animation.scene.SceneTransitionLayout +import com.android.compose.animation.scene.SceneTransitionLayoutForTesting import com.android.compose.animation.scene.SceneTransitions import com.android.compose.animation.scene.TestScenes import com.android.compose.animation.scene.testNestedTransition @@ -114,7 +114,7 @@ class NestedElementTransformationTest { @Composable (states: List<MutableSceneTransitionLayoutState>) -> Unit = { states -> - SceneTransitionLayout(states[0]) { + SceneTransitionLayoutForTesting(states[0]) { scene(TestScenes.SceneA, content = { TestElement(elementVariant0A) }) scene( TestScenes.SceneB, diff --git a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestContentScope.kt b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestContentScope.kt index 6d47babd716a..e56d1bed4c25 100644 --- a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestContentScope.kt +++ b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestContentScope.kt @@ -30,5 +30,7 @@ fun TestContentScope( content: @Composable ContentScope.() -> Unit, ) { val state = rememberMutableSceneTransitionLayoutState(currentScene) - SceneTransitionLayout(state, modifier) { scene(currentScene, content = content) } + SceneTransitionLayout(state, modifier, implicitTestTags = true) { + scene(currentScene, content = content) + } } diff --git a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt index f94a7ed77341..a362a370328a 100644 --- a/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt +++ b/packages/SystemUI/compose/scene/tests/utils/src/com/android/compose/animation/scene/TestTransition.kt @@ -137,7 +137,7 @@ fun ComposeContentTestRule.testTransition( }, changeState = changeState, transitionLayout = { state -> - SceneTransitionLayout(state, layoutModifier) { + SceneTransitionLayout(state, layoutModifier, implicitTestTags = true) { scene(fromScene, content = fromSceneContent) scene(toScene, content = toSceneContent) } @@ -163,7 +163,7 @@ fun ComposeContentTestRule.testShowOverlayTransition( ) }, transitionLayout = { state -> - SceneTransitionLayout(state) { + SceneTransitionLayout(state, implicitTestTags = true) { scene(fromScene) { fromSceneContent() } overlay(overlay) { overlayContent() } } @@ -191,7 +191,7 @@ fun ComposeContentTestRule.testHideOverlayTransition( ) }, transitionLayout = { state -> - SceneTransitionLayout(state) { + SceneTransitionLayout(state, implicitTestTags = true) { scene(toScene) { toSceneContent() } overlay(overlay) { overlayContent() } } @@ -223,7 +223,7 @@ fun ComposeContentTestRule.testReplaceOverlayTransition( ) }, transitionLayout = { state -> - SceneTransitionLayout(state) { + SceneTransitionLayout(state, implicitTestTags = true) { scene(currentScene) { currentSceneContent() } overlay(from, alignment = fromAlignment) { fromContent() } overlay(to, alignment = toAlignment) { toContent() } @@ -273,7 +273,7 @@ fun MotionTestRule<ComposeToolkit>.recordTransition( } } - SceneTransitionLayout(state, layoutModifier) { + SceneTransitionLayout(state, layoutModifier, implicitTestTags = true) { scene(fromScene, content = fromSceneContent) scene(toScene, content = toSceneContent) } diff --git a/packages/SystemUI/customization/res/values/dimens.xml b/packages/SystemUI/customization/res/values/dimens.xml index 2bb5541f4b0a..723f9bff3152 100644 --- a/packages/SystemUI/customization/res/values/dimens.xml +++ b/packages/SystemUI/customization/res/values/dimens.xml @@ -34,6 +34,7 @@ <dimen name="small_clock_padding_top">28dp</dimen> <dimen name="clock_padding_start">28dp</dimen> <dimen name="weather_date_icon_padding">28dp</dimen> + <dimen name="clock_vertical_digit_buffer">8dp</dimen> <!-- When large clock is showing, offset the smartspace by this amount --> <dimen name="keyguard_smartspace_top_offset">12dp</dimen> diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/LayoutUtils.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/CanvasUtil.kt index ef8bee0875d2..dd1599e5259d 100644 --- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/LayoutUtils.kt +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/CanvasUtil.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2024 The Android Open Source Project + * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,20 +16,17 @@ package com.android.systemui.shared.clocks -import android.graphics.Rect -import android.view.View +import android.graphics.Canvas -fun computeLayoutDiff( - view: View, - targetRegion: Rect, - isLargeClock: Boolean, -): Pair<Float, Float> { - val parent = view.parent - if (parent is View && parent.isLaidOut() && isLargeClock) { - return Pair( - targetRegion.centerX() - parent.width / 2f, - targetRegion.centerY() - parent.height / 2f - ) +object CanvasUtil { + fun Canvas.translate(pt: VPointF) = this.translate(pt.x, pt.y) + + fun Canvas.translate(pt: VPoint) = this.translate(pt.x.toFloat(), pt.y.toFloat()) + + fun <T> Canvas.use(func: (Canvas) -> T): T { + val saveNum = save() + val result = func(this) + restoreToCount(saveNum) + return result } - return Pair(0f, 0f) } diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt index f90552796e9f..b9200c15944c 100644 --- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ComposedDigitalLayerController.kt @@ -55,7 +55,6 @@ class ComposedDigitalLayerController(private val clockCtx: ClockContext) : val layerCfg = LayerConfig( style = FontTextStyle(lineHeight = 147.25f), - timespec = DigitalTimespec.DIGIT_PAIR, alignment = DigitalAlignment(HorizontalAlignment.CENTER, VerticalAlignment.CENTER), aodStyle = FontTextStyle( @@ -63,12 +62,23 @@ class ComposedDigitalLayerController(private val clockCtx: ClockContext) : transitionDuration = 750, ), - // Placeholder + // Placeholders + timespec = DigitalTimespec.TIME_FULL_FORMAT, dateTimeFormat = "hh:mm", ) - createController(layerCfg.copy(dateTimeFormat = "hh")) - createController(layerCfg.copy(dateTimeFormat = "mm")) + createController( + layerCfg.copy(timespec = DigitalTimespec.FIRST_DIGIT, dateTimeFormat = "hh") + ) + createController( + layerCfg.copy(timespec = DigitalTimespec.SECOND_DIGIT, dateTimeFormat = "hh") + ) + createController( + layerCfg.copy(timespec = DigitalTimespec.FIRST_DIGIT, dateTimeFormat = "mm") + ) + createController( + layerCfg.copy(timespec = DigitalTimespec.SECOND_DIGIT, dateTimeFormat = "mm") + ) } private fun refreshTime() { diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DigitTranslateAnimator.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DigitTranslateAnimator.kt index 38697063bea5..f5ccc52c8c6b 100644 --- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DigitTranslateAnimator.kt +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/DigitTranslateAnimator.kt @@ -20,57 +20,42 @@ import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.animation.TimeInterpolator import android.animation.ValueAnimator -import android.graphics.Point +import com.android.systemui.shared.clocks.VPointF.Companion.times -class DigitTranslateAnimator(val updateCallback: () -> Unit) { - val DEFAULT_ANIMATION_DURATION = 500L - val updatedTranslate = Point(0, 0) +class DigitTranslateAnimator(private val updateCallback: (VPointF) -> Unit) { + var currentTranslation = VPointF.ZERO + var baseTranslation = VPointF.ZERO + var targetTranslation = VPointF.ZERO - val baseTranslation = Point(0, 0) - var targetTranslation: Point? = null - val bounceAnimator: ValueAnimator = + private val bounceAnimator: ValueAnimator = ValueAnimator.ofFloat(1f).apply { - duration = DEFAULT_ANIMATION_DURATION - addUpdateListener { - updateTranslation(it.animatedFraction, updatedTranslate) - updateCallback() - } + addUpdateListener { updateCallback(getInterpolatedTranslation(it.animatedFraction)) } addListener( object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { - rebase() + baseTranslation = currentTranslation } override fun onAnimationCancel(animation: Animator) { - rebase() + baseTranslation = currentTranslation } } ) } - fun rebase() { - baseTranslation.x = updatedTranslate.x - baseTranslation.y = updatedTranslate.y - } - fun animatePosition( animate: Boolean = true, delay: Long = 0, - duration: Long = -1L, + duration: Long, interpolator: TimeInterpolator? = null, - targetTranslation: Point? = null, + targetTranslation: VPointF, onAnimationEnd: Runnable? = null, ) { - this.targetTranslation = targetTranslation ?: Point(0, 0) + this.targetTranslation = targetTranslation if (animate) { bounceAnimator.cancel() bounceAnimator.startDelay = delay - bounceAnimator.duration = - if (duration == -1L) { - DEFAULT_ANIMATION_DURATION - } else { - duration - } + bounceAnimator.duration = duration interpolator?.let { bounceAnimator.interpolator = it } if (onAnimationEnd != null) { val listener = @@ -89,16 +74,13 @@ class DigitTranslateAnimator(val updateCallback: () -> Unit) { bounceAnimator.start() } else { // No animation is requested, thus set base and target state to the same state. - updateTranslation(1F, updatedTranslate) - rebase() - updateCallback() + currentTranslation = targetTranslation + baseTranslation = targetTranslation + updateCallback(targetTranslation) } } - fun updateTranslation(progress: Float, outPoint: Point) { - outPoint.x = - (baseTranslation.x + progress * (targetTranslation!!.x - baseTranslation.x)).toInt() - outPoint.y = - (baseTranslation.y + progress * (targetTranslation!!.y - baseTranslation.y)).toInt() + fun getInterpolatedTranslation(progress: Float): VPointF { + return baseTranslation + progress * (targetTranslation - baseTranslation) } } diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt index b4c2f5de290f..2282863b4017 100644 --- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/FlexClockFaceController.kt @@ -35,12 +35,14 @@ import com.android.systemui.plugins.clocks.DefaultClockFaceLayout import com.android.systemui.plugins.clocks.ThemeConfig import com.android.systemui.plugins.clocks.WeatherData import com.android.systemui.plugins.clocks.ZenData +import com.android.systemui.shared.clocks.ViewUtils.computeLayoutDiff import com.android.systemui.shared.clocks.view.FlexClockView import com.android.systemui.shared.clocks.view.HorizontalAlignment import com.android.systemui.shared.clocks.view.VerticalAlignment import java.util.Locale import java.util.TimeZone import kotlin.math.max +import kotlin.math.roundToInt // TODO(b/364680879): Merge w/ ComposedDigitalLayerController class FlexClockFaceController(clockCtx: ClockContext, private val isLargeClock: Boolean) : @@ -168,17 +170,17 @@ class FlexClockFaceController(clockCtx: ClockContext, private val isLargeClock: else targetRegion.height() / maxHeight FrameLayout.LayoutParams( - (maxWidth * scale).toInt(), - (maxHeight * scale).toInt(), + (maxWidth * scale).roundToInt(), + (maxHeight * scale).roundToInt(), ) } lp.gravity = Gravity.CENTER view.layoutParams = lp targetRegion?.let { - val (xDiff, yDiff) = computeLayoutDiff(view, it, isLargeClock) - view.translationX = xDiff - view.translationY = yDiff + val diff = view.computeLayoutDiff(it, isLargeClock) + view.translationX = diff.x + view.translationY = diff.y } } diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/VPoint.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/VPoint.kt new file mode 100644 index 000000000000..3dae5305542b --- /dev/null +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/VPoint.kt @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.shared.clocks + +import android.graphics.Point +import android.graphics.PointF +import android.graphics.Rect +import android.graphics.RectF +import kotlin.math.abs +import kotlin.math.max +import kotlin.math.min +import kotlin.math.sqrt + +private val X_MASK: ULong = 0xFFFFFFFF00000000U +private val Y_MASK: ULong = 0x00000000FFFFFFFFU + +private fun unpackX(data: ULong): Int = ((data and X_MASK) shr 32).toInt() + +private fun unpackY(data: ULong): Int = (data and Y_MASK).toInt() + +private fun pack(x: Int, y: Int): ULong { + return ((x.toULong() shl 32) and X_MASK) or (y.toULong() and Y_MASK) +} + +@JvmInline +value class VPointF(private val data: ULong) { + val x: Float + get() = Float.fromBits(unpackX(data)) + + val y: Float + get() = Float.fromBits(unpackY(data)) + + constructor() : this(0f, 0f) + + constructor(pt: PointF) : this(pt.x, pt.y) + + constructor(x: Int, y: Int) : this(x.toFloat(), y.toFloat()) + + constructor(x: Int, y: Float) : this(x.toFloat(), y) + + constructor(x: Float, y: Int) : this(x, y.toFloat()) + + constructor(x: Float, y: Float) : this(pack(x.toBits(), y.toBits())) + + fun toPointF() = PointF(x, y) + + fun lengthSq(): Float = x * x + y * y + + fun length(): Float = sqrt(lengthSq()) + + fun abs() = VPointF(abs(x), abs(y)) + + fun dot(pt: VPointF): Float = x * pt.x + y * pt.y + + fun normalize(): VPointF { + val length = this.length() + return VPointF(x / length, y / length) + } + + operator fun component1(): Float = x + + operator fun component2(): Float = y + + override fun toString() = "($x, $y)" + + operator fun plus(pt: VPoint) = VPointF(x + pt.x, y + pt.y) + + operator fun plus(pt: VPointF) = VPointF(x + pt.x, y + pt.y) + + operator fun plus(value: Int) = VPointF(x + value, y + value) + + operator fun plus(value: Float) = VPointF(x + value, y + value) + + operator fun minus(pt: VPoint) = VPointF(x - pt.x, y - pt.y) + + operator fun minus(pt: VPointF) = VPointF(x - pt.x, y - pt.y) + + operator fun minus(value: Int) = VPointF(x - value, y - value) + + operator fun minus(value: Float) = VPointF(x - value, y - value) + + operator fun times(pt: VPoint) = VPointF(x * pt.x, y * pt.y) + + operator fun times(pt: VPointF) = VPointF(x * pt.x, y * pt.y) + + operator fun times(value: Int) = VPointF(x * value, y * value) + + operator fun times(value: Float) = VPointF(x * value, y * value) + + operator fun div(pt: VPoint) = VPointF(x / pt.x, y / pt.y) + + operator fun div(pt: VPointF) = VPointF(x / pt.x, y / pt.y) + + operator fun div(value: Int) = VPointF(x / value, y / value) + + operator fun div(value: Float) = VPointF(x / value, y / value) + + companion object { + val ZERO = VPointF(0, 0) + + fun max(lhs: VPointF, rhs: VPointF) = VPointF(max(lhs.x, rhs.x), max(lhs.y, rhs.y)) + + fun min(lhs: VPointF, rhs: VPointF) = VPointF(min(lhs.x, rhs.x), min(lhs.y, rhs.y)) + + operator fun Float.plus(value: VPointF) = VPointF(this + value.x, this + value.y) + + operator fun Int.minus(value: VPointF) = VPointF(this - value.x, this - value.y) + + operator fun Float.minus(value: VPointF) = VPointF(this - value.x, this - value.y) + + operator fun Int.times(value: VPointF) = VPointF(this * value.x, this * value.y) + + operator fun Float.times(value: VPointF) = VPointF(this * value.x, this * value.y) + + operator fun Int.div(value: VPointF) = VPointF(this / value.x, this / value.y) + + operator fun Float.div(value: VPointF) = VPointF(this / value.x, this / value.y) + + val RectF.center: VPointF + get() = VPointF(centerX(), centerY()) + + val RectF.size: VPointF + get() = VPointF(width(), height()) + } +} + +@JvmInline +value class VPoint(private val data: ULong) { + val x: Int + get() = unpackX(data) + + val y: Int + get() = unpackY(data) + + constructor() : this(0, 0) + + constructor(x: Int, y: Int) : this(pack(x, y)) + + fun toPoint() = Point(x, y) + + fun abs() = VPoint(abs(x), abs(y)) + + operator fun component1(): Int = x + + operator fun component2(): Int = y + + override fun toString() = "($x, $y)" + + operator fun plus(pt: VPoint) = VPoint(x + pt.x, y + pt.y) + + operator fun plus(pt: VPointF) = VPointF(x + pt.x, y + pt.y) + + operator fun plus(value: Int) = VPoint(x + value, y + value) + + operator fun plus(value: Float) = VPointF(x + value, y + value) + + operator fun minus(pt: VPoint) = VPoint(x - pt.x, y - pt.y) + + operator fun minus(pt: VPointF) = VPointF(x - pt.x, y - pt.y) + + operator fun minus(value: Int) = VPoint(x - value, y - value) + + operator fun minus(value: Float) = VPointF(x - value, y - value) + + operator fun times(pt: VPoint) = VPoint(x * pt.x, y * pt.y) + + operator fun times(pt: VPointF) = VPointF(x * pt.x, y * pt.y) + + operator fun times(value: Int) = VPoint(x * value, y * value) + + operator fun times(value: Float) = VPointF(x * value, y * value) + + operator fun div(pt: VPoint) = VPoint(x / pt.x, y / pt.y) + + operator fun div(pt: VPointF) = VPointF(x / pt.x, y / pt.y) + + operator fun div(value: Int) = VPoint(x / value, y / value) + + operator fun div(value: Float) = VPointF(x / value, y / value) + + companion object { + val ZERO = VPoint(0, 0) + + fun max(lhs: VPoint, rhs: VPoint) = VPoint(max(lhs.x, rhs.x), max(lhs.y, rhs.y)) + + fun min(lhs: VPoint, rhs: VPoint) = VPoint(min(lhs.x, rhs.x), min(lhs.y, rhs.y)) + + operator fun Int.plus(value: VPoint) = VPoint(this + value.x, this + value.y) + + operator fun Float.plus(value: VPoint) = VPointF(this + value.x, this + value.y) + + operator fun Int.minus(value: VPoint) = VPoint(this - value.x, this - value.y) + + operator fun Float.minus(value: VPoint) = VPointF(this - value.x, this - value.y) + + operator fun Int.times(value: VPoint) = VPoint(this * value.x, this * value.y) + + operator fun Float.times(value: VPoint) = VPointF(this * value.x, this * value.y) + + operator fun Int.div(value: VPoint) = VPoint(this / value.x, this / value.y) + + operator fun Float.div(value: VPoint) = VPointF(this / value.x, this / value.y) + + val Rect.center: VPoint + get() = VPoint(centerX(), centerY()) + + val Rect.size: VPoint + get() = VPoint(width(), height()) + } +} diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ViewUtils.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ViewUtils.kt new file mode 100644 index 000000000000..1e90a2370786 --- /dev/null +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ViewUtils.kt @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.shared.clocks + +import android.graphics.Rect +import android.view.View +import com.android.systemui.shared.clocks.VPoint.Companion.center +import com.android.systemui.shared.clocks.VPointF.Companion.center + +object ViewUtils { + fun View.computeLayoutDiff(targetRegion: Rect, isLargeClock: Boolean): VPointF { + val parent = this.parent + if (parent is View && parent.isLaidOut() && isLargeClock) { + return targetRegion.center - parent.size / 2f + } + return VPointF.ZERO + } + + val View.size: VPointF + get() = VPointF(width, height) + + val View.measuredSize: VPointF + get() = VPointF(measuredWidth, measuredHeight) +} diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt index a9f91e077651..2d0ca5331299 100644 --- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/FlexClockView.kt @@ -17,28 +17,37 @@ package com.android.systemui.shared.clocks.view import android.graphics.Canvas -import android.graphics.Point +import android.graphics.RectF import android.icu.text.NumberFormat import android.util.MathUtils.constrainedMap import android.view.View import android.view.ViewGroup -import android.widget.FrameLayout import android.widget.RelativeLayout import androidx.annotation.VisibleForTesting +import androidx.core.view.children import com.android.app.animation.Interpolators import com.android.systemui.customization.R import com.android.systemui.plugins.clocks.ClockFontAxisSetting import com.android.systemui.plugins.clocks.ClockLogger +import com.android.systemui.shared.clocks.CanvasUtil.translate +import com.android.systemui.shared.clocks.CanvasUtil.use import com.android.systemui.shared.clocks.ClockContext import com.android.systemui.shared.clocks.DigitTranslateAnimator +import com.android.systemui.shared.clocks.VPointF +import com.android.systemui.shared.clocks.VPointF.Companion.max +import com.android.systemui.shared.clocks.VPointF.Companion.times +import com.android.systemui.shared.clocks.ViewUtils.measuredSize import java.util.Locale +import kotlin.collections.filterNotNull +import kotlin.collections.map import kotlin.math.abs import kotlin.math.max import kotlin.math.min +import kotlin.math.roundToInt fun clamp(value: Float, minVal: Float, maxVal: Float): Float = max(min(value, maxVal), minVal) -class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { +class FlexClockView(clockCtx: ClockContext) : ViewGroup(clockCtx.context) { protected val logger = ClockLogger(this, clockCtx.messageBuffer, this::class.simpleName!!) get() = field ?: ClockLogger.INIT_LOGGER @@ -46,13 +55,13 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { var isAnimationEnabled = true set(value) { field = value - digitalClockTextViewMap.forEach { _, view -> view.isAnimationEnabled = value } + childViews.forEach { view -> view.isAnimationEnabled = value } } var dozeFraction: Float = 0F set(value) { field = value - digitalClockTextViewMap.forEach { _, view -> view.dozeFraction = field } + childViews.forEach { view -> view.dozeFraction = field } } var isReactiveTouchInteractionEnabled = false @@ -60,12 +69,20 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { field = value } - var digitalClockTextViewMap = mutableMapOf<Int, SimpleDigitalClockTextView>() - private val digitLeftTopMap = mutableMapOf<Int, Point>() + var _childViews: List<SimpleDigitalClockTextView>? = null + val childViews: List<SimpleDigitalClockTextView> + get() { + return _childViews + ?: this.children + .map { child -> child as? SimpleDigitalClockTextView } + .filterNotNull() + .toList() + .also { _childViews = it } + } - private var maxSingleDigitSize = Point(-1, -1) - private val lockscreenTranslate = Point(0, 0) - private var aodTranslate = Point(0, 0) + private var maxChildSize = VPointF(-1, -1) + private val lockscreenTranslate = VPointF.ZERO + private var aodTranslate = VPointF.ZERO private var onAnimateDoze: (() -> Unit)? = null private var isDozeReadyToAnimate = false @@ -85,63 +102,53 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { private val digitOffsets = mutableMapOf<Int, Float>() - protected fun calculateSize(widthMeasureSpec: Int, heightMeasureSpec: Int): Point? { - maxSingleDigitSize = Point(-1, -1) - val viewHeight: (textView: SimpleDigitalClockTextView) -> Int = { textView -> - if (isMonoVerticalNumericLineSpacing) { - maxSingleDigitSize.y - } else { - (textView.paint.fontMetrics.descent - textView.paint.fontMetrics.ascent).toInt() + protected fun calculateSize( + widthMeasureSpec: Int, + heightMeasureSpec: Int, + shouldMeasureChildren: Boolean, + ): VPointF { + maxChildSize = VPointF(-1, -1) + fun SimpleDigitalClockTextView.getSize() = VPointF(measuredWidth, measuredHeight) + + childViews.forEach { textView -> + if (shouldMeasureChildren) { + textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED) } + maxChildSize = max(maxChildSize, textView.getSize()) } - - digitalClockTextViewMap.forEach { (_, textView) -> - textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED) - maxSingleDigitSize.x = max(maxSingleDigitSize.x, textView.measuredWidth) - maxSingleDigitSize.y = max(viewHeight(textView), textView.measuredHeight) - } - aodTranslate = Point(0, 0) + aodTranslate = VPointF.ZERO // TODO(b/364680879): Cleanup /* - aodTranslate = Point( - (maxSingleDigitSize.x * AOD_HORIZONTAL_TRANSLATE_RATIO).toInt(), - (maxSingleDigitSize.y * AOD_VERTICAL_TRANSLATE_RATIO).toInt()) - */ - return Point( - ((maxSingleDigitSize.x + abs(aodTranslate.x)) * 2), - ((maxSingleDigitSize.y + abs(aodTranslate.y)) * 2), + aodTranslate = VPointF( + maxChildSize.x * AOD_HORIZONTAL_TRANSLATE_RATIO, + maxChildSize.y * AOD_VERTICAL_TRANSLATE_RATIO ) - } + */ - protected fun calculateLeftTopPosition() { - digitLeftTopMap[R.id.HOUR_FIRST_DIGIT] = Point(0, 0) - digitLeftTopMap[R.id.HOUR_SECOND_DIGIT] = Point(maxSingleDigitSize.x, 0) - digitLeftTopMap[R.id.MINUTE_FIRST_DIGIT] = Point(0, maxSingleDigitSize.y) - digitLeftTopMap[R.id.MINUTE_SECOND_DIGIT] = Point(maxSingleDigitSize) - digitLeftTopMap[R.id.HOUR_DIGIT_PAIR] = Point(maxSingleDigitSize.x / 2, 0) - // Add a small vertical buffer for the second digit pair - digitLeftTopMap[R.id.MINUTE_DIGIT_PAIR] = - Point(maxSingleDigitSize.x / 2, (maxSingleDigitSize.y * 1.05f).toInt()) - digitLeftTopMap.forEach { (_, point) -> - point.x += abs(aodTranslate.x) - point.y += abs(aodTranslate.y) - } + val xScale = if (childViews.size < 4) 1f else 2f + val yBuffer = context.resources.getDimensionPixelSize(R.dimen.clock_vertical_digit_buffer) + return (maxChildSize + aodTranslate.abs()) * VPointF(xScale, 2f) + VPointF(0f, yBuffer) } - override fun addView(child: View?) { + override fun onViewAdded(child: View?) { if (child == null) return - logger.addView(child) - super.addView(child) + logger.onViewAdded(child) + super.onViewAdded(child) (child as? SimpleDigitalClockTextView)?.let { - it.digitTranslateAnimator = DigitTranslateAnimator(::invalidate) - digitalClockTextViewMap[child.id] = child + it.digitTranslateAnimator = DigitTranslateAnimator { invalidate() } } child.setWillNotDraw(true) + _childViews = null + } + + override fun onViewRemoved(child: View?) { + super.onViewRemoved(child) + _childViews = null } fun refreshTime() { logger.refreshTime() - digitalClockTextViewMap.forEach { (_, textView) -> textView.refreshText() } + childViews.forEach { textView -> textView.refreshText() } } override fun setVisibility(visibility: Int) { @@ -164,38 +171,97 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { super.requestLayout() } + fun updateMeasuredSize() = + updateMeasuredSize( + measuredWidthAndState, + measuredHeightAndState, + shouldMeasureChildren = false, + ) + + private fun updateMeasuredSize( + widthMeasureSpec: Int = measuredWidthAndState, + heightMeasureSpec: Int = measuredHeightAndState, + shouldMeasureChildren: Boolean, + ) { + val size = calculateSize(widthMeasureSpec, heightMeasureSpec, shouldMeasureChildren) + setMeasuredDimension(size.x.roundToInt(), size.y.roundToInt()) + } + + fun updateLocation() { + val layoutBounds = this.layoutBounds ?: return + setFrame( + (layoutBounds.centerX() - measuredWidth / 2f).roundToInt(), + (layoutBounds.centerY() - measuredHeight / 2f).roundToInt(), + (layoutBounds.centerX() + measuredWidth / 2f).roundToInt(), + (layoutBounds.centerY() + measuredHeight / 2f).roundToInt(), + ) + updateChildFrames(isLayout = false) + } + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { - logger.onMeasure() - calculateSize(widthMeasureSpec, heightMeasureSpec)?.let { size -> - setMeasuredDimension(size.x, size.y) - } ?: run { super.onMeasure(widthMeasureSpec, heightMeasureSpec) } - calculateLeftTopPosition() + logger.onMeasure(widthMeasureSpec, heightMeasureSpec) + updateMeasuredSize(widthMeasureSpec, heightMeasureSpec, shouldMeasureChildren = true) isDozeReadyToAnimate = true onAnimateDoze?.invoke() onAnimateDoze = null } + private val layoutBounds = RectF() + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { - logger.onLayout() - super.onLayout(changed, left, top, right, bottom) + logger.onLayout(changed, left, top, right, bottom) + + layoutBounds.left = left.toFloat() + layoutBounds.top = top.toFloat() + layoutBounds.right = right.toFloat() + layoutBounds.bottom = bottom.toFloat() + + updateChildFrames(isLayout = true) + } + + private fun updateChildFrames(isLayout: Boolean) { + val yBuffer = context.resources.getDimensionPixelSize(R.dimen.clock_vertical_digit_buffer) + childViews.forEach { child -> + var offset = + maxChildSize.run { + when (child.id) { + R.id.HOUR_FIRST_DIGIT -> VPointF.ZERO + R.id.HOUR_SECOND_DIGIT -> VPointF(x, 0f) + R.id.HOUR_DIGIT_PAIR -> VPointF.ZERO + // Add a small vertical buffer for second line views + R.id.MINUTE_DIGIT_PAIR -> VPointF(0f, y + yBuffer) + R.id.MINUTE_FIRST_DIGIT -> VPointF(0f, y + yBuffer) + R.id.MINUTE_SECOND_DIGIT -> VPointF(x, y + yBuffer) + else -> VPointF.ZERO + } + } + + val childSize = child.measuredSize + offset += aodTranslate.abs() + + // Horizontal offset to center each view in the available space + val midX = if (childViews.size < 4) measuredWidth / 2f else measuredWidth / 4f + offset += VPointF(midX - childSize.x / 2f, 0f) + + val setPos = if (isLayout) child::layout else child::setLeftTopRightBottom + setPos( + offset.x.roundToInt(), + offset.y.roundToInt(), + (offset.x + childSize.x).roundToInt(), + (offset.y + childSize.y).roundToInt(), + ) + } } override fun onDraw(canvas: Canvas) { logger.onDraw() - super.onDraw(canvas) - - digitalClockTextViewMap.forEach { (id, textView) -> - // save canvas location in anticipation of restoration later - canvas.save() - val xTranslateAmount = - digitOffsets.getOrDefault(id, 0f) + (digitLeftTopMap[id]?.x?.toFloat() ?: 0f) - // move canvas to location that the textView would like - canvas.translate(xTranslateAmount, digitLeftTopMap[id]?.y?.toFloat() ?: 0f) - // draw the textView at the location of the canvas above - textView.draw(canvas) - // reset the canvas location back to 0 without drawing - canvas.restore() + childViews.forEach { child -> + canvas.use { canvas -> + canvas.translate(digitOffsets.getOrDefault(child.id, 0f), 0f) + canvas.translate(child.left.toFloat(), child.top.toFloat()) + child.draw(canvas) + } } } @@ -205,26 +271,26 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { } fun updateColor(color: Int) { - digitalClockTextViewMap.forEach { _, view -> view.updateColor(color) } + childViews.forEach { view -> view.updateColor(color) } invalidate() } fun updateAxes(axes: List<ClockFontAxisSetting>) { - digitalClockTextViewMap.forEach { _, view -> view.updateAxes(axes) } + childViews.forEach { view -> view.updateAxes(axes) } requestLayout() } fun onFontSettingChanged(fontSizePx: Float) { - digitalClockTextViewMap.forEach { _, view -> view.applyTextSize(fontSizePx) } + childViews.forEach { view -> view.applyTextSize(fontSizePx) } } fun animateDoze(isDozing: Boolean, isAnimated: Boolean) { fun executeDozeAnimation() { - digitalClockTextViewMap.forEach { _, view -> view.animateDoze(isDozing, isAnimated) } - if (maxSingleDigitSize.x < 0 || maxSingleDigitSize.y < 0) { + childViews.forEach { view -> view.animateDoze(isDozing, isAnimated) } + if (maxChildSize.x < 0 || maxChildSize.y < 0) { measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED) } - digitalClockTextViewMap.forEach { (id, textView) -> + childViews.forEach { textView -> textView.digitTranslateAnimator?.let { if (!isDozing) { it.animatePosition( @@ -252,8 +318,8 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { } fun animateCharge() { - digitalClockTextViewMap.forEach { _, view -> view.animateCharge() } - digitalClockTextViewMap.forEach { (id, textView) -> + childViews.forEach { view -> view.animateCharge() } + childViews.forEach { textView -> textView.digitTranslateAnimator?.let { it.animatePosition( animate = isAnimationEnabled, @@ -266,14 +332,14 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { duration = CHARGING_TRANSITION_DURATION, targetTranslation = updateDirectionalTargetTranslate( - id, + textView.id, if (dozeFraction == 1F) aodTranslate else lockscreenTranslate, ), ) }, targetTranslation = updateDirectionalTargetTranslate( - id, + textView.id, if (dozeFraction == 1F) lockscreenTranslate else aodTranslate, ), ) @@ -282,7 +348,7 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { } fun animateFidget(x: Float, y: Float) { - digitalClockTextViewMap.forEach { _, view -> view.animateFidget(x, y) } + childViews.forEach { view -> view.animateFidget(x, y) } } private fun updateLocale(locale: Locale) { @@ -321,7 +387,7 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { // so we no longer need to multiply direct sign to moveAmountDeltaForDigit val currentMoveAmount = left - clockStartLeft var index = 0 - digitalClockTextViewMap.forEach { id, _ -> + childViews.forEach { child -> val digitFraction = getDigitFraction( digit = index++, @@ -332,7 +398,7 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { val moveAmountForDigit = currentMoveAmount * digitFraction var moveAmountDeltaForDigit = moveAmountForDigit - currentMoveAmount if (isMovingToCenter && moveAmountForDigit < 0) moveAmountDeltaForDigit *= -1 - digitOffsets[id] = moveAmountDeltaForDigit + digitOffsets[child.id] = moveAmountDeltaForDigit invalidate() } } @@ -353,8 +419,7 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { /* rangeMin= */ 0.0f, /* rangeMax= */ 1.0f, /* valueMin= */ digitInitialDelay, - /* valueMax= */ digitInitialDelay + - availableAnimationTime(digitalClockTextViewMap.size), + /* valueMax= */ digitInitialDelay + availableAnimationTime(childViews.size), /* value= */ fraction, ) ) @@ -401,35 +466,17 @@ class FlexClockView(clockCtx: ClockContext) : FrameLayout(clockCtx.context) { ) // Use the sign of targetTranslation to control the direction of digit translation - fun updateDirectionalTargetTranslate(id: Int, targetTranslation: Point): Point { - val outPoint = Point(targetTranslation) - when (id) { - R.id.HOUR_FIRST_DIGIT -> { - outPoint.x *= -1 - outPoint.y *= -1 - } - R.id.HOUR_SECOND_DIGIT -> { - outPoint.x *= 1 - outPoint.y *= -1 - } - R.id.MINUTE_FIRST_DIGIT -> { - outPoint.x *= -1 - outPoint.y *= 1 + fun updateDirectionalTargetTranslate(id: Int, targetTranslation: VPointF): VPointF { + return targetTranslation * + when (id) { + R.id.HOUR_FIRST_DIGIT -> VPointF(-1, -1) + R.id.HOUR_SECOND_DIGIT -> VPointF(1, -1) + R.id.MINUTE_FIRST_DIGIT -> VPointF(-1, 1) + R.id.MINUTE_SECOND_DIGIT -> VPointF(1, 1) + R.id.HOUR_DIGIT_PAIR -> VPointF(-1, -1) + R.id.MINUTE_DIGIT_PAIR -> VPointF(-1, 1) + else -> VPointF(1, 1) } - R.id.MINUTE_SECOND_DIGIT -> { - outPoint.x *= 1 - outPoint.y *= 1 - } - R.id.HOUR_DIGIT_PAIR -> { - outPoint.x *= -1 - outPoint.y *= -1 - } - R.id.MINUTE_DIGIT_PAIR -> { - outPoint.x *= -1 - outPoint.y *= 1 - } - } - return outPoint } } } diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt index b7ce20ec32d1..015a82707ea2 100644 --- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt +++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/view/SimpleDigitalClockTextView.kt @@ -20,16 +20,16 @@ import android.annotation.SuppressLint import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint -import android.graphics.Point import android.graphics.PorterDuff import android.graphics.PorterDuffXfermode import android.graphics.Rect +import android.graphics.RectF import android.os.VibrationEffect import android.text.Layout import android.text.TextPaint import android.util.AttributeSet import android.util.Log -import android.util.MathUtils +import android.util.MathUtils.lerp import android.util.TypedValue import android.view.View.MeasureSpec.EXACTLY import android.view.animation.Interpolator @@ -44,18 +44,33 @@ import com.android.systemui.plugins.clocks.ClockFontAxisSetting import com.android.systemui.plugins.clocks.ClockFontAxisSetting.Companion.replace import com.android.systemui.plugins.clocks.ClockFontAxisSetting.Companion.toFVar import com.android.systemui.plugins.clocks.ClockLogger +import com.android.systemui.shared.clocks.CanvasUtil.translate +import com.android.systemui.shared.clocks.CanvasUtil.use import com.android.systemui.shared.clocks.ClockContext import com.android.systemui.shared.clocks.DigitTranslateAnimator import com.android.systemui.shared.clocks.DimensionParser import com.android.systemui.shared.clocks.FLEX_CLOCK_ID import com.android.systemui.shared.clocks.FontTextStyle +import com.android.systemui.shared.clocks.VPoint +import com.android.systemui.shared.clocks.VPointF +import com.android.systemui.shared.clocks.VPointF.Companion.size +import com.android.systemui.shared.clocks.ViewUtils.measuredSize +import com.android.systemui.shared.clocks.ViewUtils.size import com.android.systemui.shared.clocks.toClockAxisSetting import java.lang.Thread import kotlin.math.max import kotlin.math.min +import kotlin.math.roundToInt private val TAG = SimpleDigitalClockTextView::class.simpleName!! +private fun Paint.getTextBounds(text: CharSequence, result: RectF = RectF()): RectF { + val rect = Rect() + this.getTextBounds(text, 0, text.length, rect) + result.set(rect) + return result +} + enum class VerticalAlignment { TOP, BOTTOM, @@ -103,27 +118,27 @@ open class SimpleDigitalClockTextView( } private val parser = DimensionParser(clockCtx.context) - var maxSingleDigitHeight = -1 - var maxSingleDigitWidth = -1 + var maxSingleDigitHeight = -1f + var maxSingleDigitWidth = -1f var digitTranslateAnimator: DigitTranslateAnimator? = null - var aodFontSizePx: Float = -1F + var aodFontSizePx = -1f // Store the font size when there's no height constraint as a reference when adjusting font size - private var lastUnconstrainedTextSize: Float = Float.MAX_VALUE + private var lastUnconstrainedTextSize = Float.MAX_VALUE // Calculated by height of styled text view / text size // Used as a factor to calculate a smaller font size when text height is constrained - @VisibleForTesting var fontSizeAdjustFactor = 1F + @VisibleForTesting var fontSizeAdjustFactor = 1f private val initThread = Thread.currentThread() // textBounds is the size of text in LS, which only measures current text in lockscreen style - var textBounds = Rect() + var textBounds = RectF() // prevTextBounds and targetTextBounds are to deal with dozing animation between LS and AOD // especially for the textView which has different bounds during the animation // prevTextBounds holds the state we are transitioning from - private val prevTextBounds = Rect() + private val prevTextBounds = RectF() // targetTextBounds holds the state we are interpolating to - private val targetTextBounds = Rect() + private val targetTextBounds = RectF() protected val logger = ClockLogger(this, clockCtx.messageBuffer, this::class.simpleName!!) get() = field ?: ClockLogger.INIT_LOGGER @@ -141,14 +156,14 @@ open class SimpleDigitalClockTextView( var verticalAlignment: VerticalAlignment = VerticalAlignment.BASELINE var horizontalAlignment: HorizontalAlignment = HorizontalAlignment.LEFT var isAnimationEnabled = true - var dozeFraction: Float = 0F + var dozeFraction: Float = 0f set(value) { field = value invalidate() } - var textBorderWidth = 0F - var baselineFromMeasure = 0 + var textBorderWidth = 0f + var measuredBaseline = 0 var lockscreenColor = Color.WHITE fun updateColor(color: Int) { @@ -169,7 +184,7 @@ open class SimpleDigitalClockTextView( lockScreenPaint.typeface = typefaceCache.getTypefaceForVariant(lsFontVariation) typeface = lockScreenPaint.typeface - lockScreenPaint.getTextBounds(text, 0, text.length, textBounds) + lockScreenPaint.getTextBounds(text, textBounds) targetTextBounds.set(textBounds) textAnimator.setTextStyle(TextAnimator.Style(fVar = lsFontVariation)) @@ -195,7 +210,7 @@ open class SimpleDigitalClockTextView( } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { - logger.onMeasure() + logger.onMeasure(widthMeasureSpec, heightMeasureSpec) super.onMeasure(widthMeasureSpec, heightMeasureSpec) val layout = this.layout @@ -206,7 +221,7 @@ open class SimpleDigitalClockTextView( } else { textAnimator.updateLayout(layout) } - baselineFromMeasure = layout.getLineBaseline(0) + measuredBaseline = layout.getLineBaseline(0) } else { val currentThread = Thread.currentThread() Log.wtf( @@ -216,24 +231,33 @@ open class SimpleDigitalClockTextView( ) } - setInterpolatedViewBounds(getInterpolatedTextBounds(), widthMeasureSpec, heightMeasureSpec) + val bounds = getInterpolatedTextBounds() + val size = computeMeasuredSize(bounds, widthMeasureSpec, heightMeasureSpec) + setInterpolatedSize(size, widthMeasureSpec, heightMeasureSpec) } + private var drawnProgress: Float? = null + override fun onDraw(canvas: Canvas) { logger.onDraw(textAnimator.textInterpolator.shapedText) - val translation = getLocalTranslation() - canvas.translate(translation.x.toFloat(), translation.y.toFloat()) - digitTranslateAnimator?.let { - canvas.translate(it.updatedTranslate.x.toFloat(), it.updatedTranslate.y.toFloat()) + val interpProgress = getInterpolatedProgress() + val interpBounds = getInterpolatedTextBounds(interpProgress) + if (interpProgress != drawnProgress) { + drawnProgress = interpProgress + val measureSize = computeMeasuredSize(interpBounds) + setInterpolatedSize(measureSize) + (parent as? FlexClockView)?.run { + updateMeasuredSize() + updateLocation() + } ?: setInterpolatedLocation(measureSize) } - textAnimator.draw(canvas) - - digitTranslateAnimator?.let { - canvas.translate(-it.updatedTranslate.x.toFloat(), -it.updatedTranslate.y.toFloat()) + canvas.use { + digitTranslateAnimator?.apply { canvas.translate(currentTranslation) } + canvas.translate(getDrawTranslation(interpBounds)) + textAnimator.draw(canvas) } - canvas.translate(-translation.x.toFloat(), -translation.y.toFloat()) } override fun setVisibility(visibility: Int) { @@ -246,6 +270,18 @@ open class SimpleDigitalClockTextView( super.setAlpha(alpha) } + private val layoutBounds = RectF() + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + super.onLayout(changed, left, top, right, bottom) + logger.onLayout(changed, left, top, right, bottom) + + layoutBounds.left = left.toFloat() + layoutBounds.top = top.toFloat() + layoutBounds.right = right.toFloat() + layoutBounds.bottom = bottom.toFloat() + } + override fun invalidate() { logger.invalidate() super.invalidate() @@ -338,14 +374,9 @@ open class SimpleDigitalClockTextView( } fun refreshText() { - lockScreenPaint.getTextBounds(text, 0, text.length, textBounds) + lockScreenPaint.getTextBounds(text, textBounds) if (this::textAnimator.isInitialized) { - textAnimator.textInterpolator.targetPaint.getTextBounds( - text, - 0, - text.length, - targetTextBounds, - ) + textAnimator.textInterpolator.targetPaint.getTextBounds(text, targetTextBounds) } if (layout == null) { @@ -362,113 +393,135 @@ open class SimpleDigitalClockTextView( id == R.id.MINUTE_SECOND_DIGIT } - private fun getInterpolatedTextBounds(): Rect { - val progress = textAnimator.animator?.let { it.animatedValue as Float } ?: 1f + private fun getInterpolatedProgress(): Float { + return textAnimator.animator?.let { it.animatedValue as Float } ?: 1f + } + + /** Returns the interpolated text bounding rect based on interpolation progress */ + private fun getInterpolatedTextBounds(progress: Float = getInterpolatedProgress()): RectF { if (!textAnimator.isRunning || progress >= 1f) { - return Rect(targetTextBounds) + return RectF(targetTextBounds) } - val interpolatedTextBounds = Rect() - interpolatedTextBounds.left = - MathUtils.lerp(prevTextBounds.left, targetTextBounds.left, progress).toInt() - interpolatedTextBounds.right = - MathUtils.lerp(prevTextBounds.right, targetTextBounds.right, progress).toInt() - interpolatedTextBounds.top = - MathUtils.lerp(prevTextBounds.top, targetTextBounds.top, progress).toInt() - interpolatedTextBounds.bottom = - MathUtils.lerp(prevTextBounds.bottom, targetTextBounds.bottom, progress).toInt() - return interpolatedTextBounds + return RectF().apply { + left = lerp(prevTextBounds.left, targetTextBounds.left, progress) + right = lerp(prevTextBounds.right, targetTextBounds.right, progress) + top = lerp(prevTextBounds.top, targetTextBounds.top, progress) + bottom = lerp(prevTextBounds.bottom, targetTextBounds.bottom, progress) + } } - private fun setInterpolatedViewBounds( - interpBounds: Rect, + private fun computeMeasuredSize( + interpBounds: RectF, widthMeasureSpec: Int = measuredWidthAndState, heightMeasureSpec: Int = measuredHeightAndState, - ) { - val heightMode = MeasureSpec.getMode(heightMeasureSpec) - val widthMode = MeasureSpec.getMode(widthMeasureSpec) + ): VPointF { + val mode = + VPoint( + x = MeasureSpec.getMode(widthMeasureSpec), + y = MeasureSpec.getMode(heightMeasureSpec), + ) - val heightSpec = - if (heightMode == EXACTLY) { - heightMeasureSpec - } else { - MeasureSpec.makeMeasureSpec( - if (isSingleDigit()) maxSingleDigitHeight - else interpBounds.height() + 2 * lockScreenPaint.strokeWidth.toInt(), - heightMode, - ) - } + return VPointF( + when { + mode.x == EXACTLY -> MeasureSpec.getSize(widthMeasureSpec).toFloat() + else -> interpBounds.width() + 2 * lockScreenPaint.strokeWidth + }, + when { + mode.y == EXACTLY -> MeasureSpec.getSize(heightMeasureSpec).toFloat() + else -> interpBounds.height() + 2 * lockScreenPaint.strokeWidth + }, + ) + } - val widthSpec = - if (widthMode == EXACTLY) { - widthMeasureSpec - } else { - MeasureSpec.makeMeasureSpec( - if (isSingleDigit()) maxSingleDigitWidth - else interpBounds.width() + 2 * lockScreenPaint.strokeWidth.toInt(), - widthMode, - ) - } + /** Set the measured size of the view to match the interpolated text bounds */ + private fun setInterpolatedSize( + measureBounds: VPointF, + widthMeasureSpec: Int = measuredWidthAndState, + heightMeasureSpec: Int = measuredHeightAndState, + ) { + val mode = + VPoint( + x = MeasureSpec.getMode(widthMeasureSpec), + y = MeasureSpec.getMode(heightMeasureSpec), + ) - setMeasuredDimension(widthSpec, heightSpec) + setMeasuredDimension( + MeasureSpec.makeMeasureSpec(measureBounds.x.roundToInt(), mode.x), + MeasureSpec.makeMeasureSpec(measureBounds.y.roundToInt(), mode.y), + ) } - private fun updateXTranslation(inPoint: Point, interpolatedTextBounds: Rect): Point { - when (horizontalAlignment) { - HorizontalAlignment.LEFT -> { - inPoint.x = lockScreenPaint.strokeWidth.toInt() - interpolatedTextBounds.left + /** Set the location of the view to match the interpolated text bounds */ + private fun setInterpolatedLocation(measureSize: VPointF): RectF { + val targetRect = RectF() + targetRect.apply { + when (horizontalAlignment) { + HorizontalAlignment.LEFT -> { + left = layoutBounds.left + right = layoutBounds.left + measureSize.x + } + HorizontalAlignment.CENTER -> { + left = layoutBounds.centerX() - measureSize.x / 2f + right = layoutBounds.centerX() + measureSize.x / 2f + } + HorizontalAlignment.RIGHT -> { + left = layoutBounds.right - measureSize.x + right = layoutBounds.right + } } - HorizontalAlignment.RIGHT -> { - inPoint.x = - measuredWidth - - interpolatedTextBounds.right - - lockScreenPaint.strokeWidth.toInt() - } - HorizontalAlignment.CENTER -> { - inPoint.x = - (measuredWidth - interpolatedTextBounds.width()) / 2 - - interpolatedTextBounds.left - } - } - return inPoint - } - // translation of reference point of text - // used for translation when calling textInterpolator - private fun getLocalTranslation(): Point { - val interpolatedTextBounds = getInterpolatedTextBounds() - setInterpolatedViewBounds(interpolatedTextBounds) - - val localTranslation = Point(0, 0) - val correctedBaseline = if (baseline != -1) baseline else baselineFromMeasure - // get the change from current baseline to expected baseline - when (verticalAlignment) { - VerticalAlignment.CENTER -> { - localTranslation.y = - ((measuredHeight - interpolatedTextBounds.height()) / 2 - - interpolatedTextBounds.top - - correctedBaseline) - } - VerticalAlignment.TOP -> { - localTranslation.y = - (-interpolatedTextBounds.top + lockScreenPaint.strokeWidth - correctedBaseline) - .toInt() - } - VerticalAlignment.BOTTOM -> { - localTranslation.y = - measuredHeight - - interpolatedTextBounds.bottom - - lockScreenPaint.strokeWidth.toInt() - - correctedBaseline - } - VerticalAlignment.BASELINE -> { - // account for max bottom distance of font, so clock doesn't collide with elements - localTranslation.y = - -lockScreenPaint.strokeWidth.toInt() - paint.fontMetrics.descent.toInt() + when (verticalAlignment) { + VerticalAlignment.TOP -> { + top = layoutBounds.top + bottom = layoutBounds.top + measureSize.y + } + VerticalAlignment.CENTER -> { + top = layoutBounds.centerY() - measureSize.y / 2f + bottom = layoutBounds.centerY() + measureSize.y / 2f + } + VerticalAlignment.BOTTOM -> { + top = layoutBounds.bottom - measureSize.y + bottom = layoutBounds.bottom + } + VerticalAlignment.BASELINE -> { + top = layoutBounds.centerY() - measureSize.y / 2f + bottom = layoutBounds.centerY() + measureSize.y / 2f + } } } - return updateXTranslation(localTranslation, interpolatedTextBounds) + setFrame( + targetRect.left.roundToInt(), + targetRect.top.roundToInt(), + targetRect.right.roundToInt(), + targetRect.bottom.roundToInt(), + ) + return targetRect + } + + private fun getDrawTranslation(interpBounds: RectF): VPointF { + val sizeDiff = this.measuredSize - interpBounds.size + val alignment = + VPointF( + when (horizontalAlignment) { + HorizontalAlignment.LEFT -> 0f + HorizontalAlignment.CENTER -> 0.5f + HorizontalAlignment.RIGHT -> 1f + }, + when (verticalAlignment) { + VerticalAlignment.TOP -> 0f + VerticalAlignment.CENTER -> 0.5f + VerticalAlignment.BASELINE -> 0.5f + VerticalAlignment.BOTTOM -> 1f + }, + ) + val renderCorrection = + VPointF( + x = -interpBounds.left, + y = -interpBounds.top - (if (baseline != -1) baseline else measuredBaseline), + ) + return sizeDiff * alignment + renderCorrection } fun applyStyles(textStyle: FontTextStyle, aodStyle: FontTextStyle?) { @@ -476,7 +529,7 @@ open class SimpleDigitalClockTextView( lockScreenPaint.strokeJoin = Paint.Join.ROUND lockScreenPaint.typeface = typefaceCache.getTypefaceForVariant(lsFontVariation) typeface = lockScreenPaint.typeface - textStyle.lineHeight?.let { lineHeight = it.toInt() } + textStyle.lineHeight?.let { lineHeight = it.roundToInt() } this.aodStyle = aodStyle ?: textStyle.copy() aodDozingInterpolator = this.aodStyle.transitionInterpolator ?: Interpolators.LINEAR @@ -487,7 +540,7 @@ open class SimpleDigitalClockTextView( invalidate() } - // When constrainedByHeight is on, targetFontSizePx is the constrained height of textView + /** When constrainedByHeight is on, targetFontSizePx is the constrained height of textView */ fun applyTextSize(targetFontSizePx: Float?, constrainedByHeight: Boolean = false) { val adjustedFontSizePx = adjustFontSize(targetFontSizePx, constrainedByHeight) val fontSizePx = adjustedFontSizePx * (textStyle.fontSizeScale ?: 1f) @@ -496,7 +549,7 @@ open class SimpleDigitalClockTextView( if (fontSizePx > 0) { setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSizePx) lockScreenPaint.textSize = textSize - lockScreenPaint.getTextBounds(text, 0, text.length, textBounds) + lockScreenPaint.getTextBounds(text, textBounds) targetTextBounds.set(textBounds) } if (!constrainedByHeight) { @@ -513,20 +566,19 @@ open class SimpleDigitalClockTextView( } private fun recomputeMaxSingleDigitSizes() { - val rectForCalculate = Rect() - maxSingleDigitHeight = 0 - maxSingleDigitWidth = 0 + maxSingleDigitHeight = 0f + maxSingleDigitWidth = 0f for (i in 0..9) { - lockScreenPaint.getTextBounds("$i", 0, 1, rectForCalculate) + val rectForCalculate = lockScreenPaint.getTextBounds("$i") maxSingleDigitHeight = max(maxSingleDigitHeight, rectForCalculate.height()) maxSingleDigitWidth = max(maxSingleDigitWidth, rectForCalculate.width()) } - maxSingleDigitWidth += 2 * lockScreenPaint.strokeWidth.toInt() - maxSingleDigitHeight += 2 * lockScreenPaint.strokeWidth.toInt() + maxSingleDigitWidth += 2 * lockScreenPaint.strokeWidth + maxSingleDigitHeight += 2 * lockScreenPaint.strokeWidth } - // called without animation, can be used to set the initial state of animator + /** Called without animation, can be used to set the initial state of animator */ private fun setInterpolatorPaint() { if (this::textAnimator.isInitialized) { // set initial style @@ -542,25 +594,19 @@ open class SimpleDigitalClockTextView( } } - /* Called after textAnimator.setTextStyle - * textAnimator.setTextStyle will update targetPaint, - * and rebase if previous animator is canceled - * so basePaint will store the state we transition from + /** + * Called after textAnimator.setTextStyle textAnimator.setTextStyle will update targetPaint, and + * rebase if previous animator is canceled so basePaint will store the state we transition from * and targetPaint will store the state we transition to */ private fun updateTextBoundsForTextAnimator() { - textAnimator.textInterpolator.basePaint.getTextBounds(text, 0, text.length, prevTextBounds) - textAnimator.textInterpolator.targetPaint.getTextBounds( - text, - 0, - text.length, - targetTextBounds, - ) + textAnimator.textInterpolator.basePaint.getTextBounds(text, prevTextBounds) + textAnimator.textInterpolator.targetPaint.getTextBounds(text, targetTextBounds) } - /* - * Adjust text size to adapt to large display / font size - * where the text view will be constrained by height + /** + * Adjust text size to adapt to large display / font size where the text view will be + * constrained by height */ private fun adjustFontSize(targetFontSizePx: Float?, constrainedByHeight: Boolean): Float { return if (constrainedByHeight) { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt index 88c9e74551fd..0cfb36d58f89 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt @@ -36,6 +36,7 @@ import android.testing.ViewUtils import android.view.View import android.view.WindowInsets import android.view.WindowManager +import android.view.accessibility.AccessibilityManager import android.widget.ScrollView import androidx.constraintlayout.widget.ConstraintLayout import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -114,6 +115,7 @@ open class AuthContainerViewTest : SysuiTestCase() { @Mock lateinit var selectedUserInteractor: SelectedUserInteractor @Mock private lateinit var packageManager: PackageManager @Mock private lateinit var activityTaskManager: ActivityTaskManager + @Mock private lateinit var accessibilityManager: AccessibilityManager @Mock private lateinit var lazyViewCapture: Lazy<ViewCapture> private lateinit var displayRepository: FakeDisplayRepository @@ -678,6 +680,7 @@ open class AuthContainerViewTest : SysuiTestCase() { udfpsUtils, iconProvider, activityTaskManager, + accessibilityManager, ), { credentialViewModel }, fakeExecutor, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt index 781e416e6374..ede29d8f8f75 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/common/data/repository/PackageInstallerMonitorTest.kt @@ -26,6 +26,9 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.PackageInstallSession import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.applicationCoroutineScope +import com.android.systemui.kosmos.backgroundScope +import com.android.systemui.kosmos.collectLastValue +import com.android.systemui.kosmos.runTest import com.android.systemui.kosmos.testScope import com.android.systemui.log.logcatLogBuffer import com.android.systemui.testKosmos @@ -173,6 +176,58 @@ class PackageInstallerMonitorTest : SysuiTestCase() { } @Test + fun onCreateUpdatedSession_ignoreNullPackageNameSessions() = + kosmos.runTest { + val nullPackageSession = + SessionInfo().apply { + sessionId = 1 + appPackageName = null + appIcon = icon1 + } + + val wellFormedSession = + SessionInfo().apply { + sessionId = 2 + appPackageName = "pkg_name" + appIcon = icon2 + } + + defaultSessions = listOf(wellFormedSession) + + whenever(packageInstaller.allSessions).thenReturn(defaultSessions) + whenever(packageInstaller.getSessionInfo(1)).thenReturn(nullPackageSession) + whenever(packageInstaller.getSessionInfo(2)).thenReturn(wellFormedSession) + + val packageInstallerMonitor = + PackageInstallerMonitor( + handler, + backgroundScope, + logcatLogBuffer("PackageInstallerRepositoryImplTest"), + packageInstaller, + ) + + val sessions by collectLastValue(packageInstallerMonitor.installSessionsForPrimaryUser) + + // Verify flow updated with the new session + assertThat(sessions) + .comparingElementsUsing(represents) + .containsExactlyElementsIn(defaultSessions) + + val callback = + withArgCaptor<PackageInstaller.SessionCallback> { + verify(packageInstaller).registerSessionCallback(capture(), eq(handler)) + } + + // New session added + callback.onCreated(nullPackageSession.sessionId) + + // Verify flow updated with the new session + assertThat(sessions) + .comparingElementsUsing(represents) + .containsExactlyElementsIn(defaultSessions) + } + + @Test fun installSessions_newSessionsAreAdded() = testScope.runTest { val installSessions by collectLastValue(underTest.installSessionsForPrimaryUser) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt index dfea78458b9d..197b0eea05cb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/display/data/repository/DisplayRepositoryTest.kt @@ -23,15 +23,16 @@ import android.view.Display import android.view.Display.DEFAULT_DISPLAY import android.view.Display.TYPE_EXTERNAL import android.view.Display.TYPE_INTERNAL +import android.view.IWindowManager import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.FlowValue import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues +import com.android.systemui.statusbar.CommandQueue import com.android.systemui.util.mockito.kotlinArgumentCaptor import com.android.systemui.util.mockito.mock -import com.android.systemui.util.mockito.whenever import com.android.systemui.utils.os.FakeHandler import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.test.TestScope @@ -46,6 +47,7 @@ import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.kotlin.eq +import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) @TestableLooper.RunWithLooper @@ -53,7 +55,11 @@ import org.mockito.kotlin.eq class DisplayRepositoryTest : SysuiTestCase() { private val displayManager = mock<DisplayManager>() + private val commandQueue = mock<CommandQueue>() + private val windowManager = mock<IWindowManager>() + private val displayListener = kotlinArgumentCaptor<DisplayManager.DisplayListener>() + private val commandQueueCallbacks = kotlinArgumentCaptor<CommandQueue.Callbacks>() private val connectedDisplayListener = kotlinArgumentCaptor<DisplayManager.DisplayListener>() private val testHandler = FakeHandler(Looper.getMainLooper()) @@ -67,6 +73,8 @@ class DisplayRepositoryTest : SysuiTestCase() { private val displayRepository: DisplayRepositoryImpl by lazy { DisplayRepositoryImpl( displayManager, + commandQueue, + windowManager, testHandler, TestScope(UnconfinedTestDispatcher()), UnconfinedTestDispatcher(), @@ -513,6 +521,115 @@ class DisplayRepositoryTest : SysuiTestCase() { assertThat(displayRepository.getDisplay(2)).isNull() } + @Test + fun displayIdsWithSystemDecorations_onStart_emitsDisplaysWithSystemDecorations() = + testScope.runTest { + setDisplays(0, 1, 2) + whenever(windowManager.shouldShowSystemDecors(0)).thenReturn(true) + whenever(windowManager.shouldShowSystemDecors(1)).thenReturn(false) + whenever(windowManager.shouldShowSystemDecors(2)).thenReturn(true) + + val displayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + assertThat(displayIdsWithSystemDecorations).containsExactly(0, 2) + } + + @Test + fun displayIdsWithSystemDecorations_systemDecorationAdded_emitsIncludingNewDisplayIds() = + testScope.runTest { + setDisplays(0) + whenever(windowManager.shouldShowSystemDecors(0)).thenReturn(true) + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + sendOnDisplayAddSystemDecorations(2) + sendOnDisplayAddSystemDecorations(3) + + assertThat(lastDisplayIdsWithSystemDecorations).containsExactly(0, 2, 3) + } + + @Test + fun displayIdsWithSystemDecorations_systemDecorationAdded_emitsToNewSubscribers() = + testScope.runTest { + setDisplays(0) + whenever(windowManager.shouldShowSystemDecors(0)).thenReturn(true) + + val priorDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + sendOnDisplayAddSystemDecorations(1) + assertThat(priorDisplayIdsWithSystemDecorations).containsExactly(0, 1) + + val lastDisplayIdsWithSystemDecorations by + collectLastValue(displayRepository.displayIdsWithSystemDecorations) + assertThat(lastDisplayIdsWithSystemDecorations).containsExactly(0, 1) + } + + @Test + fun displayIdsWithSystemDecorations_systemDecorationRemoved_doesNotEmitRemovedDisplayId() = + testScope.runTest { + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + sendOnDisplayAddSystemDecorations(1) + sendOnDisplayAddSystemDecorations(2) + sendOnDisplayRemoveSystemDecorations(2) + + assertThat(lastDisplayIdsWithSystemDecorations).containsExactly(1) + } + + @Test + fun displayIdsWithSystemDecorations_systemDecorationsRemoved_nonExistentDisplay_noEffect() = + testScope.runTest { + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + sendOnDisplayAddSystemDecorations(1) + sendOnDisplayRemoveSystemDecorations(2) + + assertThat(lastDisplayIdsWithSystemDecorations).containsExactly(1) + } + + @Test + fun displayIdsWithSystemDecorations_displayRemoved_doesNotEmitRemovedDisplayId() = + testScope.runTest { + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + sendOnDisplayAddSystemDecorations(1) + sendOnDisplayAddSystemDecorations(2) + sendOnDisplayRemoved(2) + + assertThat(lastDisplayIdsWithSystemDecorations).containsExactly(1) + } + + @Test + fun displayIdsWithSystemDecorations_displayRemoved_nonExistentDisplay_noEffect() = + testScope.runTest { + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + sendOnDisplayAddSystemDecorations(1) + sendOnDisplayRemoved(2) + + assertThat(lastDisplayIdsWithSystemDecorations).containsExactly(1) + } + + @Test + fun displayIdsWithSystemDecorations_onFlowCollection_commandQueueCallbackRegistered() = + testScope.runTest { + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + assertThat(lastDisplayIdsWithSystemDecorations).isEmpty() + + verify(commandQueue, times(1)).addCallback(any()) + } + + @Test + fun displayIdsWithSystemDecorations_afterFlowCollection_commandQueueCallbackUnregistered() { + testScope.runTest { + val lastDisplayIdsWithSystemDecorations by latestDisplayIdsWithSystemDecorationsValue() + + assertThat(lastDisplayIdsWithSystemDecorations).isEmpty() + + verify(commandQueue, times(1)).addCallback(any()) + } + verify(commandQueue, times(1)).removeCallback(any()) + } + private fun Iterable<Display>.ids(): List<Int> = map { it.displayId } private fun Iterable<Set<Display>>.toIdSets(): List<Set<Int>> = map { it.ids().toSet() } @@ -550,6 +667,14 @@ class DisplayRepositoryTest : SysuiTestCase() { return flowValue } + // Wrapper to capture the displayListener and commandQueueCallbacks. + private fun TestScope.latestDisplayIdsWithSystemDecorationsValue(): FlowValue<Set<Int>?> { + val flowValue = collectLastValue(displayRepository.displayIdsWithSystemDecorations) + captureAddedRemovedListener() + captureCommandQueueCallbacks() + return flowValue + } + private fun captureAddedRemovedListener() { verify(displayManager) .registerDisplayListener( @@ -563,6 +688,10 @@ class DisplayRepositoryTest : SysuiTestCase() { ) } + private fun captureCommandQueueCallbacks() { + verify(commandQueue).addCallback(commandQueueCallbacks.capture()) + } + private fun sendOnDisplayAdded(id: Int, displayType: Int) { val mockDisplay = display(id = id, type = displayType) whenever(displayManager.getDisplay(eq(id))).thenReturn(mockDisplay) @@ -592,6 +721,14 @@ class DisplayRepositoryTest : SysuiTestCase() { connectedDisplayListener.value.onDisplayChanged(id) } + private fun sendOnDisplayRemoveSystemDecorations(id: Int) { + commandQueueCallbacks.value.onDisplayRemoveSystemDecorations(id) + } + + private fun sendOnDisplayAddSystemDecorations(id: Int) { + commandQueueCallbacks.value.onDisplayAddSystemDecorations(id) + } + private fun setDisplays(displays: List<Display>) { whenever(displayManager.displays).thenReturn(displays.toTypedArray()) displays.forEach { display -> diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt index 2ef86e66a2aa..1665895531b7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt @@ -19,6 +19,8 @@ package com.android.systemui.keyguard.ui.view.layout.sections import android.content.pm.PackageManager import android.content.res.Resources +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags import android.view.View.GONE import android.view.View.VISIBLE import androidx.constraintlayout.widget.ConstraintSet @@ -128,6 +130,7 @@ class ClockSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testApplyDefaultConstraints_LargeClock_SplitShade() = kosmos.testScope.runTest { with(kosmos) { @@ -144,12 +147,31 @@ class ClockSectionTest : SysuiTestCase() { } @Test + @EnableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) + fun testApplyDefaultConstraints_LargeClock_SplitShade_ReactiveVariantsOn() = + kosmos.testScope.runTest { + with(kosmos) { + shadeRepository.setShadeLayoutWide(true) + keyguardClockInteractor.setClockSize(ClockSize.LARGE) + advanceUntilIdle() + } + + val cs = ConstraintSet() + underTest.applyDefaultConstraints(cs) + + assertLargeClockTop(cs, LARGE_CLOCK_TOP_WITHOUT_SMARTSPACE + + ENHANCED_SMART_SPACE_HEIGHT) + assertSmallClockTop(cs) + } + + @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testApplyDefaultConstraints_LargeClock_NonSplitShade() = kosmos.testScope.runTest { with(kosmos) { val isShadeLayoutWide by collectLastValue(shadeRepository.isShadeLayoutWide) val isLargeClockVisible by - collectLastValue(keyguardClockViewModel.isLargeClockVisible) + collectLastValue(keyguardClockViewModel.isLargeClockVisible) shadeRepository.setShadeLayoutWide(false) keyguardClockInteractor.setClockSize(ClockSize.LARGE) @@ -167,6 +189,31 @@ class ClockSectionTest : SysuiTestCase() { } @Test + @EnableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) + fun testApplyDefaultConstraints_LargeClock_NonSplitShade_reactiveVariantsOn() = + kosmos.testScope.runTest { + with(kosmos) { + val isShadeLayoutWide by collectLastValue(shadeRepository.isShadeLayoutWide) + val isLargeClockVisible by + collectLastValue(keyguardClockViewModel.isLargeClockVisible) + + shadeRepository.setShadeLayoutWide(false) + keyguardClockInteractor.setClockSize(ClockSize.LARGE) + notificationsKeyguardInteractor.setNotificationsFullyHidden(true) + keyguardSmartspaceInteractor.setBcSmartspaceVisibility(VISIBLE) + fakeConfigurationController.notifyConfigurationChanged() + advanceUntilIdle() + + val cs = ConstraintSet() + underTest.applyDefaultConstraints(cs) + + assertLargeClockTop(cs, LARGE_CLOCK_TOP_WITHOUT_SMARTSPACE + + ENHANCED_SMART_SPACE_HEIGHT) + assertSmallClockTop(cs) + } + } + + @Test fun testApplyDefaultConstraints_LargeClock_MissingSmartspace_SplitShade() = kosmos.testScope.runTest { with(kosmos) { @@ -215,6 +262,7 @@ class ClockSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testApplyDefaultConstraints_SmallClock_SplitShade() = kosmos.testScope.runTest { with(kosmos) { @@ -238,6 +286,32 @@ class ClockSectionTest : SysuiTestCase() { } @Test + @EnableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) + fun testApplyDefaultConstraints_SmallClock_SplitShade_ReactiveVariantsOn() = + kosmos.testScope.runTest { + with(kosmos) { + val isShadeLayoutWide by collectLastValue(shadeRepository.isShadeLayoutWide) + val isLargeClockVisible by + collectLastValue(keyguardClockViewModel.isLargeClockVisible) + + shadeRepository.setShadeLayoutWide(true) + keyguardClockInteractor.setClockSize(ClockSize.SMALL) + notificationsKeyguardInteractor.setNotificationsFullyHidden(true) + keyguardSmartspaceInteractor.setBcSmartspaceVisibility(VISIBLE) + fakeConfigurationController.notifyConfigurationChanged() + advanceUntilIdle() + + val cs = ConstraintSet() + underTest.applyDefaultConstraints(cs) + + assertLargeClockTop(cs, LARGE_CLOCK_TOP_WITHOUT_SMARTSPACE + + ENHANCED_SMART_SPACE_HEIGHT) + assertSmallClockTop(cs) + } + } + + @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testApplyDefaultConstraints_SmallClock_NonSplitShade() = kosmos.testScope.runTest { with(kosmos) { @@ -260,6 +334,30 @@ class ClockSectionTest : SysuiTestCase() { } @Test + @EnableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) + fun testApplyDefaultConstraints_SmallClock_NonSplitShade_ReactiveVariantsOn() = + kosmos.testScope.runTest { + with(kosmos) { + val isShadeLayoutWide by collectLastValue(shadeRepository.isShadeLayoutWide) + val isLargeClockVisible by + collectLastValue(keyguardClockViewModel.isLargeClockVisible) + + shadeRepository.setShadeLayoutWide(false) + keyguardClockInteractor.setClockSize(ClockSize.SMALL) + notificationsKeyguardInteractor.setNotificationsFullyHidden(true) + keyguardSmartspaceInteractor.setBcSmartspaceVisibility(VISIBLE) + fakeConfigurationController.notifyConfigurationChanged() + advanceUntilIdle() + + val cs = ConstraintSet() + underTest.applyDefaultConstraints(cs) + assertLargeClockTop(cs, LARGE_CLOCK_TOP_WITHOUT_SMARTSPACE + + ENHANCED_SMART_SPACE_HEIGHT) + assertSmallClockTop(cs) + } + } + + @Test fun testSmartspaceVisible_weatherClockDateAndIconsBarrierBottomBelowBCSmartspace() = kosmos.testScope.runTest { with(kosmos) { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt index 7706c500c52b..374bcbfb88cb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.ui.view.layout.sections +import android.platform.test.annotations.DisableFlags import android.view.View import android.widget.LinearLayout import androidx.constraintlayout.widget.ConstraintLayout @@ -31,6 +32,7 @@ import com.android.systemui.keyguard.KeyguardUnlockAnimationController import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor import com.android.systemui.keyguard.domain.interactor.KeyguardSmartspaceInteractor import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel +import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel import com.android.systemui.res.R import com.android.systemui.shared.R as sharedR @@ -48,6 +50,7 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidJUnit4::class) @SmallTest +@DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) class SmartspaceSectionTest : SysuiTestCase() { private lateinit var underTest: SmartspaceSection @Mock private lateinit var keyguardClockViewModel: KeyguardClockViewModel @@ -56,6 +59,7 @@ class SmartspaceSectionTest : SysuiTestCase() { @Mock private lateinit var keyguardUnlockAnimationController: KeyguardUnlockAnimationController @Mock private lateinit var keyguardSmartspaceInteractor: KeyguardSmartspaceInteractor @Mock private lateinit var blueprintInteractor: Lazy<KeyguardBlueprintInteractor> + @Mock private lateinit var keyguardRootViewModel: KeyguardRootViewModel private val smartspaceView = View(mContext).also { it.id = sharedR.id.bc_smartspace_view } private val weatherView = View(mContext).also { it.id = sharedR.id.weather_smartspace_view } @@ -80,13 +84,14 @@ class SmartspaceSectionTest : SysuiTestCase() { lockscreenSmartspaceController, keyguardUnlockAnimationController, blueprintInteractor, + keyguardRootViewModel, ) constraintLayout = ConstraintLayout(mContext) whenever(lockscreenSmartspaceController.buildAndConnectView(any())) .thenReturn(smartspaceView) - whenever(lockscreenSmartspaceController.buildAndConnectWeatherView(any())) + whenever(lockscreenSmartspaceController.buildAndConnectWeatherView(any(), any())) .thenReturn(weatherView) - whenever(lockscreenSmartspaceController.buildAndConnectDateView(any())).thenReturn(dateView) + whenever(lockscreenSmartspaceController.buildAndConnectDateView(any(), any())).thenReturn(dateView) whenever(keyguardClockViewModel.hasCustomWeatherDataDisplay) .thenReturn(hasCustomWeatherDataDisplay) whenever(keyguardClockViewModel.clockShouldBeCentered).thenReturn(clockShouldBeCentered) @@ -97,6 +102,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testAddViews_notSmartspaceEnabled() { whenever(keyguardSmartspaceViewModel.isSmartspaceEnabled).thenReturn(false) val constraintLayout = ConstraintLayout(mContext) @@ -107,6 +113,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testAddViews_smartspaceEnabled_dateWeatherDecoupled() { whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(true) underTest.addViews(constraintLayout) @@ -125,6 +132,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testConstraintsWhenShadeLayoutIsNotWide() { underTest.addViews(constraintLayout) underTest.applyConstraints(constraintSet) @@ -134,6 +142,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testConstraintsWhenShadeLayoutIsWide() { isShadeLayoutWide.value = true @@ -145,6 +154,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testConstraintsWhenNotHasCustomWeatherDataDisplay() { whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(true) underTest.addViews(constraintLayout) @@ -159,6 +169,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testConstraintsWhenHasCustomWeatherDataDisplay() { hasCustomWeatherDataDisplay.value = true underTest.addViews(constraintLayout) @@ -169,6 +180,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testNormalDateWeatherVisibility() { isWeatherVisibleFlow.value = true underTest.addViews(constraintLayout) @@ -182,6 +194,7 @@ class SmartspaceSectionTest : SysuiTestCase() { } @Test + @DisableFlags(com.android.systemui.shared.Flags.FLAG_CLOCK_REACTIVE_SMARTSPACE_LAYOUT) fun testCustomDateWeatherVisibility() { hasCustomWeatherDataDisplay.value = true underTest.addViews(constraintLayout) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt index 4e14fec8408f..c71b107238f2 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/ui/binder/SeekBarObserverTest.kt @@ -61,11 +61,11 @@ class SeekBarObserverTest : SysuiTestCase() { fun setUp() { context.orCreateTestableResources.addOverride( R.dimen.qs_media_enabled_seekbar_height, - enabledHeight + enabledHeight, ) context.orCreateTestableResources.addOverride( R.dimen.qs_media_disabled_seekbar_height, - disabledHeight + disabledHeight, ) seekBarView = SeekBar(context) @@ -116,9 +116,6 @@ class SeekBarObserverTest : SysuiTestCase() { // THEN seek bar shows the progress assertThat(seekBarView.progress).isEqualTo(3000) assertThat(seekBarView.max).isEqualTo(120000) - - val desc = context.getString(R.string.controls_media_seekbar_description, "00:03", "02:00") - assertThat(seekBarView.contentDescription).isEqualTo(desc) } @Test diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java index 1899b7d1f1bb..0e5e3330ccd9 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/customize/TileQueryHelperTest.java @@ -423,5 +423,15 @@ public class TileQueryHelperTest extends SysuiTestCase { @Override public void destroy() {} + + @Override + public boolean isDestroyed() { + return false; + } + + @Override + public int getCurrentTileUser() { + return 0; + } } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/TilesAvailabilityInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/TilesAvailabilityInteractorTest.kt index 5a58597bc097..67fb1003a6ce 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/TilesAvailabilityInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/TilesAvailabilityInteractorTest.kt @@ -56,166 +56,178 @@ class TilesAvailabilityInteractorTest(flags: FlagsParameterization) : SysuiTestC private val createdTiles = mutableListOf<FakeQSTile>() - private val kosmos = testKosmos().apply { - tileAvailabilityInteractorsMap = buildMap { - put(AIRPLANE_MODE_TILE_SPEC, QSTileAvailabilityInteractor.AlwaysAvailableInteractor) - put(WORK_MODE_TILE_SPEC, FakeTileAvailabilityInteractor( - mapOf( - fakeUserRepository.getSelectedUserInfo().id to flowOf(true), - ).withDefault { flowOf(false) } - )) - put(HOTSPOT_TILE_SPEC, FakeTileAvailabilityInteractor( - emptyMap<Int, Flow<Boolean>>().withDefault { flowOf(false) } - )) - } + private val kosmos = + testKosmos().apply { + tileAvailabilityInteractorsMap = buildMap { + put(AIRPLANE_MODE_TILE_SPEC, QSTileAvailabilityInteractor.AlwaysAvailableInteractor) + put( + WORK_MODE_TILE_SPEC, + FakeTileAvailabilityInteractor( + mapOf(fakeUserRepository.getSelectedUserInfo().id to flowOf(true)) + .withDefault { flowOf(false) } + ), + ) + put( + HOTSPOT_TILE_SPEC, + FakeTileAvailabilityInteractor( + emptyMap<Int, Flow<Boolean>>().withDefault { flowOf(false) } + ), + ) + } - qsTileFactory = constantFactory( - tilesForCreator( + qsTileFactory = + constantFactory( + tilesForCreator( userRepository.getSelectedUserInfo().id, mapOf( - AIRPLANE_MODE_TILE_SPEC to false, - WORK_MODE_TILE_SPEC to false, - HOTSPOT_TILE_SPEC to true, - INTERNET_TILE_SPEC to true, - FLASHLIGHT_TILE_SPEC to false, - ) + AIRPLANE_MODE_TILE_SPEC to false, + WORK_MODE_TILE_SPEC to false, + HOTSPOT_TILE_SPEC to true, + INTERNET_TILE_SPEC to true, + FLASHLIGHT_TILE_SPEC to false, + ), + ) ) - ) - } + } private val underTest by lazy { kosmos.tilesAvailabilityInteractor } @Test @DisableFlags(FLAG_QS_NEW_TILES) - fun flagOff_usesAvailabilityFromFactoryTiles() = with(kosmos) { - testScope.runTest { - val unavailableTiles = underTest.getUnavailableTiles( - setOf( - AIRPLANE_MODE_TILE_SPEC, - WORK_MODE_TILE_SPEC, - HOTSPOT_TILE_SPEC, - INTERNET_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ).map(TileSpec::create) - ) - assertThat(unavailableTiles).isEqualTo(setOf( - AIRPLANE_MODE_TILE_SPEC, - WORK_MODE_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ).mapTo(mutableSetOf(), TileSpec::create)) + fun flagOff_usesAvailabilityFromFactoryTiles() = + with(kosmos) { + testScope.runTest { + val unavailableTiles = + underTest.getUnavailableTiles( + setOf( + AIRPLANE_MODE_TILE_SPEC, + WORK_MODE_TILE_SPEC, + HOTSPOT_TILE_SPEC, + INTERNET_TILE_SPEC, + FLASHLIGHT_TILE_SPEC, + ) + .map(TileSpec::create) + ) + assertThat(unavailableTiles) + .isEqualTo( + setOf(AIRPLANE_MODE_TILE_SPEC, WORK_MODE_TILE_SPEC, FLASHLIGHT_TILE_SPEC) + .mapTo(mutableSetOf(), TileSpec::create) + ) + } } - } @Test - fun tileCannotBeCreated_isUnavailable() = with(kosmos) { - testScope.runTest { - val badSpec = TileSpec.create("unknown") - val unavailableTiles = underTest.getUnavailableTiles( - setOf( - badSpec - ) - ) - assertThat(unavailableTiles).contains(badSpec) + fun tileCannotBeCreated_isUnavailable() = + with(kosmos) { + testScope.runTest { + val badSpec = TileSpec.create("unknown") + val unavailableTiles = underTest.getUnavailableTiles(setOf(badSpec)) + assertThat(unavailableTiles).contains(badSpec) + } } - } @Test @EnableFlags(FLAG_QS_NEW_TILES) - fun flagOn_defaultsToInteractorTiles_usesFactoryForOthers() = with(kosmos) { - testScope.runTest { - val unavailableTiles = underTest.getUnavailableTiles( - setOf( - AIRPLANE_MODE_TILE_SPEC, - WORK_MODE_TILE_SPEC, - HOTSPOT_TILE_SPEC, - INTERNET_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ).map(TileSpec::create) - ) - assertThat(unavailableTiles).isEqualTo(setOf( - HOTSPOT_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ).mapTo(mutableSetOf(), TileSpec::create)) + fun flagOn_defaultsToInteractorTiles_usesFactoryForOthers() = + with(kosmos) { + testScope.runTest { + val unavailableTiles = + underTest.getUnavailableTiles( + setOf( + AIRPLANE_MODE_TILE_SPEC, + WORK_MODE_TILE_SPEC, + HOTSPOT_TILE_SPEC, + INTERNET_TILE_SPEC, + FLASHLIGHT_TILE_SPEC, + ) + .map(TileSpec::create) + ) + assertThat(unavailableTiles) + .isEqualTo( + setOf(HOTSPOT_TILE_SPEC, FLASHLIGHT_TILE_SPEC) + .mapTo(mutableSetOf(), TileSpec::create) + ) + } } - } @Test @EnableFlags(FLAG_QS_NEW_TILES) - fun flagOn_defaultsToInteractorTiles_usesFactoryForOthers_userChange() = with(kosmos) { - testScope.runTest { - fakeUserRepository.asMainUser() - val unavailableTiles = underTest.getUnavailableTiles( - setOf( - AIRPLANE_MODE_TILE_SPEC, - WORK_MODE_TILE_SPEC, - HOTSPOT_TILE_SPEC, - INTERNET_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ).map(TileSpec::create) - ) - assertThat(unavailableTiles).isEqualTo(setOf( - WORK_MODE_TILE_SPEC, - HOTSPOT_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ).mapTo(mutableSetOf(), TileSpec::create)) + fun flagOn_defaultsToInteractorTiles_usesFactoryForOthers_userChange() = + with(kosmos) { + testScope.runTest { + fakeUserRepository.asMainUser() + val unavailableTiles = + underTest.getUnavailableTiles( + setOf( + AIRPLANE_MODE_TILE_SPEC, + WORK_MODE_TILE_SPEC, + HOTSPOT_TILE_SPEC, + INTERNET_TILE_SPEC, + FLASHLIGHT_TILE_SPEC, + ) + .map(TileSpec::create) + ) + assertThat(unavailableTiles) + .isEqualTo( + setOf(WORK_MODE_TILE_SPEC, HOTSPOT_TILE_SPEC, FLASHLIGHT_TILE_SPEC) + .mapTo(mutableSetOf(), TileSpec::create) + ) + } } - } @Test @EnableFlags(FLAG_QS_NEW_TILES) - fun flagOn_onlyNeededTilesAreCreated_andThenDestroyed() = with(kosmos) { - testScope.runTest { - underTest.getUnavailableTiles( + fun flagOn_onlyNeededTilesAreCreated_andThenDestroyed() = + with(kosmos) { + testScope.runTest { + underTest.getUnavailableTiles( setOf( AIRPLANE_MODE_TILE_SPEC, WORK_MODE_TILE_SPEC, HOTSPOT_TILE_SPEC, INTERNET_TILE_SPEC, FLASHLIGHT_TILE_SPEC, - ).map(TileSpec::create) - ) - assertThat(createdTiles.map { it.tileSpec }) + ) + .map(TileSpec::create) + ) + assertThat(createdTiles.map { it.tileSpec }) .containsExactly(INTERNET_TILE_SPEC, FLASHLIGHT_TILE_SPEC) - assertThat(createdTiles.all { it.destroyed }).isTrue() + assertThat(createdTiles.all { it.isDestroyed }).isTrue() + } } - } @Test @DisableFlags(FLAG_QS_NEW_TILES) - fun flagOn_TilesAreCreatedAndThenDestroyed() = with(kosmos) { - testScope.runTest { - val allTiles = setOf( - AIRPLANE_MODE_TILE_SPEC, - WORK_MODE_TILE_SPEC, - HOTSPOT_TILE_SPEC, - INTERNET_TILE_SPEC, - FLASHLIGHT_TILE_SPEC, - ) - underTest.getUnavailableTiles(allTiles.map(TileSpec::create)) - assertThat(createdTiles.map { it.tileSpec }) - .containsExactlyElementsIn(allTiles) - assertThat(createdTiles.all { it.destroyed }).isTrue() + fun flagOn_TilesAreCreatedAndThenDestroyed() = + with(kosmos) { + testScope.runTest { + val allTiles = + setOf( + AIRPLANE_MODE_TILE_SPEC, + WORK_MODE_TILE_SPEC, + HOTSPOT_TILE_SPEC, + INTERNET_TILE_SPEC, + FLASHLIGHT_TILE_SPEC, + ) + underTest.getUnavailableTiles(allTiles.map(TileSpec::create)) + assertThat(createdTiles.map { it.tileSpec }).containsExactlyElementsIn(allTiles) + assertThat(createdTiles.all { it.isDestroyed }).isTrue() + } } - } - private fun constantFactory(creatorTiles: Set<FakeQSTile>): QSFactory { return FakeQSFactory { spec -> - creatorTiles.firstOrNull { it.tileSpec == spec }?.also { - createdTiles.add(it) - } + creatorTiles.firstOrNull { it.tileSpec == spec }?.also { createdTiles.add(it) } } } companion object { private fun tilesForCreator( - user: Int, - specAvailabilities: Map<String, Boolean> + user: Int, + specAvailabilities: Map<String, Boolean>, ): Set<FakeQSTile> { return specAvailabilities.mapTo(mutableSetOf()) { - FakeQSTile(user, it.value).apply { - tileSpec = it.key - } + FakeQSTile(user, it.value).apply { tileSpec = it.key } } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt index 9b50f1bd735d..c3089761effc 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractorImplTest.kt @@ -17,10 +17,10 @@ package com.android.systemui.qs.pipeline.domain.interactor import android.content.ComponentName -import android.content.Context import android.content.Intent import android.content.pm.UserInfo import android.os.UserHandle +import android.platform.test.annotations.EnableFlags import android.service.quicksettings.Tile import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -28,653 +28,702 @@ import com.android.systemui.Flags.FLAG_QS_NEW_TILES import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.dump.nano.SystemUIProtoDump +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.runTest +import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.qs.QSTile import com.android.systemui.plugins.qs.QSTile.BooleanState import com.android.systemui.plugins.qs.TileDetailsViewModel import com.android.systemui.qs.FakeQSFactory import com.android.systemui.qs.FakeQSTile import com.android.systemui.qs.external.CustomTile -import com.android.systemui.qs.external.CustomTileStatePersister import com.android.systemui.qs.external.TileLifecycleManager import com.android.systemui.qs.external.TileServiceKey -import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedRepository -import com.android.systemui.qs.pipeline.data.repository.FakeCustomTileAddedRepository -import com.android.systemui.qs.pipeline.data.repository.FakeInstalledTilesComponentRepository -import com.android.systemui.qs.pipeline.data.repository.FakeTileSpecRepository -import com.android.systemui.qs.pipeline.data.repository.MinimumTilesFixedRepository -import com.android.systemui.qs.pipeline.data.repository.TileSpecRepository +import com.android.systemui.qs.external.customTileStatePersister +import com.android.systemui.qs.external.tileLifecycleManagerFactory +import com.android.systemui.qs.pipeline.data.repository.customTileAddedRepository +import com.android.systemui.qs.pipeline.data.repository.fakeInstalledTilesRepository +import com.android.systemui.qs.pipeline.data.repository.tileSpecRepository import com.android.systemui.qs.pipeline.domain.model.TileModel -import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger -import com.android.systemui.qs.tiles.di.NewQSTileFactory +import com.android.systemui.qs.pipeline.shared.logging.qsLogger +import com.android.systemui.qs.qsTileFactory +import com.android.systemui.qs.tiles.di.newQSTileFactory import com.android.systemui.qs.toProto -import com.android.systemui.retail.data.repository.FakeRetailModeRepository -import com.android.systemui.settings.UserTracker -import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.settings.fakeUserTracker +import com.android.systemui.testKosmos +import com.android.systemui.user.data.repository.fakeUserRepository +import com.android.systemui.user.data.repository.userRepository import com.android.systemui.util.mockito.any -import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import com.google.protobuf.nano.MessageNano -import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest -import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyString -import org.mockito.Mock import org.mockito.Mockito.inOrder import org.mockito.Mockito.never import org.mockito.Mockito.verify -import org.mockito.MockitoAnnotations +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +@OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(AndroidJUnit4::class) +@EnableFlags(FLAG_QS_NEW_TILES) class CurrentTilesInteractorImplTest : SysuiTestCase() { - private val tileSpecRepository: TileSpecRepository = FakeTileSpecRepository() - private val userRepository = FakeUserRepository() - private val installedTilesPackageRepository = FakeInstalledTilesComponentRepository() - private val tileFactory = FakeQSFactory(::tileCreator) - private val customTileAddedRepository: CustomTileAddedRepository = - FakeCustomTileAddedRepository() - private val pipelineFlags = QSPipelineFlagsRepository() - private val tileLifecycleManagerFactory = TLMFactory() - private val minimumTilesRepository = MinimumTilesFixedRepository() - private val retailModeRepository = FakeRetailModeRepository() - - @Mock private lateinit var customTileStatePersister: CustomTileStatePersister - - @Mock private lateinit var userTracker: UserTracker - - @Mock private lateinit var logger: QSPipelineLogger - - @Mock private lateinit var newQSTileFactory: NewQSTileFactory - - private val testDispatcher = StandardTestDispatcher() - private val testScope = TestScope(testDispatcher) + private val kosmos = + testKosmos().apply { + qsTileFactory = FakeQSFactory { tileCreator(it) } + fakeUserTracker.set(listOf(USER_INFO_0), 0) + fakeUserRepository.setUserInfos(listOf(USER_INFO_0, USER_INFO_1)) + tileLifecycleManagerFactory = TLMFactory() + newQSTileFactory = mock() + qsLogger = mock() + } private val unavailableTiles = mutableSetOf("e") - private lateinit var underTest: CurrentTilesInteractorImpl - - @Before - fun setup() { - MockitoAnnotations.initMocks(this) - - mSetFlagsRule.enableFlags(FLAG_QS_NEW_TILES) - - userRepository.setUserInfos(listOf(USER_INFO_0, USER_INFO_1)) - - setUserTracker(0) - - underTest = - CurrentTilesInteractorImpl( - tileSpecRepository = tileSpecRepository, - installedTilesComponentRepository = installedTilesPackageRepository, - userRepository = userRepository, - minimumTilesRepository = minimumTilesRepository, - retailModeRepository = retailModeRepository, - customTileStatePersister = customTileStatePersister, - tileFactory = tileFactory, - newQSTileFactory = { newQSTileFactory }, - customTileAddedRepository = customTileAddedRepository, - tileLifecycleManagerFactory = tileLifecycleManagerFactory, - userTracker = userTracker, - mainDispatcher = testDispatcher, - backgroundDispatcher = testDispatcher, - scope = testScope.backgroundScope, - logger = logger, - featureFlags = pipelineFlags, - ) - } + private val underTest = kosmos.currentTilesInteractor @Test fun initialState() = - testScope.runTest(USER_INFO_0) { - assertThat(underTest.currentTiles.value).isEmpty() - assertThat(underTest.currentQSTiles).isEmpty() - assertThat(underTest.currentTilesSpecs).isEmpty() - assertThat(underTest.userId.value).isEqualTo(0) - assertThat(underTest.userContext.value.userId).isEqualTo(0) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + assertThat(underTest.currentTiles.value).isEmpty() + assertThat(underTest.currentQSTiles).isEmpty() + assertThat(underTest.currentTilesSpecs).isEmpty() + assertThat(underTest.userId.value).isEqualTo(0) + assertThat(underTest.userContext.value.userId).isEqualTo(0) + } } @Test fun correctTiles() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) - - val specs = - listOf( - TileSpec.create("a"), - TileSpec.create("e"), - CUSTOM_TILE_SPEC, - TileSpec.create("d"), - TileSpec.create("non_existent"), - ) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - - // check each tile - - // Tile a - val tile0 = tiles!![0] - assertThat(tile0.spec).isEqualTo(specs[0]) - assertThat(tile0.tile.tileSpec).isEqualTo(specs[0].spec) - assertThat(tile0.tile).isInstanceOf(FakeQSTile::class.java) - assertThat(tile0.tile.isAvailable).isTrue() - - // Tile e is not available and is not in the list - - // Custom Tile - val tile1 = tiles!![1] - assertThat(tile1.spec).isEqualTo(specs[2]) - assertThat(tile1.tile.tileSpec).isEqualTo(specs[2].spec) - assertThat(tile1.tile).isInstanceOf(CustomTile::class.java) - assertThat(tile1.tile.isAvailable).isTrue() - - // Tile d - val tile2 = tiles!![2] - assertThat(tile2.spec).isEqualTo(specs[3]) - assertThat(tile2.tile.tileSpec).isEqualTo(specs[3].spec) - assertThat(tile2.tile).isInstanceOf(FakeQSTile::class.java) - assertThat(tile2.tile.isAvailable).isTrue() - - // Tile non-existent shouldn't be created. Therefore, only 3 tiles total - assertThat(tiles?.size).isEqualTo(3) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + + val specs = + listOf( + TileSpec.create("a"), + TileSpec.create("e"), + CUSTOM_TILE_SPEC, + TileSpec.create("d"), + TileSpec.create("non_existent"), + ) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + + // check each tile + + // Tile a + val tile0 = tiles!![0] + assertThat(tile0.spec).isEqualTo(specs[0]) + assertThat(tile0.tile.tileSpec).isEqualTo(specs[0].spec) + assertThat(tile0.tile).isInstanceOf(FakeQSTile::class.java) + assertThat(tile0.tile.isAvailable).isTrue() + + // Tile e is not available and is not in the list + + // Custom Tile + val tile1 = tiles!![1] + assertThat(tile1.spec).isEqualTo(specs[2]) + assertThat(tile1.tile.tileSpec).isEqualTo(specs[2].spec) + assertThat(tile1.tile).isInstanceOf(CustomTile::class.java) + assertThat(tile1.tile.isAvailable).isTrue() + + // Tile d + val tile2 = tiles!![2] + assertThat(tile2.spec).isEqualTo(specs[3]) + assertThat(tile2.tile.tileSpec).isEqualTo(specs[3].spec) + assertThat(tile2.tile).isInstanceOf(FakeQSTile::class.java) + assertThat(tile2.tile.isAvailable).isTrue() + + // Tile non-existent shouldn't be created. Therefore, only 3 tiles total + assertThat(tiles?.size).isEqualTo(3) + } } @Test fun logTileCreated() = - testScope.runTest(USER_INFO_0) { - val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - runCurrent() + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + runCurrent() - specs.forEach { verify(logger).logTileCreated(it) } + specs.forEach { verify(qsLogger).logTileCreated(it) } + } } @Test fun logTileNotFoundInFactory() = - testScope.runTest(USER_INFO_0) { - val specs = listOf(TileSpec.create("non_existing")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - runCurrent() - - verify(logger, never()).logTileCreated(any()) - verify(logger).logTileNotFoundInFactory(specs[0]) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val specs = listOf(TileSpec.create("non_existing")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + runCurrent() + + verify(qsLogger, never()).logTileCreated(any()) + verify(qsLogger).logTileNotFoundInFactory(specs[0]) + } } @Test fun tileNotAvailableDestroyed_logged() = - testScope.runTest(USER_INFO_0) { - val specs = listOf(TileSpec.create("e")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - runCurrent() - - verify(logger, never()).logTileCreated(any()) - verify(logger) - .logTileDestroyed( - specs[0], - QSPipelineLogger.TileDestroyedReason.NEW_TILE_NOT_AVAILABLE, - ) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val specs = listOf(TileSpec.create("e")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + runCurrent() + + verify(qsLogger, never()).logTileCreated(any()) + verify(qsLogger) + .logTileDestroyed( + specs[0], + QSPipelineLogger.TileDestroyedReason.NEW_TILE_NOT_AVAILABLE, + ) + } } @Test fun someTilesNotValid_repositorySetToDefinitiveList() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - val specs = listOf(TileSpec.create("a"), TileSpec.create("e")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) + val specs = listOf(TileSpec.create("a"), TileSpec.create("e")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) - assertThat(tiles).isEqualTo(listOf(TileSpec.create("a"))) + assertThat(tiles).isEqualTo(listOf(TileSpec.create("a"))) + } } @Test fun deduplicatedTiles() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a"), TileSpec.create("a")) + val specs = listOf(TileSpec.create("a"), TileSpec.create("a")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) - assertThat(tiles?.size).isEqualTo(1) - assertThat(tiles!![0].spec).isEqualTo(specs[0]) + assertThat(tiles?.size).isEqualTo(1) + assertThat(tiles!![0].spec).isEqualTo(specs[0]) + } } @Test fun tilesChange_platformTileNotRecreated() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a")) + val specs = listOf(TileSpec.create("a")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - val originalTileA = tiles!![0].tile + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + val originalTileA = tiles!![0].tile - tileSpecRepository.addTile(USER_INFO_0.id, TileSpec.create("b")) + tileSpecRepository.addTile(USER_INFO_0.id, TileSpec.create("b")) - assertThat(tiles?.size).isEqualTo(2) - assertThat(tiles!![0].tile).isSameInstanceAs(originalTileA) + assertThat(tiles?.size).isEqualTo(2) + assertThat(tiles!![0].tile).isSameInstanceAs(originalTileA) + } } @Test fun tileRemovedIsDestroyed() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a"), TileSpec.create("c")) + val specs = listOf(TileSpec.create("a"), TileSpec.create("c")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - val originalTileC = tiles!![1].tile + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + val originalTileC = tiles!![1].tile - tileSpecRepository.removeTiles(USER_INFO_0.id, listOf(TileSpec.create("c"))) + tileSpecRepository.removeTiles(USER_INFO_0.id, listOf(TileSpec.create("c"))) - assertThat(tiles?.size).isEqualTo(1) - assertThat(tiles!![0].spec).isEqualTo(TileSpec.create("a")) + assertThat(tiles?.size).isEqualTo(1) + assertThat(tiles!![0].spec).isEqualTo(TileSpec.create("a")) - assertThat((originalTileC as FakeQSTile).destroyed).isTrue() - verify(logger) - .logTileDestroyed( - TileSpec.create("c"), - QSPipelineLogger.TileDestroyedReason.TILE_REMOVED, - ) + assertThat(originalTileC.isDestroyed).isTrue() + verify(qsLogger) + .logTileDestroyed( + TileSpec.create("c"), + QSPipelineLogger.TileDestroyedReason.TILE_REMOVED, + ) + } } @Test fun tileBecomesNotAvailable_destroyed() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) - val repoTiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - - val specs = listOf(TileSpec.create("a")) - - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - val originalTileA = tiles!![0].tile - - // Tile becomes unavailable - (originalTileA as FakeQSTile).available = false - unavailableTiles.add("a") - // and there is some change in the specs - tileSpecRepository.addTile(USER_INFO_0.id, TileSpec.create("b")) - runCurrent() - - assertThat(originalTileA.destroyed).isTrue() - verify(logger) - .logTileDestroyed( - TileSpec.create("a"), - QSPipelineLogger.TileDestroyedReason.EXISTING_TILE_NOT_AVAILABLE, - ) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + val repoTiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + + val specs = listOf(TileSpec.create("a")) + + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + val originalTileA = tiles!![0].tile + + // Tile becomes unavailable + (originalTileA as FakeQSTile).available = false + unavailableTiles.add("a") + // and there is some change in the specs + tileSpecRepository.addTile(USER_INFO_0.id, TileSpec.create("b")) + runCurrent() + + assertThat(originalTileA.isDestroyed).isTrue() + verify(qsLogger) + .logTileDestroyed( + TileSpec.create("a"), + QSPipelineLogger.TileDestroyedReason.EXISTING_TILE_NOT_AVAILABLE, + ) - assertThat(tiles?.size).isEqualTo(1) - assertThat(tiles!![0].spec).isEqualTo(TileSpec.create("b")) - assertThat(tiles!![0].tile).isNotSameInstanceAs(originalTileA) + assertThat(tiles?.size).isEqualTo(1) + assertThat(tiles!![0].spec).isEqualTo(TileSpec.create("b")) + assertThat(tiles!![0].tile).isNotSameInstanceAs(originalTileA) - assertThat(repoTiles).isEqualTo(tiles!!.map(TileModel::spec)) + assertThat(repoTiles).isEqualTo(tiles!!.map(TileModel::spec)) + } } @Test fun userChange_tilesChange() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs0 = listOf(TileSpec.create("a")) - val specs1 = listOf(TileSpec.create("b")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs0) - tileSpecRepository.setTiles(USER_INFO_1.id, specs1) + val specs0 = listOf(TileSpec.create("a")) + val specs1 = listOf(TileSpec.create("b")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs0) + tileSpecRepository.setTiles(USER_INFO_1.id, specs1) - switchUser(USER_INFO_1) + switchUser(USER_INFO_1) - assertThat(tiles!![0].spec).isEqualTo(specs1[0]) - assertThat(tiles!![0].tile.tileSpec).isEqualTo(specs1[0].spec) + assertThat(tiles!![0].spec).isEqualTo(specs1[0]) + assertThat(tiles!![0].tile.tileSpec).isEqualTo(specs1[0].spec) + } } @Test fun tileNotPresentInSecondaryUser_destroyedInUserChange() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs0 = listOf(TileSpec.create("a")) - val specs1 = listOf(TileSpec.create("b")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs0) - tileSpecRepository.setTiles(USER_INFO_1.id, specs1) + val specs0 = listOf(TileSpec.create("a")) + val specs1 = listOf(TileSpec.create("b")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs0) + tileSpecRepository.setTiles(USER_INFO_1.id, specs1) - val originalTileA = tiles!![0].tile + val originalTileA = tiles!![0].tile - switchUser(USER_INFO_1) - runCurrent() + switchUser(USER_INFO_1) + runCurrent() - assertThat((originalTileA as FakeQSTile).destroyed).isTrue() - verify(logger) - .logTileDestroyed( - specs0[0], - QSPipelineLogger.TileDestroyedReason.TILE_NOT_PRESENT_IN_NEW_USER, - ) + assertThat(originalTileA.isDestroyed).isTrue() + verify(qsLogger) + .logTileDestroyed( + specs0[0], + QSPipelineLogger.TileDestroyedReason.TILE_NOT_PRESENT_IN_NEW_USER, + ) + } } @Test - fun userChange_customTileDestroyed_lifecycleNotTerminated() { - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + fun userChange_customTileDestroyed_lifecycleNotTerminated() = + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(CUSTOM_TILE_SPEC) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - tileSpecRepository.setTiles(USER_INFO_1.id, specs) + val specs = listOf(CUSTOM_TILE_SPEC) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + tileSpecRepository.setTiles(USER_INFO_1.id, specs) - val originalCustomTile = tiles!![0].tile + val originalCustomTile = tiles!![0].tile - switchUser(USER_INFO_1) - runCurrent() + switchUser(USER_INFO_1) + runCurrent() - verify(originalCustomTile).destroy() - assertThat(tileLifecycleManagerFactory.created).isEmpty() + verify(originalCustomTile).destroy() + assertThat((tileLifecycleManagerFactory as TLMFactory).created).isEmpty() + } } - } @Test fun userChange_sameTileUserChanged() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - tileSpecRepository.setTiles(USER_INFO_1.id, specs) + val specs = listOf(TileSpec.create("a")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + tileSpecRepository.setTiles(USER_INFO_1.id, specs) - val originalTileA = tiles!![0].tile as FakeQSTile - assertThat(originalTileA.user).isEqualTo(USER_INFO_0.id) + val originalTileA = tiles!![0].tile as FakeQSTile + assertThat(originalTileA.user).isEqualTo(USER_INFO_0.id) - switchUser(USER_INFO_1) - runCurrent() + switchUser(USER_INFO_1) + runCurrent() - assertThat(tiles!![0].tile).isSameInstanceAs(originalTileA) - assertThat(originalTileA.user).isEqualTo(USER_INFO_1.id) - verify(logger).logTileUserChanged(specs[0], USER_INFO_1.id) + assertThat(tiles!![0].tile).isSameInstanceAs(originalTileA) + assertThat(originalTileA.user).isEqualTo(USER_INFO_1.id) + verify(qsLogger).logTileUserChanged(specs[0], USER_INFO_1.id) + } } @Test fun addTile() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - val spec = TileSpec.create("a") - val currentSpecs = listOf(TileSpec.create("b"), TileSpec.create("c")) - tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + val spec = TileSpec.create("a") + val currentSpecs = listOf(TileSpec.create("b"), TileSpec.create("c")) + tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) - underTest.addTile(spec, position = 1) + underTest.addTile(spec, position = 1) - val expectedSpecs = listOf(TileSpec.create("b"), spec, TileSpec.create("c")) - assertThat(tiles).isEqualTo(expectedSpecs) + val expectedSpecs = listOf(TileSpec.create("b"), spec, TileSpec.create("c")) + assertThat(tiles).isEqualTo(expectedSpecs) + } } @Test fun addTile_currentUser() = - testScope.runTest(USER_INFO_1) { - val tiles0 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - val tiles1 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_1.id)) - val spec = TileSpec.create("a") - val currentSpecs = listOf(TileSpec.create("b"), TileSpec.create("c")) - tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) - tileSpecRepository.setTiles(USER_INFO_1.id, currentSpecs) - - switchUser(USER_INFO_1) - underTest.addTile(spec, position = 1) - - assertThat(tiles0).isEqualTo(currentSpecs) - - val expectedSpecs = listOf(TileSpec.create("b"), spec, TileSpec.create("c")) - assertThat(tiles1).isEqualTo(expectedSpecs) + with(kosmos) { + testScope.runTest(USER_INFO_1) { + val tiles0 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + val tiles1 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_1.id)) + val spec = TileSpec.create("a") + val currentSpecs = listOf(TileSpec.create("b"), TileSpec.create("c")) + tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) + tileSpecRepository.setTiles(USER_INFO_1.id, currentSpecs) + + switchUser(USER_INFO_1) + underTest.addTile(spec, position = 1) + + assertThat(tiles0).isEqualTo(currentSpecs) + + val expectedSpecs = listOf(TileSpec.create("b"), spec, TileSpec.create("c")) + assertThat(tiles1).isEqualTo(expectedSpecs) + } } @Test fun removeTile_platform() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - val specs = listOf(TileSpec.create("a"), TileSpec.create("b")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - runCurrent() + val specs = listOf(TileSpec.create("a"), TileSpec.create("b")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + runCurrent() - underTest.removeTiles(specs.subList(0, 1)) + underTest.removeTiles(specs.subList(0, 1)) - assertThat(tiles).isEqualTo(specs.subList(1, 2)) + assertThat(tiles).isEqualTo(specs.subList(1, 2)) + } } @Test - fun removeTile_customTile_lifecycleEnded() { - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - - val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - runCurrent() - assertThat(customTileAddedRepository.isTileAdded(TEST_COMPONENT, USER_INFO_0.id)) - .isTrue() - - underTest.removeTiles(listOf(CUSTOM_TILE_SPEC)) - - assertThat(tiles).isEqualTo(specs.subList(0, 1)) - - val tileLifecycleManager = - tileLifecycleManagerFactory.created[USER_INFO_0.id to TEST_COMPONENT] - assertThat(tileLifecycleManager).isNotNull() - - with(inOrder(tileLifecycleManager!!)) { - verify(tileLifecycleManager).onStopListening() - verify(tileLifecycleManager).onTileRemoved() - verify(tileLifecycleManager).flushMessagesAndUnbind() + fun removeTile_customTile_lifecycleEnded() = + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + + val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + runCurrent() + assertThat(customTileAddedRepository.isTileAdded(TEST_COMPONENT, USER_INFO_0.id)) + .isTrue() + + underTest.removeTiles(listOf(CUSTOM_TILE_SPEC)) + + assertThat(tiles).isEqualTo(specs.subList(0, 1)) + + val tileLifecycleManager = + (tileLifecycleManagerFactory as TLMFactory) + .created[USER_INFO_0.id to TEST_COMPONENT] + assertThat(tileLifecycleManager).isNotNull() + + with(inOrder(tileLifecycleManager!!)) { + verify(tileLifecycleManager).onStopListening() + verify(tileLifecycleManager).onTileRemoved() + verify(tileLifecycleManager).flushMessagesAndUnbind() + } + assertThat(customTileAddedRepository.isTileAdded(TEST_COMPONENT, USER_INFO_0.id)) + .isFalse() + assertThat( + customTileStatePersister.readState( + TileServiceKey(TEST_COMPONENT, USER_INFO_0.id) + ) + ) + .isNull() } - assertThat(customTileAddedRepository.isTileAdded(TEST_COMPONENT, USER_INFO_0.id)) - .isFalse() - verify(customTileStatePersister) - .removeState(TileServiceKey(TEST_COMPONENT, USER_INFO_0.id)) } - } @Test fun removeTiles_currentUser() = - testScope.runTest { - val tiles0 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - val tiles1 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_1.id)) - val currentSpecs = - listOf(TileSpec.create("a"), TileSpec.create("b"), TileSpec.create("c")) - tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) - tileSpecRepository.setTiles(USER_INFO_1.id, currentSpecs) - - switchUser(USER_INFO_1) - runCurrent() - - underTest.removeTiles(currentSpecs.subList(0, 2)) - - assertThat(tiles0).isEqualTo(currentSpecs) - assertThat(tiles1).isEqualTo(currentSpecs.subList(2, 3)) + with(kosmos) { + testScope.runTest { + val tiles0 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + val tiles1 by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_1.id)) + val currentSpecs = + listOf(TileSpec.create("a"), TileSpec.create("b"), TileSpec.create("c")) + tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) + tileSpecRepository.setTiles(USER_INFO_1.id, currentSpecs) + + switchUser(USER_INFO_1) + runCurrent() + + underTest.removeTiles(currentSpecs.subList(0, 2)) + + assertThat(tiles0).isEqualTo(currentSpecs) + assertThat(tiles1).isEqualTo(currentSpecs.subList(2, 3)) + } } @Test fun setTiles() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(tileSpecRepository.tilesSpecs(USER_INFO_0.id)) - val currentSpecs = listOf(TileSpec.create("a"), TileSpec.create("b")) - tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) - runCurrent() + val currentSpecs = listOf(TileSpec.create("a"), TileSpec.create("b")) + tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) + runCurrent() - val newSpecs = listOf(TileSpec.create("b"), TileSpec.create("c"), TileSpec.create("a")) - underTest.setTiles(newSpecs) - runCurrent() + val newSpecs = + listOf(TileSpec.create("b"), TileSpec.create("c"), TileSpec.create("a")) + underTest.setTiles(newSpecs) + runCurrent() - assertThat(tiles).isEqualTo(newSpecs) + assertThat(tiles).isEqualTo(newSpecs) + } } @Test fun setTiles_customTiles_lifecycleEndedIfGone() = - testScope.runTest(USER_INFO_0) { - val otherCustomTileSpec = TileSpec.create("custom(b/c)") + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val otherCustomTileSpec = TileSpec.create("custom(b/c)") - val currentSpecs = listOf(CUSTOM_TILE_SPEC, TileSpec.create("a"), otherCustomTileSpec) - tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) - runCurrent() + val currentSpecs = + listOf(CUSTOM_TILE_SPEC, TileSpec.create("a"), otherCustomTileSpec) + tileSpecRepository.setTiles(USER_INFO_0.id, currentSpecs) + runCurrent() - val newSpecs = listOf(otherCustomTileSpec, TileSpec.create("a")) + val newSpecs = listOf(otherCustomTileSpec, TileSpec.create("a")) - underTest.setTiles(newSpecs) - runCurrent() + underTest.setTiles(newSpecs) + runCurrent() - val tileLifecycleManager = - tileLifecycleManagerFactory.created[USER_INFO_0.id to TEST_COMPONENT]!! + val tileLifecycleManager = + (tileLifecycleManagerFactory as TLMFactory) + .created[USER_INFO_0.id to TEST_COMPONENT]!! - with(inOrder(tileLifecycleManager)) { - verify(tileLifecycleManager).onStopListening() - verify(tileLifecycleManager).onTileRemoved() - verify(tileLifecycleManager).flushMessagesAndUnbind() + with(inOrder(tileLifecycleManager)) { + verify(tileLifecycleManager).onStopListening() + verify(tileLifecycleManager).onTileRemoved() + verify(tileLifecycleManager).flushMessagesAndUnbind() + } + assertThat(customTileAddedRepository.isTileAdded(TEST_COMPONENT, USER_INFO_0.id)) + .isFalse() + assertThat( + customTileStatePersister.readState( + TileServiceKey(TEST_COMPONENT, USER_INFO_0.id) + ) + ) + .isNull() } - assertThat(customTileAddedRepository.isTileAdded(TEST_COMPONENT, USER_INFO_0.id)) - .isFalse() - verify(customTileStatePersister) - .removeState(TileServiceKey(TEST_COMPONENT, USER_INFO_0.id)) } @Test fun protoDump() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) - - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - - val stateA = tiles!![0].tile.state - stateA.fillIn(Tile.STATE_INACTIVE, "A", "AA") - val stateCustom = QSTile.BooleanState() - stateCustom.fillIn(Tile.STATE_ACTIVE, "B", "BB") - stateCustom.spec = CUSTOM_TILE_SPEC.spec - whenever(tiles!![1].tile.state).thenReturn(stateCustom) - - val proto = SystemUIProtoDump() - underTest.dumpProto(proto, emptyArray()) - - assertThat(MessageNano.messageNanoEquals(proto.tiles[0], stateA.toProto())).isTrue() - assertThat(MessageNano.messageNanoEquals(proto.tiles[1], stateCustom.toProto())) - .isTrue() + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) + + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + + val stateA = tiles!![0].tile.state + stateA.fillIn(Tile.STATE_INACTIVE, "A", "AA") + val stateCustom = QSTile.BooleanState() + stateCustom.fillIn(Tile.STATE_ACTIVE, "B", "BB") + stateCustom.spec = CUSTOM_TILE_SPEC.spec + whenever(tiles!![1].tile.state).thenReturn(stateCustom) + + val proto = SystemUIProtoDump() + underTest.dumpProto(proto, emptyArray()) + + assertThat(MessageNano.messageNanoEquals(proto.tiles[0], stateA.toProto())).isTrue() + assertThat(MessageNano.messageNanoEquals(proto.tiles[1], stateCustom.toProto())) + .isTrue() + } } @Test fun retainedTiles_callbackNotRemoved() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) - tileSpecRepository.setTiles(USER_INFO_0.id, listOf(TileSpec.create("a"))) - - val tileA = tiles!![0].tile - val callback = mock<QSTile.Callback>() - tileA.addCallback(callback) - - tileSpecRepository.setTiles( - USER_INFO_0.id, - listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC), - ) - val newTileA = tiles!![0].tile - assertThat(tileA).isSameInstanceAs(newTileA) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + tileSpecRepository.setTiles(USER_INFO_0.id, listOf(TileSpec.create("a"))) + + val tileA = tiles!![0].tile + val callback = mock<QSTile.Callback>() + tileA.addCallback(callback) + + tileSpecRepository.setTiles( + USER_INFO_0.id, + listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC), + ) + val newTileA = tiles!![0].tile + assertThat(tileA).isSameInstanceAs(newTileA) - assertThat((tileA as FakeQSTile).callbacks).containsExactly(callback) + assertThat((tileA as FakeQSTile).callbacks).containsExactly(callback) + } } @Test fun packageNotInstalled_customTileNotVisible() = - testScope.runTest(USER_INFO_0) { - installedTilesPackageRepository.setInstalledPackagesForUser(USER_INFO_0.id, emptySet()) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + fakeInstalledTilesRepository.setInstalledPackagesForUser(USER_INFO_0.id, emptySet()) - val tiles by collectLastValue(underTest.currentTiles) + val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) + val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) - assertThat(tiles!!.size).isEqualTo(1) - assertThat(tiles!![0].spec).isEqualTo(specs[0]) + assertThat(tiles!!.size).isEqualTo(1) + assertThat(tiles!![0].spec).isEqualTo(specs[0]) + } } @Test fun packageInstalledLater_customTileAdded() = - testScope.runTest(USER_INFO_0) { - installedTilesPackageRepository.setInstalledPackagesForUser(USER_INFO_0.id, emptySet()) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + fakeInstalledTilesRepository.setInstalledPackagesForUser(USER_INFO_0.id, emptySet()) - val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC, TileSpec.create("b")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) + val tiles by collectLastValue(underTest.currentTiles) + val specs = listOf(TileSpec.create("a"), CUSTOM_TILE_SPEC, TileSpec.create("b")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) - assertThat(tiles!!.size).isEqualTo(2) + assertThat(tiles!!.size).isEqualTo(2) - installedTilesPackageRepository.setInstalledPackagesForUser( - USER_INFO_0.id, - setOf(TEST_COMPONENT), - ) + fakeInstalledTilesRepository.setInstalledPackagesForUser( + USER_INFO_0.id, + setOf(TEST_COMPONENT), + ) - assertThat(tiles!!.size).isEqualTo(3) - assertThat(tiles!![1].spec).isEqualTo(CUSTOM_TILE_SPEC) + assertThat(tiles!!.size).isEqualTo(3) + assertThat(tiles!![1].spec).isEqualTo(CUSTOM_TILE_SPEC) + } } @Test fun tileAddedOnEmptyList_blocked() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) - val specs = listOf(TileSpec.create("a"), TileSpec.create("b")) - val newTile = TileSpec.create("c") + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + val specs = listOf(TileSpec.create("a"), TileSpec.create("b")) + val newTile = TileSpec.create("c") - underTest.addTile(newTile) + underTest.addTile(newTile) - assertThat(tiles!!.isEmpty()).isTrue() + assertThat(tiles!!.isEmpty()).isTrue() - tileSpecRepository.setTiles(USER_INFO_0.id, specs) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) - assertThat(tiles!!.size).isEqualTo(3) + assertThat(tiles!!.size).isEqualTo(3) + } } @Test fun changeInPackagesTiles_doesntTriggerUserChange_logged() = - testScope.runTest(USER_INFO_0) { - val specs = listOf(TileSpec.create("a")) - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - runCurrent() - // Settled on the same list of tiles. - assertThat(underTest.currentTilesSpecs).isEqualTo(specs) - - installedTilesPackageRepository.setInstalledPackagesForUser(USER_INFO_0.id, emptySet()) - runCurrent() - - verify(logger, never()).logTileUserChanged(TileSpec.create("a"), 0) + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val specs = listOf(TileSpec.create("a")) + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + runCurrent() + // Settled on the same list of tiles. + assertThat(underTest.currentTilesSpecs).isEqualTo(specs) + + fakeInstalledTilesRepository.setInstalledPackagesForUser(USER_INFO_0.id, emptySet()) + runCurrent() + + verify(qsLogger, never()).logTileUserChanged(TileSpec.create("a"), 0) + } } @Test fun getTileDetails() = - testScope.runTest(USER_INFO_0) { - val tiles by collectLastValue(underTest.currentTiles) - val tileA = TileSpec.create("a") - val tileB = TileSpec.create("b") - val tileNoDetails = TileSpec.create("NoDetails") + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + val tileA = TileSpec.create("a") + val tileB = TileSpec.create("b") + val tileNoDetails = TileSpec.create("NoDetails") + + val specs = listOf(tileA, tileB, tileNoDetails) + + assertThat(tiles!!.isEmpty()).isTrue() + + tileSpecRepository.setTiles(USER_INFO_0.id, specs) + assertThat(tiles!!.size).isEqualTo(3) + + // The third tile doesn't have a details view. + assertThat(tiles!![2].spec).isEqualTo(tileNoDetails) + (tiles!![2].tile as FakeQSTile).hasDetailsViewModel = false - val specs = listOf(tileA, tileB, tileNoDetails) + var currentModel: TileDetailsViewModel? = null + val setCurrentModel = { model: TileDetailsViewModel? -> currentModel = model } + tiles!![0].tile.getDetailsViewModel(setCurrentModel) + assertThat(currentModel?.getTitle()).isEqualTo("a") - assertThat(tiles!!.isEmpty()).isTrue() + currentModel = null + tiles!![1].tile.getDetailsViewModel(setCurrentModel) + assertThat(currentModel?.getTitle()).isEqualTo("b") - tileSpecRepository.setTiles(USER_INFO_0.id, specs) - assertThat(tiles!!.size).isEqualTo(3) + currentModel = null + tiles!![2].tile.getDetailsViewModel(setCurrentModel) + assertThat(currentModel).isNull() + } + } + + @Test + fun destroyedTilesNotReused() = + with(kosmos) { + testScope.runTest(USER_INFO_0) { + val tiles by collectLastValue(underTest.currentTiles) + val specs = listOf(TileSpec.create("a"), TileSpec.create("b")) + val newTile = TileSpec.create("c") + + underTest.setTiles(specs) - // The third tile doesn't have a details view. - assertThat(tiles!![2].spec).isEqualTo(tileNoDetails) - (tiles!![2].tile as FakeQSTile).hasDetailsViewModel = false + val tileABefore = tiles!!.first { it.spec == specs[0] }.tile - var currentModel: TileDetailsViewModel? = null - val setCurrentModel = { model: TileDetailsViewModel? -> currentModel = model } - tiles!![0].tile.getDetailsViewModel(setCurrentModel) - assertThat(currentModel?.getTitle()).isEqualTo("a") + // We destroy it manually, in prod, this could happen if the tile processing action + // is interrupted in the middle. + tileABefore.destroy() - currentModel = null - tiles!![1].tile.getDetailsViewModel(setCurrentModel) - assertThat(currentModel?.getTitle()).isEqualTo("b") + underTest.addTile(newTile) - currentModel = null - tiles!![2].tile.getDetailsViewModel(setCurrentModel) - assertThat(currentModel).isNull() + val tileAAfter = tiles!!.first { it.spec == specs[0] }.tile + assertThat(tileAAfter).isNotSameInstanceAs(tileABefore) + } } private fun QSTile.State.fillIn(state: Int, label: CharSequence, secondaryLabel: CharSequence) { @@ -686,20 +735,21 @@ class CurrentTilesInteractorImplTest : SysuiTestCase() { } } - private fun tileCreator(spec: String): QSTile? { - val currentUser = userTracker.userId + private fun Kosmos.tileCreator(spec: String): QSTile? { + val currentUser = userRepository.getSelectedUserInfo().id return when (spec) { CUSTOM_TILE_SPEC.spec -> mock<CustomTile> { var tileSpecReference: String? = null - whenever(user).thenReturn(currentUser) - whenever(component).thenReturn(CUSTOM_TILE_SPEC.componentName) - whenever(isAvailable).thenReturn(true) - whenever(setTileSpec(anyString())).thenAnswer { - tileSpecReference = it.arguments[0] as? String - Unit - } - whenever(tileSpec).thenAnswer { tileSpecReference } + on { user } doReturn currentUser + on { component } doReturn CUSTOM_TILE_SPEC.componentName + on { isAvailable } doReturn true + on { setTileSpec(anyString()) } + .thenAnswer { + tileSpecReference = it.arguments[0] as? String + Unit + } + on { tileSpec }.thenAnswer { tileSpecReference } // Also, add it to the set of added tiles (as this happens as part of the tile // creation). customTileAddedRepository.setTileAdded( @@ -714,22 +764,16 @@ class CurrentTilesInteractorImplTest : SysuiTestCase() { } private fun TestScope.runTest(user: UserInfo, body: suspend TestScope.() -> Unit) { - return runTest { + return kosmos.runTest { switchUser(user) body() } } - private suspend fun switchUser(user: UserInfo) { - setUserTracker(user.id) - installedTilesPackageRepository.setInstalledPackagesForUser(user.id, setOf(TEST_COMPONENT)) - userRepository.setSelectedUserInfo(user) - } - - private fun setUserTracker(user: Int) { - val mockContext = mockUserContext(user) - whenever(userTracker.userContext).thenReturn(mockContext) - whenever(userTracker.userId).thenReturn(user) + private suspend fun Kosmos.switchUser(user: UserInfo) { + fakeUserTracker.set(listOf(user), 0) + fakeInstalledTilesRepository.setInstalledPackagesForUser(user.id, setOf(TEST_COMPONENT)) + fakeUserRepository.setSelectedUserInfo(user) } private class TLMFactory : TileLifecycleManager.Factory { @@ -745,13 +789,6 @@ class CurrentTilesInteractorImplTest : SysuiTestCase() { } } - private fun mockUserContext(user: Int): Context { - return mock { - whenever(this.userId).thenReturn(user) - whenever(this.user).thenReturn(UserHandle.of(user)) - } - } - companion object { private val USER_INFO_0 = UserInfo().apply { id = 0 } private val USER_INFO_1 = UserInfo().apply { id = 1 } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java index 296478be77e0..1d8c6ccc75d1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java @@ -508,6 +508,12 @@ public class QSTileImplTest extends SysuiTestCase { assertThat(mTile.mRefreshes).isEqualTo(1); } + @Test + public void testIsDestroyedImmediately() { + mTile.destroy(); + assertThat(mTile.isDestroyed()).isTrue(); + } + private void assertEvent(UiEventLogger.UiEventEnum eventType, UiEventLoggerFake.FakeUiEvent fakeEvent) { assertEquals(eventType.getId(), fakeEvent.eventId); diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt index fba615121a39..da3cebd24e6b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImplTest.kt @@ -22,6 +22,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.common.shared.model.ContentDescription import com.android.systemui.common.shared.model.Icon +import com.android.systemui.qs.FakeTileDetailsViewModel import com.android.systemui.qs.tiles.base.analytics.QSTileAnalytics import com.android.systemui.qs.tiles.base.interactor.FakeDisabledByPolicyInteractor import com.android.systemui.qs.tiles.base.interactor.FakeQSTileDataInteractor @@ -97,6 +98,7 @@ class QSTileViewModelImplTest : SysuiTestCase() { testCoroutineDispatcher, testCoroutineDispatcher, testScope.backgroundScope, + FakeTileDetailsViewModel("QSTileViewModelImplTest"), ) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractorTest.kt index 3db5efcb6eb8..261e3de939f2 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractorTest.kt @@ -26,8 +26,6 @@ import com.android.systemui.kosmos.testScope import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx -import com.android.systemui.qs.tiles.dialog.InternetDetailsContentManager -import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel import com.android.systemui.qs.tiles.dialog.InternetDialogManager import com.android.systemui.qs.tiles.impl.internet.domain.model.InternetTileModel import com.android.systemui.statusbar.connectivity.AccessPointController @@ -39,11 +37,8 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.ArgumentMatchers.eq -import org.mockito.kotlin.any import org.mockito.kotlin.mock -import org.mockito.kotlin.times import org.mockito.kotlin.verify -import org.mockito.kotlin.whenever @SmallTest @EnabledOnRavenwood @@ -56,31 +51,17 @@ class InternetTileUserActionInteractorTest : SysuiTestCase() { private lateinit var internetDialogManager: InternetDialogManager private lateinit var controller: AccessPointController - private lateinit var internetDetailsViewModelFactory: InternetDetailsViewModel.Factory - private lateinit var internetDetailsContentManagerFactory: InternetDetailsContentManager.Factory - private lateinit var internetDetailsViewModel: InternetDetailsViewModel @Before fun setup() { internetDialogManager = mock<InternetDialogManager>() controller = mock<AccessPointController>() - internetDetailsViewModelFactory = mock<InternetDetailsViewModel.Factory>() - internetDetailsContentManagerFactory = mock<InternetDetailsContentManager.Factory>() - internetDetailsViewModel = - InternetDetailsViewModel( - onLongClick = {}, - accessPointController = mock<AccessPointController>(), - contentManagerFactory = internetDetailsContentManagerFactory, - ) - whenever(internetDetailsViewModelFactory.create(any())).thenReturn(internetDetailsViewModel) - underTest = InternetTileUserActionInteractor( kosmos.testScope.coroutineContext, internetDialogManager, controller, inputHandler, - internetDetailsViewModelFactory, ) } @@ -127,12 +108,4 @@ class InternetTileUserActionInteractorTest : SysuiTestCase() { assertThat(it.intent.action).isEqualTo(Settings.ACTION_WIFI_SETTINGS) } } - - @Test - fun detailsViewModel() = - kosmos.testScope.runTest { - assertThat(underTest.detailsViewModel.getTitle()).isEqualTo("Internet") - assertThat(underTest.detailsViewModel.getSubTitle()) - .isEqualTo("Tab a network to connect") - } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt index 0598a8b9d058..4e9b63517d6d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelTest.kt @@ -25,6 +25,7 @@ import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.common.shared.model.ContentDescription import com.android.systemui.common.shared.model.Icon import com.android.systemui.coroutines.collectValues +import com.android.systemui.qs.FakeTileDetailsViewModel import com.android.systemui.qs.tiles.base.analytics.QSTileAnalytics import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger import com.android.systemui.qs.tiles.base.interactor.FakeDisabledByPolicyInteractor @@ -171,21 +172,6 @@ class QSTileViewModelTest : SysuiTestCase() { .isEqualTo(FakeQSTileDataInteractor.AvailabilityRequest(USER)) } - @Test - fun tileDetails() = - testScope.runTest { - assertThat(tileUserActionInteractor.detailsViewModel).isNotNull() - assertThat(tileUserActionInteractor.detailsViewModel?.getTitle()) - .isEqualTo("FakeQSTileUserActionInteractor") - assertThat(underTest.detailsViewModel).isNotNull() - assertThat(underTest.detailsViewModel?.getTitle()) - .isEqualTo("FakeQSTileUserActionInteractor") - - tileUserActionInteractor.detailsViewModel = null - assertThat(tileUserActionInteractor.detailsViewModel).isNull() - assertThat(underTest.detailsViewModel).isNull() - } - private fun createViewModel( scope: TestScope, config: QSTileConfig = tileConfig, @@ -209,6 +195,7 @@ class QSTileViewModelTest : SysuiTestCase() { testCoroutineDispatcher, testCoroutineDispatcher, scope.backgroundScope, + FakeTileDetailsViewModel("QSTileViewModelTest"), ) private companion object { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt index ece21e1bef66..166e9500cff9 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelUserInputTest.kt @@ -22,6 +22,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.common.shared.model.ContentDescription import com.android.systemui.common.shared.model.Icon +import com.android.systemui.qs.FakeTileDetailsViewModel import com.android.systemui.qs.tiles.base.analytics.QSTileAnalytics import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger import com.android.systemui.qs.tiles.base.interactor.FakeDisabledByPolicyInteractor @@ -253,5 +254,6 @@ class QSTileViewModelUserInputTest : SysuiTestCase() { testCoroutineDispatcher, testCoroutineDispatcher, scope.backgroundScope, + FakeTileDetailsViewModel("QSTileViewModelUserInputTest"), ) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt index b36c111904b9..1d891da4148a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneContentViewModelTest.kt @@ -23,8 +23,6 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.EnableSceneContainer -import com.android.systemui.flags.Flags -import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.media.controls.data.repository.mediaFilterRepository @@ -79,8 +77,6 @@ class QuickSettingsSceneContentViewModelTest : SysuiTestCase() { @Before fun setUp() { - kosmos.fakeFeatureFlagsClassic.set(Flags.NEW_NETWORK_SLICE_UI, false) - sceneContainerStartable.start() underTest = QuickSettingsSceneContentViewModel( diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsUserActionsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsUserActionsViewModelTest.kt index d5fbe49a153b..0254dfb3d293 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsUserActionsViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsUserActionsViewModelTest.kt @@ -29,8 +29,6 @@ import com.android.systemui.authentication.shared.model.AuthenticationMethodMode import com.android.systemui.coroutines.collectLastValue import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.flags.EnableSceneContainer -import com.android.systemui.flags.Flags -import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.domain.interactor.keyguardEnabledInteractor import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus @@ -68,8 +66,6 @@ class QuickSettingsUserActionsViewModelTest : SysuiTestCase() { @Before fun setUp() { - kosmos.fakeFeatureFlagsClassic.set(Flags.NEW_NETWORK_SLICE_UI, false) - sceneContainerStartable.start() underTest = QuickSettingsUserActionsViewModel( diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt index eb630b49359d..abb41b569a75 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt @@ -39,8 +39,6 @@ import com.android.systemui.bouncer.ui.viewmodel.bouncerOverlayContentViewModel import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor import com.android.systemui.flags.EnableSceneContainer -import com.android.systemui.flags.Flags -import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.KeyguardViewMediator import com.android.systemui.keyguard.ui.viewmodel.lockscreenUserActionsViewModel import com.android.systemui.kosmos.Kosmos @@ -112,8 +110,6 @@ class SceneFrameworkIntegrationTest : SysuiTestCase() { whenever(mockTelecomManager.isInCall).thenReturn(false) whenever(emergencyAffordanceManager.needsEmergencyAffordance()).thenReturn(true) - fakeFeatureFlagsClassic.apply { set(Flags.NEW_NETWORK_SLICE_UI, false) } - fakeMobileConnectionsRepository.isAnySimSecure.value = false fakeTelephonyRepository.apply { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java index 3d8da6140ff7..70df82d95008 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/CommandQueueTest.java @@ -22,6 +22,7 @@ import static android.service.quickaccesswallet.Flags.FLAG_LAUNCH_WALLET_OPTION_ import static android.service.quickaccesswallet.Flags.FLAG_LAUNCH_WALLET_VIA_SYSUI_CALLBACKS; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowInsetsController.BEHAVIOR_DEFAULT; +import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; @@ -556,9 +557,9 @@ public class CommandQueueTest extends SysuiTestCase { @Test public void testImmersiveModeChanged() { final int displayAreaId = 10; - mCommandQueue.immersiveModeChanged(displayAreaId, true); + mCommandQueue.immersiveModeChanged(displayAreaId, true, TYPE_APPLICATION); waitForIdleSync(); - verify(mCallbacks).immersiveModeChanged(displayAreaId, true); + verify(mCallbacks).immersiveModeChanged(displayAreaId, true, TYPE_APPLICATION); } @Test diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarOrchestratorStoreTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarOrchestratorStoreTest.kt new file mode 100644 index 000000000000..06650f2afe58 --- /dev/null +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarOrchestratorStoreTest.kt @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.core + +import android.platform.test.annotations.EnableFlags +import android.view.Display.DEFAULT_DISPLAY +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.display.data.repository.displayRepository +import com.android.systemui.kosmos.testScope +import com.android.systemui.kosmos.useUnconfinedTestDispatcher +import com.android.systemui.testKosmos +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.kotlin.verify + +@SmallTest +@RunWith(AndroidJUnit4::class) +@EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) +class MultiDisplayStatusBarOrchestratorStoreTest : SysuiTestCase() { + + private val kosmos = testKosmos().useUnconfinedTestDispatcher() + private val testScope = kosmos.testScope + private val fakeDisplayRepository = kosmos.displayRepository + private val underTest by lazy { kosmos.multiDisplayStatusBarOrchestratorStore } + + @Before + fun start() { + underTest.start() + } + + @Before fun addDisplays() = runBlocking { fakeDisplayRepository.addDisplay(DEFAULT_DISPLAY) } + + @Test + fun displayRemoved_stopsInstance() = + testScope.runTest { + val instance = underTest.forDisplay(DEFAULT_DISPLAY)!! + + fakeDisplayRepository.removeDisplay(DEFAULT_DISPLAY) + + verify(instance).stop() + } +} diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarOrchestratorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarOrchestratorTest.kt index 04c5bd930e72..f5d9f43d38e3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarOrchestratorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/core/StatusBarOrchestratorTest.kt @@ -22,6 +22,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository +import com.android.systemui.dump.dumpManager import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.plugins.DarkIconDispatcher @@ -70,6 +71,7 @@ class StatusBarOrchestratorTest : SysuiTestCase() { private val mockBubbles = kosmos.bubbles private val fakeStatusBarWindowController = kosmos.fakeStatusBarWindowController private val fakeStatusBarInitializer = kosmos.fakeStatusBarInitializer + private val dumpManager = kosmos.dumpManager private val orchestrator = kosmos.statusBarOrchestrator @@ -291,6 +293,15 @@ class StatusBarOrchestratorTest : SysuiTestCase() { .transitionTo(TRANSPARENT.toTransitionModeInt(), /* animate= */ true) } + @Test + fun stop_unregisterDumpable() { + orchestrator.start() + + orchestrator.stop() + + verify(dumpManager).unregisterDumpable("StatusBarOrchestrator") + } + private fun putDeviceToSleep() { fakePowerRepository.updateWakefulness( rawState = WakefulnessState.ASLEEP, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStoreImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStoreImplTest.kt index ae734b3ca04f..a5b7fc283976 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStoreImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStoreImplTest.kt @@ -22,24 +22,29 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.display.data.repository.displayRepository +import com.android.systemui.kosmos.testScope import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.testKosmos import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.mockito.kotlin.verify @SmallTest @RunWith(AndroidJUnit4::class) @EnableFlags(StatusBarConnectedDisplays.FLAG_NAME) class PrivacyDotWindowControllerStoreImplTest : SysuiTestCase() { private val kosmos = testKosmos() + private val testScope = kosmos.testScope private val underTest by lazy { kosmos.privacyDotWindowControllerStoreImpl } @Before fun installDisplays() = runBlocking { + underTest.start() kosmos.displayRepository.addDisplay(displayId = Display.DEFAULT_DISPLAY) - kosmos.displayRepository.addDisplay(displayId = Display.DEFAULT_DISPLAY + 1) + kosmos.displayRepository.addDisplay(displayId = DISPLAY_2) } @Test(expected = IllegalArgumentException::class) @@ -49,6 +54,20 @@ class PrivacyDotWindowControllerStoreImplTest : SysuiTestCase() { @Test fun forDisplay_nonDefaultDisplay_doesNotThrow() { - underTest.forDisplay(displayId = Display.DEFAULT_DISPLAY + 1) + underTest.forDisplay(displayId = DISPLAY_2) + } + + @Test + fun displayRemoved_stopsInstance() = + testScope.runTest { + val instance = underTest.forDisplay(DISPLAY_2)!! + + kosmos.displayRepository.removeDisplay(DISPLAY_2) + + verify(instance).stop() + } + + private companion object { + const val DISPLAY_2 = Display.DEFAULT_DISPLAY + 1 } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotWindowControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotWindowControllerTest.kt index 6bcd735e9a9f..60782b8ffc65 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotWindowControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/events/PrivacyDotWindowControllerTest.kt @@ -173,6 +173,17 @@ class PrivacyDotWindowControllerTest : SysuiTestCase() { expect.that(gravityForView(viewController.bottomRight!!)).isEqualTo(BOTTOM or LEFT) } + @Test + fun onStop_removeAllWindows() { + underTest.start() + executor.runAllReady() + + underTest.stop() + executor.runAllReady() + + assertThat(windowManager.addedViews).isEmpty() + } + private fun paramsForView(view: View): WindowManager.LayoutParams { return windowManager.addedViews.entries .first { it.key == view || it.key.findViewById<View>(view.id) != null } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt index 611ae3dbefcf..d54620678d3b 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt @@ -846,7 +846,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { } private fun connectSession() { - val dateView = controller.buildAndConnectDateView(fakeParent) + val dateView = controller.buildAndConnectDateView(fakeParent, false) dateSmartspaceView = dateView as SmartspaceView fakeParent.addView(dateView) controller.stateChangeListener.onViewAttachedToWindow(dateView) @@ -860,7 +860,7 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { verify(dateSmartspaceView).setPrimaryTextColor(anyInt()) verify(dateSmartspaceView).setDozeAmount(0.5f) - val weatherView = controller.buildAndConnectWeatherView(fakeParent) + val weatherView = controller.buildAndConnectWeatherView(fakeParent, false) weatherSmartspaceView = weatherView as SmartspaceView fakeParent.addView(weatherView) controller.stateChangeListener.onViewAttachedToWindow(weatherView) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/ConversationNotificationProcessorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/ConversationNotificationProcessorTest.kt index 67d0adedca6e..0caddf46cd3a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/ConversationNotificationProcessorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/ConversationNotificationProcessorTest.kt @@ -111,13 +111,13 @@ class ConversationNotificationProcessorTest : SysuiTestCase() { .isNotNull() val processedSummary = nb.build().extras.getCharSequence(EXTRA_SUMMARIZED_CONTENT) - assertThat(processedSummary.toString()).isEqualTo("x$summarization") + assertThat(processedSummary.toString()).isEqualTo("x $summarization") val checkSpans = SpannableStringBuilder(processedSummary) assertThat( checkSpans.getSpans( /* queryStart = */ 0, - /* queryEnd = */ 1, + /* queryEnd = */ 2, /* kind = */ ImageSpan::class.java, ) ) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt index 510167d10db4..d3cd24062ff8 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorControllerTest.kt @@ -84,7 +84,7 @@ class NotificationTransitionAnimatorControllerTest : SysuiTestCase() { controller.onIntentStarted(willAnimate = false) assertTrue(HeadsUpUtil.isClickedHeadsUpNotification(notification)) - assertFalse(notification.entry.isExpandAnimationRunning) + assertFalse(notification.isLaunchAnimationRunning) val isExpandAnimationRunning by testScope.collectLastValue( notificationLaunchAnimationInteractor.isLaunchAnimationRunning @@ -107,7 +107,7 @@ class NotificationTransitionAnimatorControllerTest : SysuiTestCase() { controller.onTransitionAnimationCancelled() assertTrue(HeadsUpUtil.isClickedHeadsUpNotification(notification)) - assertFalse(notification.entry.isExpandAnimationRunning) + assertFalse(notification.isLaunchAnimationRunning) val isExpandAnimationRunning by testScope.collectLastValue( notificationLaunchAnimationInteractor.isLaunchAnimationRunning @@ -130,7 +130,7 @@ class NotificationTransitionAnimatorControllerTest : SysuiTestCase() { controller.onTransitionAnimationEnd(isExpandingFullyAbove = true) assertFalse(HeadsUpUtil.isClickedHeadsUpNotification(notification)) - assertFalse(notification.entry.isExpandAnimationRunning) + assertFalse(notification.isLaunchAnimationRunning) val isExpandAnimationRunning by testScope.collectLastValue( notificationLaunchAnimationInteractor.isLaunchAnimationRunning @@ -199,7 +199,7 @@ class NotificationTransitionAnimatorControllerTest : SysuiTestCase() { fun testNotificationIsExpandingDuringAnimation() { controller.onIntentStarted(willAnimate = true) - assertTrue(notification.entry.isExpandAnimationRunning) + assertTrue(notification.isLaunchAnimationRunning) val isExpandAnimationRunning by testScope.collectLastValue( notificationLaunchAnimationInteractor.isLaunchAnimationRunning diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/BundleEntryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/BundleEntryTest.kt index 5d8b68e5367a..83fd5dcd5f82 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/BundleEntryTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/BundleEntryTest.kt @@ -105,4 +105,52 @@ class BundleEntryTest : SysuiTestCase() { fun getWhen_adapter() { assertThat(underTest.entryAdapter.`when`).isEqualTo(0) } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun isColorized() { + assertThat(underTest.entryAdapter.isColorized).isFalse() + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun getSbn() { + assertThat(underTest.entryAdapter.sbn).isNull() + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun canDragAndDrop() { + assertThat(underTest.entryAdapter.canDragAndDrop()).isFalse() + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun isBubble() { + assertThat(underTest.entryAdapter.isBubbleCapable).isFalse() + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun getStyle() { + assertThat(underTest.entryAdapter.style).isNull() + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun getSectionBucket() { + assertThat(underTest.entryAdapter.sectionBucket).isEqualTo(underTest.bucket) + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun isAmbient() { + assertThat(underTest.entryAdapter.isAmbient).isFalse() + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + fun canShowFullScreen() { + assertThat(underTest.entryAdapter.isFullScreenCapable()).isFalse() + } }
\ No newline at end of file diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java index 0df1073ca553..4c18025c4cb7 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java @@ -41,7 +41,6 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.clearInvocations; @@ -64,7 +63,6 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.os.Handler; import android.os.RemoteException; -import android.platform.test.annotations.EnableFlags; import android.service.notification.NotificationListenerService.Ranking; import android.service.notification.NotificationListenerService.RankingMap; import android.service.notification.StatusBarNotification; @@ -78,7 +76,6 @@ import androidx.test.filters.SmallTest; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.statusbar.NotificationVisibility; -import com.android.systemui.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.LogBufferEulogizer; @@ -96,6 +93,7 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.No import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionLogger; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifDismissInterceptor; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender; +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource; import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.util.concurrency.FakeExecutor; @@ -1587,7 +1585,7 @@ public class NotifCollectionTest extends SysuiTestCase { // THEN entry updated gets called, added does not, and ranking is called again verify(mCollectionListener).onEntryUpdated(eq(entry)); - verify(mCollectionListener).onEntryUpdated(eq(entry), eq(true)); + verify(mCollectionListener).onEntryUpdated(eq(entry), eq(UpdateSource.App)); verify(mCollectionListener).onEntryAdded((entry)); verify(mCollectionListener, times(2)).onRankingApplied(); } @@ -1610,7 +1608,7 @@ public class NotifCollectionTest extends SysuiTestCase { verify(mCollectionListener).onEntryAdded(eq(entry)); verify(mCollectionListener).onRankingApplied(); verify(mCollectionListener).onEntryUpdated(eq(entry)); - verify(mCollectionListener).onEntryUpdated(eq(entry), eq(false)); + verify(mCollectionListener).onEntryUpdated(eq(entry), eq(UpdateSource.SystemUi)); } @Test @@ -1626,7 +1624,7 @@ public class NotifCollectionTest extends SysuiTestCase { verify(mCollectionListener, never()).onRankingUpdate(any()); verify(mCollectionListener, never()).onRankingApplied(); verify(mCollectionListener, never()).onEntryUpdated(any()); - verify(mCollectionListener, never()).onEntryUpdated(any(), anyBoolean()); + verify(mCollectionListener, never()).onEntryUpdated(any(), any()); } @Test @@ -1786,6 +1784,7 @@ public class NotifCollectionTest extends SysuiTestCase { private static NotificationEntryBuilder buildNotif(String pkg, int id, String tag) { return new NotificationEntryBuilder() + .setPostTime(System.currentTimeMillis()) .setPkg(pkg) .setId(id) .setTag(tag); @@ -1838,7 +1837,7 @@ public class NotifCollectionTest extends SysuiTestCase { } @Override - public void onEntryUpdated(NotificationEntry entry, boolean fromSystem) { + public void onEntryUpdated(NotificationEntry entry, UpdateSource source) { onEntryUpdated(entry); } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java index 34dff24876c8..481081344dbb 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java @@ -21,12 +21,15 @@ import static android.app.Notification.CATEGORY_CALL; import static android.app.Notification.CATEGORY_EVENT; import static android.app.Notification.CATEGORY_MESSAGE; import static android.app.Notification.CATEGORY_REMINDER; +import static android.app.Notification.FLAG_BUBBLE; import static android.app.Notification.FLAG_FSI_REQUESTED_BUT_DENIED; import static android.app.Notification.FLAG_PROMOTED_ONGOING; +import static android.app.NotificationManager.IMPORTANCE_MIN; import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT; import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking; import static com.android.systemui.statusbar.NotificationEntryHelper.modifySbn; +import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING; import static com.google.common.truth.Truth.assertThat; @@ -35,6 +38,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.app.Notification; @@ -664,6 +668,126 @@ public class NotificationEntryTest extends SysuiTestCase { assertThat(entry.getEntryAdapter().getIcons()).isEqualTo(entry.getIcons()); } + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void isColorized() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setColorized(true) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .build(); + assertThat(entry.getEntryAdapter().isColorized()).isEqualTo( + entry.getSbn().getNotification().isColorized()); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void getSbn() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .build(); + assertThat(entry.getEntryAdapter().getSbn()).isEqualTo( + entry.getSbn()); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void canDragAndDrop() { + PendingIntent pi = mock(PendingIntent.class); + when(pi.isActivity()).thenReturn(true); + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setContentIntent(pi) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .build(); + assertThat(entry.getEntryAdapter().canDragAndDrop()).isTrue(); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void isBubble() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setFlag(FLAG_BUBBLE, true) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .build(); + assertThat(entry.getEntryAdapter().isBubbleCapable()).isEqualTo(entry.isBubble()); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void getStyle() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setStyle(new Notification.BigTextStyle()) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .build(); + assertThat(entry.getEntryAdapter().getStyle()).isEqualTo(entry.getNotificationStyle()); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void getSectionBucket() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setStyle(new Notification.BigTextStyle()) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .build(); + entry.setBucket(BUCKET_ALERTING); + + assertThat(entry.getEntryAdapter().getSectionBucket()).isEqualTo(BUCKET_ALERTING); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void isAmbient() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .setImportance(IMPORTANCE_MIN) + .build(); + + assertThat(entry.getEntryAdapter().isAmbient()).isTrue(); + } + + @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) + public void canShowFullScreen() { + Notification notification = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setFullScreenIntent(mock(PendingIntent.class), true) + .build(); + + NotificationEntry entry = new NotificationEntryBuilder() + .setNotification(notification) + .setImportance(IMPORTANCE_MIN) + .build(); + + assertThat(entry.getEntryAdapter().isFullScreenCapable()).isTrue(); + } + private Notification.Action createContextualAction(String title) { return new Notification.Action.Builder( Icon.createWithResource(getContext(), android.R.drawable.sym_def_app_icon), diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt index 43cb9575b609..d5b2d3a68f1e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinatorTest.kt @@ -46,6 +46,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor import com.android.systemui.statusbar.notification.domain.interactor.lockScreenShowOnlyUnseenNotificationsSetting import com.android.systemui.statusbar.notification.domain.interactor.seenNotificationsInteractor @@ -600,7 +601,7 @@ class OriginalUnseenKeyguardCoordinatorTest(flags: FlagsParameterization) : Sysu testScheduler.runCurrent() // WHEN: the notification is updated - collectionListener.onEntryUpdated(entry) + collectionListener.onEntryUpdated(entry, UpdateSource.App) testScheduler.runCurrent() // WHEN: four more seconds have passed diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt index a3f845225a99..85d7386a3e16 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinatorTest.kt @@ -39,6 +39,7 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.In import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender.OnEndLifetimeExtensionCallback +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.captureMany import com.android.systemui.util.mockito.withArgCaptor @@ -191,7 +192,7 @@ class RemoteInputCoordinatorTest : SysuiTestCase() { `when`(remoteInputManager.shouldKeepForRemoteInputHistory(entry)).thenReturn(true) `when`(remoteInputManager.shouldKeepForSmartReplyHistory(entry)).thenReturn(false) - collectionListeners.forEach { it.onEntryUpdated(entry, true) } + collectionListeners.forEach { it.onEntryUpdated(entry, UpdateSource.App) } verify(rebuilder, times(1)).rebuildForRemoteInputReply(entry) } @@ -208,7 +209,7 @@ class RemoteInputCoordinatorTest : SysuiTestCase() { .build() `when`(remoteInputManager.shouldKeepForRemoteInputHistory(entry)).thenReturn(false) `when`(remoteInputManager.shouldKeepForSmartReplyHistory(entry)).thenReturn(true) - collectionListeners.forEach { it.onEntryUpdated(entry, true) } + collectionListeners.forEach { it.onEntryUpdated(entry, UpdateSource.App) } verify(rebuilder, times(1)).rebuildForCanceledSmartReplies(entry) verify(smartReplyController, times(1)).stopSending(entry) @@ -226,7 +227,7 @@ class RemoteInputCoordinatorTest : SysuiTestCase() { .build() `when`(remoteInputManager.shouldKeepForRemoteInputHistory(entry)).thenReturn(false) `when`(remoteInputManager.shouldKeepForSmartReplyHistory(entry)).thenReturn(false) - collectionListeners.forEach { it.onEntryUpdated(entry, true) } + collectionListeners.forEach { it.onEntryUpdated(entry, UpdateSource.App) } verify(rebuilder, times(1)).rebuildForRemoteInputReply(entry) } @@ -246,7 +247,7 @@ class RemoteInputCoordinatorTest : SysuiTestCase() { `when`(remoteInputManager.shouldKeepForRemoteInputHistory(entry)).thenReturn(false) `when`(remoteInputManager.shouldKeepForSmartReplyHistory(entry)).thenReturn(false) - collectionListeners.forEach { it.onEntryUpdated(entry, true) } + collectionListeners.forEach { it.onEntryUpdated(entry, UpdateSource.App) } assertThat(entry.remoteInputs).isNull() } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java deleted file mode 100644 index 2aa405abc1c5..000000000000 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java +++ /dev/null @@ -1,1001 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.statusbar.notification.collection.coordinator; - -import static android.platform.test.flag.junit.FlagsParameterization.allCombinationsOf; - -import static com.google.common.truth.Truth.assertThat; - -import static junit.framework.Assert.assertFalse; - -import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assume.assumeFalse; -import static org.junit.Assume.assumeTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.platform.test.annotations.EnableFlags; -import android.platform.test.flag.junit.FlagsParameterization; -import android.testing.TestableLooper; - -import androidx.test.filters.SmallTest; - -import com.android.compose.animation.scene.ObservableTransitionState; -import com.android.systemui.Flags; -import com.android.systemui.SysuiTestCase; -import com.android.systemui.communal.shared.model.CommunalScenes; -import com.android.systemui.dump.DumpManager; -import com.android.systemui.flags.BrokenWithSceneContainer; -import com.android.systemui.flags.DisableSceneContainer; -import com.android.systemui.flags.EnableSceneContainer; -import com.android.systemui.flags.SceneContainerFlagParameterizationKt; -import com.android.systemui.keyguard.WakefulnessLifecycle; -import com.android.systemui.keyguard.shared.model.KeyguardState; -import com.android.systemui.keyguard.shared.model.TransitionState; -import com.android.systemui.keyguard.shared.model.TransitionStep; -import com.android.systemui.kosmos.KosmosJavaAdapter; -import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.scene.shared.flag.SceneContainerFlag; -import com.android.systemui.shade.data.repository.FakeShadeRepository; -import com.android.systemui.shade.data.repository.ShadeAnimationRepository; -import com.android.systemui.shade.data.repository.ShadeRepository; -import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor; -import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorLegacyImpl; -import com.android.systemui.statusbar.notification.VisibilityLocationProvider; -import com.android.systemui.statusbar.notification.collection.GroupEntry; -import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder; -import com.android.systemui.statusbar.notification.collection.NotifPipeline; -import com.android.systemui.statusbar.notification.collection.NotificationEntry; -import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; -import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager; -import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable; -import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider; -import com.android.systemui.statusbar.notification.data.repository.HeadsUpRepository; -import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor; -import com.android.systemui.statusbar.policy.KeyguardStateController; -import com.android.systemui.util.concurrency.FakeExecutor; -import com.android.systemui.util.kotlin.JavaAdapter; -import com.android.systemui.util.time.FakeSystemClock; - -import kotlinx.coroutines.flow.MutableStateFlow; -import kotlinx.coroutines.test.TestScope; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.mockito.verification.VerificationMode; - -import platform.test.runner.parameterized.ParameterizedAndroidJunit4; -import platform.test.runner.parameterized.Parameters; - -import java.util.List; -import java.util.Set; - -@SmallTest -@RunWith(ParameterizedAndroidJunit4.class) -@TestableLooper.RunWithLooper -public class VisualStabilityCoordinatorTest extends SysuiTestCase { - - @Parameters(name = "{0}") - public static List<FlagsParameterization> getParams() { - return SceneContainerFlagParameterizationKt - .andSceneContainer(allCombinationsOf(Flags.FLAG_STABILIZE_HEADS_UP_GROUP_V2)); - } - - private VisualStabilityCoordinator mCoordinator; - - @Mock private DumpManager mDumpManager; - @Mock private NotifPipeline mNotifPipeline; - @Mock private WakefulnessLifecycle mWakefulnessLifecycle; - @Mock private StatusBarStateController mStatusBarStateController; - @Mock private Pluggable.PluggableListener<NotifStabilityManager> mInvalidateListener; - @Mock private SeenNotificationsInteractor mSeenNotificationsInteractor; - @Mock private HeadsUpRepository mHeadsUpRepository; - @Mock private VisibilityLocationProvider mVisibilityLocationProvider; - @Mock private VisualStabilityProvider mVisualStabilityProvider; - @Mock private VisualStabilityCoordinatorLogger mLogger; - @Mock private KeyguardStateController mKeyguardStateController; - - @Captor private ArgumentCaptor<WakefulnessLifecycle.Observer> mWakefulnessObserverCaptor; - @Captor private ArgumentCaptor<StatusBarStateController.StateListener> mSBStateListenerCaptor; - @Captor private ArgumentCaptor<NotifStabilityManager> mNotifStabilityManagerCaptor; - - private final KosmosJavaAdapter mKosmos = new KosmosJavaAdapter(this); - private FakeSystemClock mFakeSystemClock = new FakeSystemClock(); - private FakeExecutor mFakeBackgroundExecutor = new FakeExecutor(mFakeSystemClock); - private FakeExecutor mFakeMainExecutor = new FakeExecutor(mFakeSystemClock); - private final TestScope mTestScope = mKosmos.getTestScope(); - private final JavaAdapter mJavaAdapter = new JavaAdapter(mTestScope.getBackgroundScope()); - - private ShadeAnimationInteractor mShadeAnimationInteractor; - private ShadeRepository mShadeRepository; - private WakefulnessLifecycle.Observer mWakefulnessObserver; - private StatusBarStateController.StateListener mStatusBarStateListener; - private NotifStabilityManager mNotifStabilityManager; - private NotificationEntry mEntry; - private GroupEntry mGroupEntry; - - public VisualStabilityCoordinatorTest(FlagsParameterization flags) { - super(); - mSetFlagsRule.setFlagsParameterization(flags); - } - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - - mShadeRepository = new FakeShadeRepository(); - mShadeAnimationInteractor = new ShadeAnimationInteractorLegacyImpl( - new ShadeAnimationRepository(), mShadeRepository); - mCoordinator = new VisualStabilityCoordinator( - mFakeBackgroundExecutor, - mFakeMainExecutor, - mDumpManager, - mHeadsUpRepository, - mShadeAnimationInteractor, - mJavaAdapter, - mSeenNotificationsInteractor, - mStatusBarStateController, - mVisibilityLocationProvider, - mVisualStabilityProvider, - mWakefulnessLifecycle, - mKosmos.getCommunalSceneInteractor(), - mKosmos.getShadeInteractor(), - mKosmos.getKeyguardTransitionInteractor(), - mKeyguardStateController, - mLogger); - - when(mHeadsUpRepository.isTrackingHeadsUp()).thenReturn(MutableStateFlow(false)); - mCoordinator.attach(mNotifPipeline); - mTestScope.getTestScheduler().runCurrent(); - - // capture arguments: - verify(mWakefulnessLifecycle).addObserver(mWakefulnessObserverCaptor.capture()); - mWakefulnessObserver = mWakefulnessObserverCaptor.getValue(); - - verify(mStatusBarStateController).addCallback(mSBStateListenerCaptor.capture()); - mStatusBarStateListener = mSBStateListenerCaptor.getValue(); - - verify(mNotifPipeline).setVisualStabilityManager(mNotifStabilityManagerCaptor.capture()); - mNotifStabilityManager = mNotifStabilityManagerCaptor.getValue(); - mNotifStabilityManager.setInvalidationListener(mInvalidateListener); - - mEntry = new NotificationEntryBuilder() - .setPkg("testPkg1") - .build(); - - mGroupEntry = new GroupEntryBuilder() - .setSummary(mEntry) - .build(); - - when(mHeadsUpRepository.isHeadsUpEntry(mEntry.getKey())).thenReturn(false); - - // Whenever we invalidate, the pipeline runs again, so we invalidate the state - doAnswer(i -> { - mNotifStabilityManager.onBeginRun(); - return null; - }).when(mInvalidateListener).onPluggableInvalidated(eq(mNotifStabilityManager), any()); - } - - @Test - public void testScreenOff_groupAndSectionChangesAllowed() { - // GIVEN screen is off, panel isn't expanded and device isn't pulsing - setFullyDozed(true); - setSleepy(true); - setPanelExpanded(false); - setPulsing(false); - - // THEN group changes are allowed - assertTrue(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertTrue(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are allowed - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testScreenTurningOff_groupAndSectionChangesNotAllowed() { - // GIVEN the screen is turning off (sleepy but partially dozed) - setFullyDozed(false); - setSleepy(true); - setPanelExpanded(true); - setPulsing(false); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testScreenTurningOn_groupAndSectionChangesNotAllowed() { - // GIVEN the screen is turning on (still fully dozed, not sleepy) - setFullyDozed(true); - setSleepy(false); - setPanelExpanded(true); - setPulsing(false); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testPanelNotExpanded_groupAndSectionChangesAllowed() { - // GIVEN screen is on but the panel isn't expanded and device isn't pulsing - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(false); - setPulsing(false); - - // THEN group changes are allowed - assertTrue(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertTrue(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are allowed - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testPanelExpanded_groupAndSectionChangesNotAllowed() { - // GIVEN the panel true expanded and device isn't pulsing - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setPulsing(false); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer - public void testLockscreenPartlyShowing_groupAndSectionChangesNotAllowed() { - // GIVEN the panel true expanded and device isn't pulsing - setFullyDozed(false); - setSleepy(false); - setLockscreenShowing(0.5f); - setPulsing(false); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer - public void testLockscreenFullyShowing_groupAndSectionChangesNotAllowed() { - // GIVEN the panel true expanded and device isn't pulsing - setFullyDozed(false); - setSleepy(false); - setLockscreenShowing(1.0f); - setPulsing(false); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testPulsing_screenOff_groupAndSectionChangesNotAllowed() { - // GIVEN the device is pulsing and screen is off - setFullyDozed(true); - setSleepy(true); - setPulsing(true); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testPulsing_panelNotExpanded_groupAndSectionChangesNotAllowed() { - // GIVEN the device is pulsing and screen is off with the panel not expanded - setFullyDozed(true); - setSleepy(true); - setPanelExpanded(false); - setPulsing(true); - - // THEN group changes are NOT allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are NOT allowed - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testOverrideReorderingSuppression_onlySectionChangesAllowed() { - // GIVEN section changes typically wouldn't be allowed because the panel is expanded and - // we're not pulsing - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setPulsing(true); - - // WHEN we temporarily allow section changes for this notification entry - mCoordinator.temporarilyAllowSectionChanges(mEntry, mFakeSystemClock.currentTimeMillis()); - - // THEN group changes aren't allowed - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // THEN section changes are allowed for this notification but not other notifications - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isSectionChangeAllowed( - new NotificationEntryBuilder() - .setPkg("testPkg2") - .build())); - } - - @Test - public void testTemporarilyAllowSectionChanges_callsInvalidate() { - // GIVEN section changes typically wouldn't be allowed because the panel is expanded - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setPulsing(false); - - // WHEN we temporarily allow section changes for this notification entry - mCoordinator.temporarilyAllowSectionChanges(mEntry, mFakeSystemClock.uptimeMillis()); - - // THEN the notification list is invalidated - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - public void testTemporarilyAllowSectionChanges_noInvalidationCalled() { - // GIVEN section changes typically WOULD be allowed - setFullyDozed(true); - setSleepy(true); - setPanelExpanded(false); - setPulsing(false); - - // WHEN we temporarily allow section changes for this notification entry - mCoordinator.temporarilyAllowSectionChanges(mEntry, mFakeSystemClock.currentTimeMillis()); - - // THEN invalidate is not called because this entry was never suppressed from reordering - verifyStabilityManagerWasInvalidated(never()); - } - - @Test - public void testTemporarilyAllowSectionChangesTimeout() { - // GIVEN section changes typically WOULD be allowed - setFullyDozed(true); - setSleepy(true); - setPanelExpanded(false); - setPulsing(false); - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - - // WHEN we temporarily allow section changes for this notification entry - mCoordinator.temporarilyAllowSectionChanges(mEntry, mFakeSystemClock.currentTimeMillis()); - - // THEN invalidate is not called because this entry was never suppressed from reordering; - // THEN section changes are allowed for this notification - verifyStabilityManagerWasInvalidated(never()); - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - - // WHEN we're pulsing (now disallowing reordering) - setPulsing(true); - - // THEN we're still allowed to reorder this section because it's still in the list of - // notifications to allow section changes - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - - // WHEN the timeout for the temporarily allow section reordering runnable is finsihed - mFakeBackgroundExecutor.advanceClockToNext(); - mFakeBackgroundExecutor.runNextReady(); - - // THEN section changes aren't allowed anymore - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - } - - @Test - public void testTemporarilyAllowSectionChanges_isPulsingChangeBeforeTimeout() { - // GIVEN section changes typically wouldn't be allowed because the device is pulsing - setFullyDozed(true); - setSleepy(true); - setPanelExpanded(false); - setPulsing(true); - - // WHEN we temporarily allow section changes for this notification entry - mCoordinator.temporarilyAllowSectionChanges(mEntry, mFakeSystemClock.currentTimeMillis()); - // can now reorder, so invalidates - verifyStabilityManagerWasInvalidated(times(1)); - - // WHEN reordering is now allowed because device isn't pulsing anymore - setPulsing(false); - - // THEN invalidate isn't called a second time since reordering was already allowed - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - public void testMovingVisibleHeadsUpNotAllowed() { - // GIVEN stability enforcing conditions - setPanelExpanded(true); - setSleepy(false); - - // WHEN a notification is alerting and visible - when(mHeadsUpRepository.isHeadsUpEntry(mEntry.getKey())).thenReturn(true); - when(mVisibilityLocationProvider.isInVisibleLocation(any(NotificationEntry.class))) - .thenReturn(true); - - // VERIFY the notification cannot be reordered - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(mEntry)).isFalse(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(mEntry)).isFalse(); - } - - @Test - public void testMovingInvisibleHeadsUpAllowed() { - // GIVEN stability enforcing conditions - setPanelExpanded(true); - setSleepy(false); - - // WHEN a notification is alerting but not visible - when(mHeadsUpRepository.isHeadsUpEntry(mEntry.getKey())).thenReturn(true); - when(mVisibilityLocationProvider.isInVisibleLocation(any(NotificationEntry.class))) - .thenReturn(false); - - // VERIFY the notification can be reordered - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(mEntry)).isTrue(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(mEntry)).isTrue(); - } - - @Test - public void testNeverSuppressedChanges_noInvalidationCalled() { - // GIVEN no notifications are currently being suppressed from grouping nor being sorted - - // WHEN device isn't pulsing anymore - setPulsing(false); - - // WHEN fully dozed - setFullyDozed(true); - - // WHEN sleepy - setSleepy(true); - - // WHEN panel isn't expanded - setPanelExpanded(false); - - // THEN we never see any calls to invalidate since there weren't any notifications that - // were being suppressed from grouping or section changes - verifyStabilityManagerWasInvalidated(never()); - } - - @Test - public void testNotSuppressingGroupChangesAnymore_invalidationCalled() { - // GIVEN visual stability is being maintained b/c panel is expanded - setPulsing(false); - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - - // WHEN the panel isn't expanded anymore - setPanelExpanded(false); - - // invalidate is called because we were previously suppressing a group change - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - public void testNotLaunchingActivityAnymore_invalidationCalled() { - // GIVEN visual stability is being maintained b/c animation is playing - setActivityLaunching(true); - - assertFalse(mNotifStabilityManager.isPipelineRunAllowed()); - - // WHEN the animation has stopped playing - setActivityLaunching(false); - - // invalidate is called, b/c we were previously suppressing the pipeline from running - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - public void testNotCollapsingPanelAnymore_invalidationCalled() { - // GIVEN visual stability is being maintained b/c animation is playing - setPanelCollapsing(true); - - assertFalse(mNotifStabilityManager.isPipelineRunAllowed()); - - // WHEN the animation has stopped playing - setPanelCollapsing(false); - - // invalidate is called, b/c we were previously suppressing the pipeline from running - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - @EnableFlags(Flags.FLAG_CHECK_LOCKSCREEN_GONE_TRANSITION) - @DisableSceneContainer - public void testNotLockscreenInGoneTransitionLegacy_invalidationCalled() { - // GIVEN visual stability is being maintained b/c animation is playing - doReturn(true).when(mKeyguardStateController).isKeyguardFadingAway(); - mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged(); - - assertFalse(mNotifStabilityManager.isPipelineRunAllowed()); - - // WHEN the animation has stopped playing - doReturn(false).when(mKeyguardStateController).isKeyguardFadingAway(); - mCoordinator.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged(); - - // invalidate is called, b/c we were previously suppressing the pipeline from running - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - @EnableFlags(Flags.FLAG_CHECK_LOCKSCREEN_GONE_TRANSITION) - @EnableSceneContainer - @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer - public void testNotLockscreenInGoneTransition_invalidationCalled() { - // GIVEN visual stability is being maintained b/c animation is playing - mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( - mTestScope, new TransitionStep( - KeyguardState.LOCKSCREEN, - KeyguardState.GONE, - 1f, - TransitionState.RUNNING), /* validateStep = */ false); - mTestScope.getTestScheduler().runCurrent(); - assertFalse(mNotifStabilityManager.isPipelineRunAllowed()); - - // WHEN the animation has stopped playing - mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( - mTestScope, new TransitionStep( - KeyguardState.LOCKSCREEN, - KeyguardState.GONE, - 1f, - TransitionState.FINISHED), /* validateStep = */ false); - mTestScope.getTestScheduler().runCurrent(); - - // invalidate is called, b/c we were previously suppressing the pipeline from running - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - public void testNeverSuppressPipelineRunFromPanelCollapse_noInvalidationCalled() { - // GIVEN animation is playing - setPanelCollapsing(true); - - // WHEN the animation has stopped playing - setPanelCollapsing(false); - - // THEN invalidate is not called, b/c nothing has been suppressed - verifyStabilityManagerWasInvalidated(never()); - } - - @Test - public void testNeverSuppressPipelineRunFromLaunchActivity_noInvalidationCalled() { - // GIVEN animation is playing - setActivityLaunching(true); - - // WHEN the animation has stopped playing - setActivityLaunching(false); - - // THEN invalidate is not called, b/c nothing has been suppressed - verifyStabilityManagerWasInvalidated(never()); - } - - @Test - public void testNotSuppressingEntryReorderingAnymoreWillInvalidate() { - // GIVEN visual stability is being maintained b/c panel is expanded - setPulsing(false); - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setCommunalShowing(false); - - assertFalse(mNotifStabilityManager.isEntryReorderingAllowed(mEntry)); - // The pipeline still has to report back that entry reordering was suppressed - mNotifStabilityManager.onEntryReorderSuppressed(); - - // WHEN the panel isn't expanded anymore - setPanelExpanded(false); - - // invalidate is called because we were previously suppressing an entry reorder - verifyStabilityManagerWasInvalidated(times(1)); - } - - @Test - @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer - public void testCommunalShowingWillNotSuppressReordering() { - // GIVEN panel is expanded, communal is showing, and QS is collapsed - setPulsing(false); - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setQsExpanded(false); - setCommunalShowing(true); - - // Reordering should be allowed - assertTrue(mNotifStabilityManager.isEntryReorderingAllowed(mEntry)); - } - - @Test - public void testQsExpandedOverCommunalWillSuppressReordering() { - // GIVEN panel is expanded and communal is showing, but QS is expanded - setPulsing(false); - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setQsExpanded(true); - setCommunalShowing(true); - - // Reordering should not be allowed - assertFalse(mNotifStabilityManager.isEntryReorderingAllowed(mEntry)); - } - - @Test - public void testQueryingEntryReorderingButNotReportingReorderSuppressedDoesNotInvalidate() { - // GIVEN visual stability is being maintained b/c panel is expanded - setPulsing(false); - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - - assertFalse(mNotifStabilityManager.isEntryReorderingAllowed(mEntry)); - - // WHEN the panel isn't expanded anymore - setPanelExpanded(false); - - // invalidate is not called because we were not told that an entry reorder was suppressed - verifyStabilityManagerWasInvalidated(never()); - } - - @Test - public void testHeadsUp_allowedToChangeGroupAndSection() { - // GIVEN group + section changes disallowed - setFullyDozed(false); - setSleepy(false); - setPanelExpanded(true); - setPulsing(true); - assertFalse(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - - // GIVEN mEntry is a HUN - when(mHeadsUpRepository.isHeadsUpEntry(mEntry.getKey())).thenReturn(true); - - // THEN group + section changes are allowed - assertTrue(mNotifStabilityManager.isGroupChangeAllowed(mEntry)); - assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); - - // BUT pruning the group for which this is the summary would still NOT be allowed. - assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); - } - - @Test - public void everyChangeAllowed_onReorderingEnabled_legacy() { - assumeFalse(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // THEN - assertThat(mNotifStabilityManager.isEveryChangeAllowed()).isTrue(); - assertThat(mNotifStabilityManager.isGroupChangeAllowed(any())).isTrue(); - assertThat(mNotifStabilityManager.isGroupPruneAllowed(any())).isTrue(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(any())).isTrue(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(any())).isTrue(); - } - - @Test - public void everyChangeAllowed_noActiveHeadsUpGroup_onReorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - empty heads-up-group keys - mCoordinator.setHeadsUpGroupKeys(Set.of()); - - // THEN - assertThat(mNotifStabilityManager.isEveryChangeAllowed()).isTrue(); - assertThat(mNotifStabilityManager.isGroupChangeAllowed(any())).isTrue(); - assertThat(mNotifStabilityManager.isGroupPruneAllowed(any())).isTrue(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(any())).isTrue(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(any())).isTrue(); - } - - @Test - public void everyChangeDisallowed_activeHeadsUpGroup_onReorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - there is a group heads-up. - mCoordinator.setHeadsUpGroupKeys(Set.of("heads_up_group_key")); - - // THEN - assertThat(mNotifStabilityManager.isEveryChangeAllowed()).isFalse(); - } - - @Test - public void nonHeadsUpGroup_changesAllowed_onReorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - there is a group heads-up. - String headsUpGroupKey = "heads_up_group_key"; - mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); - when(mHeadsUpRepository.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); - - // GIVEN - HUN Group Summary - final NotificationEntry nonHeadsUpGroupSummary = mock(NotificationEntry.class); - when(nonHeadsUpGroupSummary.getKey()).thenReturn("non_heads_up_group_key"); - when(nonHeadsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); - final GroupEntry nonHeadsUpGroupEntry = mock(GroupEntry.class); - when(nonHeadsUpGroupEntry.getSummary()).thenReturn(nonHeadsUpGroupSummary); - when(nonHeadsUpGroupEntry.getRepresentativeEntry()).thenReturn(nonHeadsUpGroupSummary); - - // THEN - assertThat(mNotifStabilityManager.isGroupPruneAllowed(nonHeadsUpGroupEntry)).isTrue(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(nonHeadsUpGroupEntry)).isTrue(); - } - - @Test - public void headsUpGroup_changesDisallowed_onReorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - there is a group heads-up. - final String headsUpGroupKey = "heads_up_group_key"; - mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); - when(mHeadsUpRepository.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); - - // GIVEN - HUN Group - final NotificationEntry headsUpGroupSummary = mock(NotificationEntry.class); - when(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false); - when(headsUpGroupSummary.getKey()).thenReturn(headsUpGroupKey); - when(headsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); - - final GroupEntry headsUpGroupEntry = mock(GroupEntry.class); - when(headsUpGroupEntry.getSummary()).thenReturn(headsUpGroupSummary); - when(headsUpGroupEntry.getRepresentativeEntry()).thenReturn(headsUpGroupSummary); - - when(headsUpGroupSummary.getParent()).thenReturn(headsUpGroupEntry); - - // GIVEN - HUN is in visible location - when(mVisibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)).thenReturn(true); - - // THEN - assertThat(mNotifStabilityManager.isGroupPruneAllowed(headsUpGroupEntry)).isFalse(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(headsUpGroupEntry)).isFalse(); - } - - @Test - public void headsUpGroupSummaries_changesDisallowed_onReorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - there is a group heads-up. - final String headsUpGroupKey = "heads_up_group_key"; - mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); - when(mHeadsUpRepository.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); - - // GIVEN - HUN Group - final NotificationEntry headsUpGroupSummary = mock(NotificationEntry.class); - when(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false); - when(headsUpGroupSummary.getKey()).thenReturn(headsUpGroupKey); - when(headsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); - - final GroupEntry headsUpGroupEntry = mock(GroupEntry.class); - when(headsUpGroupEntry.getSummary()).thenReturn(headsUpGroupSummary); - when(headsUpGroupEntry.getRepresentativeEntry()).thenReturn(headsUpGroupSummary); - - when(headsUpGroupSummary.getParent()).thenReturn(headsUpGroupEntry); - - // GIVEN - HUN is in visible location - when(mVisibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)).thenReturn(true); - - // THEN - assertThat(mNotifStabilityManager.isGroupChangeAllowed(headsUpGroupSummary)).isFalse(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(headsUpGroupSummary)).isFalse(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(headsUpGroupSummary)).isFalse(); - } - - @Test - public void notificationInNonHUNGroup_changesAllowed_onReorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - there is a group heads-up. - String headsUpGroupKey = "heads_up_group_key"; - mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); - when(mHeadsUpRepository.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); - - // GIVEN - non HUN parent Group Summary - final NotificationEntry groupSummary = mock(NotificationEntry.class); - when(groupSummary.getKey()).thenReturn("non_heads_up_group_key"); - when(groupSummary.isSummaryWithChildren()).thenReturn(true); - - final GroupEntry nonHeadsUpGroupEntry = mock(GroupEntry.class); - when(nonHeadsUpGroupEntry.getSummary()).thenReturn(groupSummary); - when(nonHeadsUpGroupEntry.getRepresentativeEntry()).thenReturn(groupSummary); - - // GIVEN - child entry in a non heads-up group. - final NotificationEntry childEntry = mock(NotificationEntry.class); - when(childEntry.rowIsChildInGroup()).thenReturn(true); - when(childEntry.getParent()).thenReturn(nonHeadsUpGroupEntry); - when(childEntry.getParent()).thenReturn(nonHeadsUpGroupEntry); - - // THEN - assertThat(mNotifStabilityManager.isGroupChangeAllowed(childEntry)).isTrue(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(childEntry)).isTrue(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(nonHeadsUpGroupEntry)).isTrue(); - } - - @Test - public void notificationInHUNGroup_changesDisallowed_reorderingEnabled() { - assumeTrue(StabilizeHeadsUpGroup.isEnabled()); - // GIVEN - reordering is allowed. - setPulsing(false); - setPanelExpanded(false); - - // GIVEN - there is a group heads-up. - final String headsUpGroupKey = "heads_up_group_key"; - mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); - when(mHeadsUpRepository.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); - - // GIVEN - HUN Group Summary - final NotificationEntry headsUpGroupSummary = mock(NotificationEntry.class); - when(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false); - when(headsUpGroupSummary.getKey()).thenReturn(headsUpGroupKey); - when(headsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); - - final GroupEntry nonHeadsUpGroupEntry = mock(GroupEntry.class); - when(nonHeadsUpGroupEntry.getSummary()).thenReturn(headsUpGroupSummary); - when(nonHeadsUpGroupEntry.getRepresentativeEntry()).thenReturn(headsUpGroupSummary); - - // GIVEN - child entry in a non heads-up group. - final NotificationEntry childEntry = mock(NotificationEntry.class); - when(childEntry.rowIsChildInGroup()).thenReturn(true); - when(childEntry.getParent()).thenReturn(nonHeadsUpGroupEntry); - - // GIVEN - HUN is in visible location - when(mVisibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)).thenReturn(true); - - // THEN - assertThat(mNotifStabilityManager.isGroupChangeAllowed(childEntry)).isFalse(); - assertThat(mNotifStabilityManager.isSectionChangeAllowed(childEntry)).isFalse(); - assertThat(mNotifStabilityManager.isEntryReorderingAllowed(childEntry)).isFalse(); - } - - private void verifyStabilityManagerWasInvalidated(VerificationMode mode) { - verify(mInvalidateListener, mode).onPluggableInvalidated(eq(mNotifStabilityManager), any()); - } - - private void setActivityLaunching(boolean activityLaunching) { - mShadeAnimationInteractor.setIsLaunchingActivity(activityLaunching); - mTestScope.getTestScheduler().runCurrent(); - } - - private void setPanelCollapsing(boolean collapsing) { - mShadeRepository.setLegacyIsClosing(collapsing); - mTestScope.getTestScheduler().runCurrent(); - } - - private void setCommunalShowing(boolean isShowing) { - final MutableStateFlow<ObservableTransitionState> showingFlow = - MutableStateFlow( - new ObservableTransitionState.Idle( - isShowing ? CommunalScenes.Communal : CommunalScenes.Blank) - ); - mKosmos.getCommunalSceneInteractor().setTransitionState(showingFlow); - mTestScope.getTestScheduler().runCurrent(); - } - - private void setQsExpanded(boolean isExpanded) { - mKosmos.getShadeRepository().setQsExpansion(isExpanded ? 1.0f : 0.0f); - mTestScope.getTestScheduler().runCurrent(); - } - - private void setPulsing(boolean pulsing) { - mStatusBarStateListener.onPulsingChanged(pulsing); - } - - private void setFullyDozed(boolean fullyDozed) { - float dozeAmount = fullyDozed ? 1 : 0; - mStatusBarStateListener.onDozeAmountChanged(dozeAmount, dozeAmount); - } - - private void setSleepy(boolean sleepy) { - if (sleepy) { - mWakefulnessObserver.onFinishedGoingToSleep(); - } else { - mWakefulnessObserver.onStartedWakingUp(); - } - } - - private void setPanelExpanded(boolean expanded) { - setPanelExpandedAndLockscreenShowing(expanded, /* lockscreenShowing = */ 0.0f); - } - - private void setLockscreenShowing(float lockscreenShowing) { - setPanelExpandedAndLockscreenShowing(/* panelExpanded = */ false, lockscreenShowing); - } - - private void setPanelExpandedAndLockscreenShowing(boolean panelExpanded, - float lockscreenShowing) { - if (SceneContainerFlag.isEnabled()) { - mStatusBarStateListener.onExpandedChanged(panelExpanded); - mKosmos.getKeyguardTransitionRepository().sendTransitionStepJava( - mTestScope, - makeLockscreenTransitionStep(lockscreenShowing), - /* validateStep = */ false); - } else { - mStatusBarStateListener.onExpandedChanged(panelExpanded || lockscreenShowing > 0.0f); - } - } - - private TransitionStep makeLockscreenTransitionStep(float value) { - if (value <= 0.0f) { - return new TransitionStep(KeyguardState.GONE); - } else if (value >= 1.0f) { - return new TransitionStep(KeyguardState.LOCKSCREEN); - } else { - return new TransitionStep( - KeyguardState.GONE, - KeyguardState.LOCKSCREEN, - value, - TransitionState.RUNNING); - } - } -} diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.kt new file mode 100644 index 000000000000..ef0a4169d98e --- /dev/null +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.kt @@ -0,0 +1,1007 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.statusbar.notification.collection.coordinator + +import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.FlagsParameterization +import android.testing.TestableLooper.RunWithLooper +import androidx.test.filters.SmallTest +import com.android.compose.animation.scene.ObservableTransitionState +import com.android.systemui.Flags +import com.android.systemui.SysuiTestCase +import com.android.systemui.communal.domain.interactor.communalSceneInteractor +import com.android.systemui.communal.shared.model.CommunalScenes +import com.android.systemui.concurrency.fakeExecutor +import com.android.systemui.flags.BrokenWithSceneContainer +import com.android.systemui.flags.DisableSceneContainer +import com.android.systemui.flags.EnableSceneContainer +import com.android.systemui.flags.andSceneContainer +import com.android.systemui.keyguard.WakefulnessLifecycle +import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository +import com.android.systemui.keyguard.shared.model.KeyguardState +import com.android.systemui.keyguard.shared.model.TransitionState +import com.android.systemui.keyguard.shared.model.TransitionStep +import com.android.systemui.keyguard.wakefulnessLifecycle +import com.android.systemui.kosmos.testCase +import com.android.systemui.kosmos.testScope +import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.plugins.statusbar.statusBarStateController +import com.android.systemui.scene.shared.flag.SceneContainerFlag +import com.android.systemui.shade.data.repository.ShadeAnimationRepository +import com.android.systemui.shade.data.repository.fakeShadeRepository +import com.android.systemui.shade.data.repository.shadeRepository +import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorLegacyImpl +import com.android.systemui.shade.domain.interactor.shadeAnimationInteractor +import com.android.systemui.statusbar.notification.VisibilityLocationProvider +import com.android.systemui.statusbar.notification.collection.GroupEntry +import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder +import com.android.systemui.statusbar.notification.collection.NotificationEntry +import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder +import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager +import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Pluggable.PluggableListener +import com.android.systemui.statusbar.notification.collection.notifPipeline +import com.android.systemui.statusbar.notification.data.repository.FakeHeadsUpRowRepository +import com.android.systemui.statusbar.notification.stack.data.repository.FakeHeadsUpNotificationRepository +import com.android.systemui.statusbar.notification.stack.data.repository.headsUpNotificationRepository +import com.android.systemui.statusbar.notification.visibilityLocationProvider +import com.android.systemui.statusbar.policy.KeyguardStateController +import com.android.systemui.statusbar.policy.keyguardStateController +import com.android.systemui.testKosmos +import com.android.systemui.util.mockito.withArgCaptor +import com.android.systemui.util.time.fakeSystemClock +import com.google.common.truth.Truth.assertThat +import kotlin.test.Test +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.test.runTest +import org.junit.Assume.assumeFalse +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.runner.RunWith +import org.mockito.kotlin.any +import org.mockito.kotlin.doAnswer +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever +import org.mockito.verification.VerificationMode +import platform.test.runner.parameterized.ParameterizedAndroidJunit4 +import platform.test.runner.parameterized.Parameters + +@SmallTest +@RunWith(ParameterizedAndroidJunit4::class) +@RunWithLooper +class VisualStabilityCoordinatorTest(flags: FlagsParameterization) : SysuiTestCase() { + private val kosmos = testKosmos().apply { testCase = this@VisualStabilityCoordinatorTest } + + private val invalidateListener: PluggableListener<NotifStabilityManager> = mock() + private val headsUpRepository = kosmos.headsUpNotificationRepository + private val visibilityLocationProvider: VisibilityLocationProvider = + kosmos.visibilityLocationProvider + private val keyguardStateController: KeyguardStateController = kosmos.keyguardStateController + + private val fakeSystemClock = kosmos.fakeSystemClock + private val fakeBackgroundExecutor = kosmos.fakeExecutor + private val testScope = kosmos.testScope + + private val shadeRepository = kosmos.fakeShadeRepository + private lateinit var wakefulnessObserver: WakefulnessLifecycle.Observer + private lateinit var statusBarStateListener: StatusBarStateController.StateListener + private lateinit var notifStabilityManager: NotifStabilityManager + private lateinit var entry: NotificationEntry + private lateinit var groupEntry: GroupEntry + + private val underTest: VisualStabilityCoordinator by lazy { kosmos.visualStabilityCoordinator } + + companion object { + @JvmStatic + @Parameters(name = "{0}") + fun getParams(): List<FlagsParameterization> { + return FlagsParameterization.allCombinationsOf(Flags.FLAG_STABILIZE_HEADS_UP_GROUP_V2) + .andSceneContainer() + } + } + + init { + mSetFlagsRule.setFlagsParameterization(flags) + } + + @Before + fun setUp() { + configureKosmos() + + underTest.attach(kosmos.notifPipeline) + testScope.testScheduler.runCurrent() + + // capture arguments: + wakefulnessObserver = withArgCaptor { + verify(kosmos.wakefulnessLifecycle).addObserver(capture()) + } + statusBarStateListener = withArgCaptor { + verify(kosmos.statusBarStateController).addCallback(capture()) + } + notifStabilityManager = withArgCaptor { + verify(kosmos.notifPipeline).setVisualStabilityManager(capture()) + } + notifStabilityManager.setInvalidationListener(invalidateListener) + + entry = NotificationEntryBuilder().setPkg("testPkg1").build() + + groupEntry = GroupEntryBuilder().setSummary(entry).build() + + // Whenever we invalidate, the pipeline runs again, so we invalidate the state + whenever(invalidateListener.onPluggableInvalidated(eq(notifStabilityManager), any())) + .doAnswer { _ -> + notifStabilityManager.onBeginRun() + null + } + } + + private fun configureKosmos() { + kosmos.statusBarStateController = mock() + // TODO(377868472) only override this when SceneContainer is disabled + kosmos.shadeAnimationInteractor = + ShadeAnimationInteractorLegacyImpl(ShadeAnimationRepository(), shadeRepository) + } + + @Test + fun testScreenOff_groupAndSectionChangesAllowed() = + testScope.runTest { + // GIVEN screen is off, panel isn't expanded and device isn't pulsing + setFullyDozed(true) + setSleepy(true) + setPanelExpanded(false) + setPulsing(false) + + // THEN group changes are allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isTrue() + + // THEN section changes are allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + } + + @Test + fun testScreenTurningOff_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the screen is turning off (sleepy but partially dozed) + setFullyDozed(false) + setSleepy(true) + setPanelExpanded(true) + setPulsing(false) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testScreenTurningOn_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the screen is turning on (still fully dozed, not sleepy) + setFullyDozed(true) + setSleepy(false) + setPanelExpanded(true) + setPulsing(false) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testPanelNotExpanded_groupAndSectionChangesAllowed() = + testScope.runTest { + // GIVEN screen is on but the panel isn't expanded and device isn't pulsing + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(false) + setPulsing(false) + + // THEN group changes are allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isTrue() + + // THEN section changes are allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + } + + @Test + fun testPanelExpanded_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the panel true expanded and device isn't pulsing + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setPulsing(false) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer + fun testLockscreenPartlyShowing_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the panel true expanded and device isn't pulsing + setFullyDozed(false) + setSleepy(false) + setLockscreenShowing(0.5f) + setPulsing(false) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer + fun testLockscreenFullyShowing_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the panel true expanded and device isn't pulsing + setFullyDozed(false) + setSleepy(false) + setLockscreenShowing(1.0f) + setPulsing(false) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testPulsing_screenOff_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the device is pulsing and screen is off + setFullyDozed(true) + setSleepy(true) + setPulsing(true) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testPulsing_panelNotExpanded_groupAndSectionChangesNotAllowed() = + testScope.runTest { + // GIVEN the device is pulsing and screen is off with the panel not expanded + setFullyDozed(true) + setSleepy(true) + setPanelExpanded(false) + setPulsing(true) + + // THEN group changes are NOT allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are NOT allowed + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testOverrideReorderingSuppression_onlySectionChangesAllowed() = + testScope.runTest { + // GIVEN section changes typically wouldn't be allowed because the panel is expanded and + // we're not pulsing + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setPulsing(true) + + // WHEN we temporarily allow section changes for this notification entry + underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis()) + + // THEN group changes aren't allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // THEN section changes are allowed for this notification but not other notifications + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + assertThat( + notifStabilityManager.isSectionChangeAllowed( + NotificationEntryBuilder().setPkg("testPkg2").build() + ) + ) + .isFalse() + } + + @Test + fun testTemporarilyAllowSectionChanges_callsInvalidate() = + testScope.runTest { + // GIVEN section changes typically wouldn't be allowed because the panel is expanded + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setPulsing(false) + + // WHEN we temporarily allow section changes for this notification entry + underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.uptimeMillis()) + + // THEN the notification list is invalidated + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + fun testTemporarilyAllowSectionChanges_noInvalidationCalled() = + testScope.runTest { + // GIVEN section changes typically WOULD be allowed + setFullyDozed(true) + setSleepy(true) + setPanelExpanded(false) + setPulsing(false) + + // WHEN we temporarily allow section changes for this notification entry + underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis()) + + // THEN invalidate is not called because this entry was never suppressed from reordering + verifyStabilityManagerWasInvalidated(never()) + } + + @Test + fun testTemporarilyAllowSectionChangesTimeout() = + testScope.runTest { + // GIVEN section changes typically WOULD be allowed + setFullyDozed(true) + setSleepy(true) + setPanelExpanded(false) + setPulsing(false) + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + + // WHEN we temporarily allow section changes for this notification entry + underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis()) + + // THEN invalidate is not called because this entry was never suppressed from + // reordering; + // THEN section changes are allowed for this notification + verifyStabilityManagerWasInvalidated(never()) + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + + // WHEN we're pulsing (now disallowing reordering) + setPulsing(true) + + // THEN we're still allowed to reorder this section because it's still in the list of + // notifications to allow section changes + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + + // WHEN the timeout for the temporarily allow section reordering runnable is finsihed + fakeBackgroundExecutor.advanceClockToNext() + fakeBackgroundExecutor.runNextReady() + + // THEN section changes aren't allowed anymore + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testTemporarilyAllowSectionChanges_isPulsingChangeBeforeTimeout() = + testScope.runTest { + // GIVEN section changes typically wouldn't be allowed because the device is pulsing + setFullyDozed(true) + setSleepy(true) + setPanelExpanded(false) + setPulsing(true) + + // WHEN we temporarily allow section changes for this notification entry + underTest.temporarilyAllowSectionChanges(entry, fakeSystemClock.currentTimeMillis()) + // can now reorder, so invalidates + verifyStabilityManagerWasInvalidated(times(1)) + + // WHEN reordering is now allowed because device isn't pulsing anymore + setPulsing(false) + + // THEN invalidate isn't called a second time since reordering was already allowed + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + fun testMovingVisibleHeadsUpNotAllowed() = + testScope.runTest { + // GIVEN stability enforcing conditions + setPanelExpanded(true) + setSleepy(false) + + // WHEN a notification is alerting and visible + headsUpRepository.setHeadsUpKeys(entry.key) + whenever(visibilityLocationProvider.isInVisibleLocation(any())).thenReturn(true) + + // THEN the notification cannot be reordered + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + } + + @Test + fun testMovingInvisibleHeadsUpAllowed() = + testScope.runTest { + // GIVEN stability enforcing conditions + setPanelExpanded(true) + setSleepy(false) + + // WHEN a notification is alerting but not visible + headsUpRepository.setHeadsUpKeys(entry.key) + whenever(visibilityLocationProvider.isInVisibleLocation(any())).thenReturn(false) + + // THEN the notification can be reordered + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + } + + @Test + fun testNeverSuppressedChanges_noInvalidationCalled() = + testScope.runTest { + // GIVEN no notifications are currently being suppressed from grouping nor being sorted + + // WHEN device isn't pulsing anymore + + setPulsing(false) + + // WHEN fully dozed + setFullyDozed(true) + + // WHEN sleepy + setSleepy(true) + + // WHEN panel isn't expanded + setPanelExpanded(false) + + // THEN we never see any calls to invalidate since there weren't any notifications that + // were being suppressed from grouping or section changes + verifyStabilityManagerWasInvalidated(never()) + } + + @Test + fun testNotSuppressingGroupChangesAnymore_invalidationCalled() = + testScope.runTest { + // GIVEN visual stability is being maintained b/c panel is expanded + setPulsing(false) + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + + // WHEN the panel isn't expanded anymore + setPanelExpanded(false) + + // THEN invalidate is called because we were previously suppressing a group change + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + fun testNotLaunchingActivityAnymore_invalidationCalled() { + // GIVEN visual stability is being maintained b/c animation is playing + setActivityLaunching(true) + + assertThat(notifStabilityManager.isPipelineRunAllowed()).isFalse() + + // WHEN the animation has stopped playing + setActivityLaunching(false) + + // THEN invalidate is called, b/c we were previously suppressing the pipeline from running + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + fun testNotCollapsingPanelAnymore_invalidationCalled() { + // GIVEN visual stability is being maintained b/c animation is playing + setPanelCollapsing(true) + + assertThat(notifStabilityManager.isPipelineRunAllowed()).isFalse() + + // WHEN the animation has stopped playing + setPanelCollapsing(false) + + // THEN invalidate is called, b/c we were previously suppressing the pipeline from running + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + @EnableFlags(Flags.FLAG_CHECK_LOCKSCREEN_GONE_TRANSITION) + @DisableSceneContainer + fun testNotLockscreenInGoneTransitionLegacy_invalidationCalled() { + // GIVEN visual stability is being maintained b/c animation is playing + whenever(keyguardStateController.isKeyguardFadingAway).thenReturn(true) + underTest.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged() + + assertThat(notifStabilityManager.isPipelineRunAllowed()).isFalse() + + // WHEN the animation has stopped playing + whenever(keyguardStateController.isKeyguardFadingAway).thenReturn(false) + underTest.mKeyguardFadeAwayAnimationCallback.onKeyguardFadingAwayChanged() + + // THEN invalidate is called, b/c we were previously suppressing the pipeline from running + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + @EnableFlags(Flags.FLAG_CHECK_LOCKSCREEN_GONE_TRANSITION) + @EnableSceneContainer + @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer + fun testNotLockscreenInGoneTransition_invalidationCalled() = + testScope.runTest { + // GIVEN visual stability is being maintained b/c animation is playing + kosmos.fakeKeyguardTransitionRepository.sendTransitionStep( + TransitionStep( + KeyguardState.LOCKSCREEN, + KeyguardState.GONE, + 1f, + TransitionState.RUNNING, + ), + /* validateStep = */ false, + ) + testScope.testScheduler.runCurrent() + assertThat(notifStabilityManager.isPipelineRunAllowed()).isFalse() + + // WHEN the animation has stopped playing + kosmos.fakeKeyguardTransitionRepository.sendTransitionStep( + TransitionStep( + KeyguardState.LOCKSCREEN, + KeyguardState.GONE, + 1f, + TransitionState.FINISHED, + ), + /* validateStep = */ false, + ) + testScope.testScheduler.runCurrent() + + // THEN invalidate is called, b/c we were previously suppressing the pipeline from + // running + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + fun testNeverSuppressPipelineRunFromPanelCollapse_noInvalidationCalled() { + // GIVEN animation is playing + setPanelCollapsing(true) + + // WHEN the animation has stopped playing + setPanelCollapsing(false) + + // THEN invalidate is not called, b/c nothing has been suppressed + verifyStabilityManagerWasInvalidated(never()) + } + + @Test + fun testNeverSuppressPipelineRunFromLaunchActivity_noInvalidationCalled() { + // GIVEN animation is playing + setActivityLaunching(true) + + // WHEN the animation has stopped playing + setActivityLaunching(false) + + // THEN invalidate is not called, b/c nothing has been suppressed + verifyStabilityManagerWasInvalidated(never()) + } + + @Test + fun testNotSuppressingEntryReorderingAnymoreWillInvalidate() = + testScope.runTest { + // GIVEN visual stability is being maintained b/c panel is expanded + setPulsing(false) + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setCommunalShowing(false) + + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isFalse() + // The pipeline still has to report back that entry reordering was suppressed + notifStabilityManager.onEntryReorderSuppressed() + + // WHEN the panel isn't expanded anymore + setPanelExpanded(false) + + // THEN invalidate is called because we were previously suppressing an entry reorder + verifyStabilityManagerWasInvalidated(times(1)) + } + + @Test + @BrokenWithSceneContainer(bugId = 377868472) // mReorderingAllowed is broken with SceneContainer + fun testCommunalShowingWillNotSuppressReordering() = + testScope.runTest { + // GIVEN panel is expanded, communal is showing, and QS is collapsed + setPulsing(false) + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setQsExpanded(false) + setCommunalShowing(true) + + // THEN Reordering should be allowed + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isTrue() + } + + @Test + fun testQsExpandedOverCommunalWillSuppressReordering() = + testScope.runTest { + // GIVEN panel is expanded and communal is showing, but QS is expanded + setPulsing(false) + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setQsExpanded(true) + setCommunalShowing(true) + + // THEN Reordering should not be allowed + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isFalse() + } + + @Test + fun testQueryingEntryReorderingButNotReportingReorderSuppressedDoesNotInvalidate() = + testScope.runTest { + // GIVEN visual stability is being maintained b/c panel is expanded + setPulsing(false) + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isFalse() + + // WHEN the panel isn't expanded anymore + setPanelExpanded(false) + + // THEN invalidate is not called because we were not told that an entry reorder was + // suppressed + verifyStabilityManagerWasInvalidated(never()) + } + + @Test + fun testHeadsUp_allowedToChangeGroupAndSection() = + testScope.runTest { + // GIVEN group + section changes disallowed + setFullyDozed(false) + setSleepy(false) + setPanelExpanded(true) + setPulsing(true) + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isFalse() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isFalse() + + // GIVEN mEntry is a HUN + headsUpRepository.setHeadsUpKeys(entry.key) + + // THEN group + section changes are allowed + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + + // BUT pruning the group for which this is the summary would still NOT be allowed. + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isFalse() + } + + @Test + fun everyChangeAllowed_onReorderingEnabled_legacy() = + testScope.runTest { + assumeFalse(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // THEN + assertThat(notifStabilityManager.isEveryChangeAllowed()).isTrue() + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isTrue() + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isTrue() + } + + @Test + fun everyChangeAllowed_noActiveHeadsUpGroup_onReorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - empty heads-up-group keys + underTest.setHeadsUpGroupKeys(setOf()) + + // THEN + assertThat(notifStabilityManager.isEveryChangeAllowed()).isTrue() + assertThat(notifStabilityManager.isGroupChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isGroupPruneAllowed(groupEntry)).isTrue() + assertThat(notifStabilityManager.isSectionChangeAllowed(entry)).isTrue() + assertThat(notifStabilityManager.isEntryReorderingAllowed(entry)).isTrue() + } + + @Test + fun everyChangeDisallowed_activeHeadsUpGroup_onReorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - there is a group heads-up. + underTest.setHeadsUpGroupKeys(setOf("heads_up_group_key")) + + // THEN + assertThat(notifStabilityManager.isEveryChangeAllowed()).isFalse() + } + + @Test + fun nonHeadsUpGroup_changesAllowed_onReorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - there is a group heads-up. + val headsUpGroupKey = "heads_up_group_key" + underTest.setHeadsUpGroupKeys(setOf(headsUpGroupKey)) + headsUpRepository.setHeadsUpKeys(headsUpGroupKey) + + // GIVEN - HUN Group Summary + val nonHeadsUpGroupSummary: NotificationEntry = mock() + whenever(nonHeadsUpGroupSummary.key).thenReturn("non_heads_up_group_key") + whenever(nonHeadsUpGroupSummary.isSummaryWithChildren).thenReturn(true) + val nonHeadsUpGroupEntry: GroupEntry = mock() + whenever(nonHeadsUpGroupEntry.summary).thenReturn(nonHeadsUpGroupSummary) + whenever(nonHeadsUpGroupEntry.representativeEntry).thenReturn(nonHeadsUpGroupSummary) + + // THEN + assertThat(notifStabilityManager.isGroupPruneAllowed(nonHeadsUpGroupEntry)).isTrue() + assertThat(notifStabilityManager.isEntryReorderingAllowed(nonHeadsUpGroupEntry)) + .isTrue() + } + + @Test + fun headsUpGroup_changesDisallowed_onReorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - there is a group heads-up. + val headsUpGroupKey = "heads_up_group_key" + underTest.setHeadsUpGroupKeys(setOf(headsUpGroupKey)) + headsUpRepository.setHeadsUpKeys(headsUpGroupKey) + + // GIVEN - HUN Group + val headsUpGroupSummary: NotificationEntry = mock() + whenever(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false) + whenever(headsUpGroupSummary.key).thenReturn(headsUpGroupKey) + whenever(headsUpGroupSummary.isSummaryWithChildren).thenReturn(true) + + val headsUpGroupEntry: GroupEntry = mock() + whenever(headsUpGroupEntry.summary).thenReturn(headsUpGroupSummary) + whenever(headsUpGroupEntry.representativeEntry).thenReturn(headsUpGroupSummary) + + whenever(headsUpGroupSummary.parent).thenReturn(headsUpGroupEntry) + + // GIVEN - HUN is in visible location + whenever(visibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)) + .thenReturn(true) + + // THEN + assertThat(notifStabilityManager.isGroupPruneAllowed(headsUpGroupEntry)).isFalse() + assertThat(notifStabilityManager.isEntryReorderingAllowed(headsUpGroupEntry)).isFalse() + } + + @Test + fun headsUpGroupSummaries_changesDisallowed_onReorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - there is a group heads-up. + val headsUpGroupKey = "heads_up_group_key" + underTest.setHeadsUpGroupKeys(setOf(headsUpGroupKey)) + headsUpRepository.setHeadsUpKeys(headsUpGroupKey) + + // GIVEN - HUN Group + val headsUpGroupSummary: NotificationEntry = mock() + whenever(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false) + whenever(headsUpGroupSummary.key).thenReturn(headsUpGroupKey) + whenever(headsUpGroupSummary.isSummaryWithChildren).thenReturn(true) + + val headsUpGroupEntry: GroupEntry = mock() + whenever(headsUpGroupEntry.summary).thenReturn(headsUpGroupSummary) + whenever(headsUpGroupEntry.representativeEntry).thenReturn(headsUpGroupSummary) + + whenever(headsUpGroupSummary.parent).thenReturn(headsUpGroupEntry) + + // GIVEN - HUN is in visible location + whenever(visibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)) + .thenReturn(true) + + // THEN + assertThat(notifStabilityManager.isGroupChangeAllowed(headsUpGroupSummary)).isFalse() + assertThat(notifStabilityManager.isEntryReorderingAllowed(headsUpGroupSummary)) + .isFalse() + assertThat(notifStabilityManager.isSectionChangeAllowed(headsUpGroupSummary)).isFalse() + } + + @Test + fun notificationInNonHUNGroup_changesAllowed_onReorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - there is a group heads-up. + val headsUpGroupKey = "heads_up_group_key" + underTest.setHeadsUpGroupKeys(setOf(headsUpGroupKey)) + headsUpRepository.setHeadsUpKeys(headsUpGroupKey) + + // GIVEN - non HUN parent Group Summary + val groupSummary: NotificationEntry = mock() + whenever(groupSummary.key).thenReturn("non_heads_up_group_key") + whenever(groupSummary.isSummaryWithChildren).thenReturn(true) + + val nonHeadsUpGroupEntry: GroupEntry = mock() + whenever(nonHeadsUpGroupEntry.summary).thenReturn(groupSummary) + whenever(nonHeadsUpGroupEntry.representativeEntry).thenReturn(groupSummary) + + // GIVEN - child entry in a non heads-up group. + val childEntry: NotificationEntry = mock() + whenever(childEntry.rowIsChildInGroup()).thenReturn(true) + whenever(childEntry.parent).thenReturn(nonHeadsUpGroupEntry) + whenever(childEntry.parent).thenReturn(nonHeadsUpGroupEntry) + + // THEN + assertThat(notifStabilityManager.isGroupChangeAllowed(childEntry)).isTrue() + assertThat(notifStabilityManager.isSectionChangeAllowed(childEntry)).isTrue() + assertThat(notifStabilityManager.isEntryReorderingAllowed(nonHeadsUpGroupEntry)) + .isTrue() + } + + @Test + fun notificationInHUNGroup_changesDisallowed_reorderingEnabled() = + testScope.runTest { + assumeTrue(StabilizeHeadsUpGroup.isEnabled) + // GIVEN - reordering is allowed. + setPulsing(false) + setPanelExpanded(false) + + // GIVEN - there is a group heads-up. + val headsUpGroupKey = "heads_up_group_key" + underTest.setHeadsUpGroupKeys(setOf(headsUpGroupKey)) + headsUpRepository.setHeadsUpKeys(headsUpGroupKey) + + // GIVEN - HUN Group Summary + val headsUpGroupSummary: NotificationEntry = mock() + whenever(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false) + whenever(headsUpGroupSummary.key).thenReturn(headsUpGroupKey) + whenever(headsUpGroupSummary.isSummaryWithChildren).thenReturn(true) + + val nonHeadsUpGroupEntry: GroupEntry = mock() + whenever(nonHeadsUpGroupEntry.summary).thenReturn(headsUpGroupSummary) + whenever(nonHeadsUpGroupEntry.representativeEntry).thenReturn(headsUpGroupSummary) + + // GIVEN - child entry in a non heads-up group. + val childEntry: NotificationEntry = + mock<NotificationEntry>().apply { whenever(key).thenReturn("child") } + whenever(childEntry.rowIsChildInGroup()).thenReturn(true) + whenever(childEntry.parent).thenReturn(nonHeadsUpGroupEntry) + + // GIVEN - HUN is in visible location + whenever(visibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)) + .thenReturn(true) + + // THEN + assertThat(notifStabilityManager.isGroupChangeAllowed(childEntry)).isFalse() + assertThat(notifStabilityManager.isSectionChangeAllowed(childEntry)).isFalse() + assertThat(notifStabilityManager.isEntryReorderingAllowed(childEntry)).isFalse() + } + + private fun verifyStabilityManagerWasInvalidated(mode: VerificationMode) { + verify(invalidateListener, mode).onPluggableInvalidated(eq(notifStabilityManager), any()) + } + + private fun setActivityLaunching(activityLaunching: Boolean) { + kosmos.shadeAnimationInteractor.setIsLaunchingActivity(activityLaunching) + testScope.testScheduler.runCurrent() + } + + private fun setPanelCollapsing(collapsing: Boolean) { + shadeRepository.setLegacyIsClosing(collapsing) + testScope.testScheduler.runCurrent() + } + + private fun setCommunalShowing(isShowing: Boolean) { + val showingFlow = + MutableStateFlow<ObservableTransitionState>( + ObservableTransitionState.Idle( + if (isShowing) CommunalScenes.Communal else CommunalScenes.Blank + ) + ) + kosmos.communalSceneInteractor.setTransitionState(showingFlow) + testScope.testScheduler.runCurrent() + } + + private fun setQsExpanded(isExpanded: Boolean) { + kosmos.shadeRepository.setQsExpansion(if (isExpanded) 1.0f else 0.0f) + testScope.testScheduler.runCurrent() + } + + private fun setPulsing(pulsing: Boolean) = statusBarStateListener.onPulsingChanged(pulsing) + + private fun setFullyDozed(fullyDozed: Boolean) { + val dozeAmount = if (fullyDozed) 1f else 0f + statusBarStateListener.onDozeAmountChanged(dozeAmount, dozeAmount) + } + + private fun setSleepy(sleepy: Boolean) { + if (sleepy) { + wakefulnessObserver.onFinishedGoingToSleep() + } else { + wakefulnessObserver.onStartedWakingUp() + } + } + + private suspend fun setPanelExpanded(expanded: Boolean) = + setPanelExpandedAndLockscreenShowing(expanded, /* lockscreenShowing= */ 0.0f) + + private suspend fun setLockscreenShowing(lockscreenShowing: Float) = + setPanelExpandedAndLockscreenShowing(/* panelExpanded= */ false, lockscreenShowing) + + private suspend fun setPanelExpandedAndLockscreenShowing( + panelExpanded: Boolean, + lockscreenShowing: Float, + ) { + if (SceneContainerFlag.isEnabled) { + statusBarStateListener.onExpandedChanged(panelExpanded) + kosmos.fakeKeyguardTransitionRepository.sendTransitionStep( + makeLockscreenTransitionStep(lockscreenShowing), + /* validateStep = */ false, + ) + } else { + statusBarStateListener.onExpandedChanged(panelExpanded || lockscreenShowing > 0.0f) + } + } + + private fun makeLockscreenTransitionStep(value: Float): TransitionStep { + return when (value) { + 0.0f -> TransitionStep(KeyguardState.GONE) + 1.0f -> TransitionStep(KeyguardState.LOCKSCREEN) + else -> + TransitionStep( + KeyguardState.GONE, + KeyguardState.LOCKSCREEN, + value, + TransitionState.RUNNING, + ) + } + } +} + +private fun FakeHeadsUpNotificationRepository.setHeadsUpKeys(vararg keys: String) { + setNotifications(keys.map { FakeHeadsUpRowRepository(key = it) }) +} diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpAnimatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpAnimatorTest.kt new file mode 100644 index 000000000000..206eb89db94f --- /dev/null +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/headsup/HeadsUpAnimatorTest.kt @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.headsup + +import android.platform.test.annotations.EnableFlags +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.res.R +import com.google.common.truth.Truth.assertThat +import kotlin.test.Test +import org.junit.Before +import org.junit.runner.RunWith + +@SmallTest +@RunWith(AndroidJUnit4::class) +@EnableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) +class HeadsUpAnimatorTest : SysuiTestCase() { + @Before + fun setUp() { + context.getOrCreateTestableResources().apply { + this.addOverride(R.dimen.heads_up_appear_y_above_screen, TEST_Y_ABOVE_SCREEN) + } + } + + @Test + fun getHeadsUpYTranslation_fromBottomTrue_usesBottomAndYAbove() { + val underTest = HeadsUpAnimator(context) + underTest.stackTopMargin = 30 + underTest.headsUpAppearHeightBottom = 300 + + val yTranslation = underTest.getHeadsUpYTranslation(isHeadsUpFromBottom = true) + + assertThat(yTranslation).isEqualTo(TEST_Y_ABOVE_SCREEN + 300) + } + + @Test + fun getHeadsUpYTranslation_fromBottomFalse_usesTopMarginAndYAbove() { + val underTest = HeadsUpAnimator(context) + underTest.stackTopMargin = 30 + underTest.headsUpAppearHeightBottom = 300 + + val yTranslation = underTest.getHeadsUpYTranslation(isHeadsUpFromBottom = false) + + assertThat(yTranslation).isEqualTo(-30 - TEST_Y_ABOVE_SCREEN) + } + + @Test + fun getHeadsUpYTranslation_resourcesUpdated() { + val underTest = HeadsUpAnimator(context) + underTest.stackTopMargin = 30 + underTest.headsUpAppearHeightBottom = 300 + + val yTranslation = underTest.getHeadsUpYTranslation(isHeadsUpFromBottom = true) + + assertThat(yTranslation).isEqualTo(TEST_Y_ABOVE_SCREEN + 300) + + // WHEN the resource is updated + val newYAbove = 600 + context.getOrCreateTestableResources().apply { + this.addOverride(R.dimen.heads_up_appear_y_above_screen, newYAbove) + } + underTest.updateResources(context) + + // THEN HeadsUpAnimator knows about it + assertThat(underTest.getHeadsUpYTranslation(isHeadsUpFromBottom = true)) + .isEqualTo(newYAbove + 300) + } + + companion object { + private const val TEST_Y_ABOVE_SCREEN = 50 + } +} diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt index 25ae13fefdd7..f060caea4f24 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowControllerTest.kt @@ -21,6 +21,7 @@ import android.app.Notification import android.net.Uri import android.os.UserHandle import android.os.UserHandle.USER_ALL +import android.service.notification.StatusBarNotification import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -36,6 +37,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.statusbar.SbnBuilder import com.android.systemui.statusbar.SmartReplyController import com.android.systemui.statusbar.notification.ColorUpdateLogger +import com.android.systemui.statusbar.notification.collection.EntryAdapter import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider @@ -229,6 +231,10 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() { @Test fun registerSettingsListener_forBubbles() { controller.init(mock(NotificationEntry::class.java)) + val entryAdapter = mock(EntryAdapter::class.java) + whenever(entryAdapter.sbn).thenReturn(mock(StatusBarNotification::class.java)) + whenever(view.entryAdapter).thenReturn(entryAdapter) + val viewStateObserver = withArgCaptor { verify(view).addOnAttachStateChangeListener(capture()) } @@ -239,6 +245,9 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() { @Test fun unregisterSettingsListener_forBubbles() { controller.init(mock(NotificationEntry::class.java)) + val entryAdapter = mock(EntryAdapter::class.java) + whenever(entryAdapter.sbn).thenReturn(mock(StatusBarNotification::class.java)) + whenever(view.entryAdapter).thenReturn(entryAdapter) val viewStateObserver = withArgCaptor { verify(view).addOnAttachStateChangeListener(capture()) } @@ -255,6 +264,7 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() { @Test fun settingsListener_invalidUserId() { + whenever(view.entryAdapter).thenReturn(mock(EntryAdapter::class.java)) controller.mSettingsListener.onSettingChanged(BUBBLES_SETTING_URI, -1000, "1") controller.mSettingsListener.onSettingChanged(BUBBLES_SETTING_URI, -1000, null) @@ -265,6 +275,12 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() { fun settingsListener_validUserId() { val childView: NotificationContentView = mock() whenever(view.privateLayout).thenReturn(childView) + val entryAdapter = mock(EntryAdapter::class.java) + val sbn = + SbnBuilder().setNotification(Notification.Builder(mContext).build()) + .setUser(UserHandle.of(view.entry.sbn.userId)).build() + whenever(entryAdapter.sbn).thenReturn(sbn) + whenever(view.entryAdapter).thenReturn(entryAdapter) controller.mSettingsListener.onSettingChanged( BUBBLES_SETTING_URI, @@ -293,6 +309,9 @@ class ExpandableNotificationRowControllerTest : SysuiTestCase() { .thenReturn( NotificationEntryBuilder().setSbn(sbn).setUser(UserHandle.of(USER_ALL)).build() ) + val entryAdapter = mock(EntryAdapter::class.java) + whenever(entryAdapter.sbn).thenReturn(sbn) + whenever(view.entryAdapter).thenReturn(entryAdapter) controller.mSettingsListener.onSettingChanged(BUBBLES_SETTING_URI, 9, "1") verify(childView).setBubblesEnabledForUser(true) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragControllerTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragControllerTest.java index 979a1d0801f0..fd49f60e7ae1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragControllerTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragControllerTest.java @@ -79,6 +79,7 @@ public class ExpandableNotificationRowDragControllerTest extends SysuiTestCase { mRow = spy(mNotificationTestHelper.createRow()); Notification notification = mRow.getEntry().getSbn().getNotification(); notification.contentIntent = mock(PendingIntent.class); + when(notification.contentIntent.isActivity()).thenReturn(true); doReturn(true).when(mRow).startDragAndDrop(any(), any(), any(), anyInt()); mGroupRow = mNotificationTestHelper.createGroup(4); when(mMenuRow.getLongpressMenuItem(any(Context.class))).thenReturn(mMenuItem); diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java index 92ceb604d2e0..c376fad1503f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java @@ -70,6 +70,8 @@ import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.SmartReplyController; import com.android.systemui.statusbar.notification.ColorUpdateLogger; import com.android.systemui.statusbar.notification.ConversationNotificationProcessor; +import com.android.systemui.statusbar.notification.collection.GroupEntry; +import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection; @@ -106,6 +108,7 @@ import kotlinx.coroutines.test.TestScope; import org.mockito.ArgumentCaptor; +import java.util.List; import java.util.Objects; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; @@ -338,6 +341,46 @@ public class NotificationTestHelper { } /** + * Returns an {@link GroupEntry} group with the given number of child + * notifications. + */ + public GroupEntry createGroupEntry(int numChildren, + @Nullable List<NotificationEntry> additionalChildren) { + Notification summary = new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setGroupSummary(true) + .setGroup(GROUP_KEY) + .build(); + + NotificationEntry summaryEntry = new NotificationEntryBuilder() + .setPkg(PKG) + .setOpPkg(PKG) + .setId(mId++) + .setUid(UID) + .setInitialPid(2000) + .setNotification(summary) + .setParent(GroupEntry.ROOT_ENTRY) + .build(); + GroupEntryBuilder groupEntry = new GroupEntryBuilder() + .setSummary(summaryEntry); + + for (int i = 0; i < numChildren; i++) { + NotificationEntry child = new NotificationEntryBuilder() + .setParent(GroupEntry.ROOT_ENTRY) + .setNotification(new Notification.Builder(mContext, "") + .setSmallIcon(R.drawable.ic_person) + .setGroup(GROUP_KEY) + .build()) + .build(); + groupEntry.addChild(child); + } + for (NotificationEntry entry : additionalChildren) { + groupEntry.addChild(entry); + } + return groupEntry.build(); + } + + /** * Returns an {@link ExpandableNotificationRow} group with the given number of child * notifications. */ @@ -411,6 +454,23 @@ public class NotificationTestHelper { } /** + * Returns an {@link NotificationEntry} that should be shown as a bubble and is part + * of a group of notifications. + */ + public NotificationEntry createBubbleEntryInGroup() throws Exception { + Notification n = createNotification(false /* isGroupSummary */, + GROUP_KEY /* groupKey */, + makeBubbleMetadata(null /* deleteIntent */, false /* autoExpand */)); + n.flags |= FLAG_BUBBLE; + NotificationEntry entry = generateEntry(n, PKG, UID, USER_HANDLE, + mDefaultInflationFlags, IMPORTANCE_HIGH); + modifyRanking(entry) + .setCanBubble(true) + .build(); + return entry; + } + + /** * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble and is part * of a group of notifications. */ @@ -573,6 +633,41 @@ public class NotificationTestHelper { return mKeyguardBypassController; } + private NotificationEntry generateEntry( + Notification notification, + String pkg, + int uid, + UserHandle userHandle, + @InflationFlag int extraInflationFlags, + int importance) + throws Exception { + final NotificationChannel channel = + new NotificationChannel( + notification.getChannelId(), + notification.getChannelId(), + importance); + channel.setBlockable(true); + + NotificationEntry entry = new NotificationEntryBuilder() + .setPkg(pkg) + .setOpPkg(pkg) + .setId(mId++) + .setUid(uid) + .setInitialPid(2000) + .setNotification(notification) + .setUser(userHandle) + .setPostTime(System.currentTimeMillis()) + .setChannel(channel) + .updateRanking(rankingBuilder -> rankingBuilder.setIsConversation( + notification.isStyle(Notification.MessagingStyle.class) + )) + .build(); + + + return entry; + } + + private ExpandableNotificationRow generateRow( Notification notification, String pkg, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt index 92b8c3aa84d6..13da04e8c7cc 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/AmbientStateTest.kt @@ -24,6 +24,7 @@ import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.andSceneContainer import com.android.systemui.shade.transition.LargeScreenShadeInterpolator import com.android.systemui.statusbar.StatusBarState +import com.android.systemui.statusbar.notification.data.repository.HeadsUpRepository import com.android.systemui.statusbar.notification.headsup.AvalancheController import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.util.mockito.mock @@ -47,6 +48,7 @@ class AmbientStateTest(flags: FlagsParameterization) : SysuiTestCase() { private val statusBarKeyguardViewManager = mock<StatusBarKeyguardViewManager>() private val largeScreenShadeInterpolator = mock<LargeScreenShadeInterpolator>() private val avalancheController = mock<AvalancheController>() + private val headsupRepository = mock<HeadsUpRepository>() private lateinit var sut: AmbientState @@ -72,6 +74,7 @@ class AmbientStateTest(flags: FlagsParameterization) : SysuiTestCase() { bypassController, statusBarKeyguardViewManager, largeScreenShadeInterpolator, + headsupRepository, avalancheController, ) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt index 4b8a0c21f03d..f7bbf989ad3f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculatorTest.kt @@ -29,6 +29,7 @@ import com.android.systemui.res.R import com.android.systemui.statusbar.LockscreenShadeTransitionController import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController +import com.android.systemui.statusbar.notification.collection.EntryAdapter import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiForceExpanded @@ -436,6 +437,9 @@ class NotificationStackSizeCalculatorTest : SysuiTestCase() { val row = mock(ExpandableNotificationRow::class.java) val entry = mock(NotificationEntry::class.java) whenever(entry.isStickyAndNotDemoted).thenReturn(isSticky) + val entryAdapter = mock(EntryAdapter::class.java) + whenever(entryAdapter.canPeek()).thenReturn(isSticky) + whenever(row.entryAdapter).thenReturn(entryAdapter) val sbn = mock(StatusBarNotification::class.java) whenever(entry.sbn).thenReturn(sbn) whenever(row.entry).thenReturn(entry) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt index 33211d40e5bd..954515015fd9 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt @@ -22,10 +22,13 @@ import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.notification.RoundableState import com.android.systemui.statusbar.notification.collection.EntryAdapter import com.android.systemui.statusbar.notification.collection.NotificationEntry +import com.android.systemui.statusbar.notification.data.repository.HeadsUpRepository import com.android.systemui.statusbar.notification.emptyshade.ui.view.EmptyShadeView import com.android.systemui.statusbar.notification.footer.ui.view.FooterView import com.android.systemui.statusbar.notification.footer.ui.view.FooterView.FooterViewState import com.android.systemui.statusbar.notification.headsup.AvalancheController +import com.android.systemui.statusbar.notification.headsup.HeadsUpAnimator +import com.android.systemui.statusbar.notification.headsup.NotificationsHunSharedAnimationValues import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.ExpandableView import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager @@ -54,13 +57,15 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() { private val avalancheController = mock<AvalancheController>() private val hostView = FrameLayout(context) - private val stackScrollAlgorithm = StackScrollAlgorithm(context, hostView) + private lateinit var headsUpAnimator: HeadsUpAnimator + private lateinit var stackScrollAlgorithm: StackScrollAlgorithm private val notificationRow = mock<ExpandableNotificationRow>() private val notificationEntry = mock<NotificationEntry>() private val notificationEntryAdapter = mock<EntryAdapter>() private val dumpManager = mock<DumpManager>() private val mStatusBarKeyguardViewManager = mock<StatusBarKeyguardViewManager>() private val notificationShelf = mock<NotificationShelf>() + private val headsUpRepository = mock<HeadsUpRepository>() private val emptyShadeView = EmptyShadeView(context, /* attrs= */ null).apply { layout(/* l= */ 0, /* t= */ 0, /* r= */ 100, /* b= */ 100) @@ -74,6 +79,7 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() { /* bypassController */ { false }, mStatusBarKeyguardViewManager, largeScreenShadeInterpolator, + headsUpRepository, avalancheController, ) @@ -98,7 +104,10 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() { @JvmStatic @Parameters(name = "{0}") fun getParams(): List<FlagsParameterization> { - return FlagsParameterization.allCombinationsOf().andSceneContainer() + return FlagsParameterization.allCombinationsOf( + NotificationsHunSharedAnimationValues.FLAG_NAME + ) + .andSceneContainer() } } @@ -120,6 +129,15 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() { ambientState.isSmallScreen = true hostView.addView(notificationRow) + + if (NotificationsHunSharedAnimationValues.isEnabled) { + headsUpAnimator = HeadsUpAnimator(context) + } + stackScrollAlgorithm = StackScrollAlgorithm( + context, + hostView, + if (::headsUpAnimator.isInitialized) headsUpAnimator else null, + ) } private fun isTv(): Boolean { @@ -400,7 +418,11 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() { ambientState.setLayoutMinHeight(2500) // Mock the height of shade ambientState.stackY = 2500f // Scroll over the max translation stackScrollAlgorithm.setIsExpanded(true) // Mark the shade open - stackScrollAlgorithm.setHeadsUpAppearHeightBottom(bottomOfScreen.toInt()) + if (NotificationsHunSharedAnimationValues.isEnabled) { + headsUpAnimator.headsUpAppearHeightBottom = bottomOfScreen.toInt() + } else { + stackScrollAlgorithm.setHeadsUpAppearHeightBottom(bottomOfScreen.toInt()) + } whenever(notificationRow.mustStayOnScreen()).thenReturn(true) whenever(notificationRow.isHeadsUp).thenReturn(true) whenever(notificationRow.isAboveShelf).thenReturn(true) @@ -416,6 +438,9 @@ class StackScrollAlgorithmTest(flags: FlagsParameterization) : SysuiTestCase() { val topMargin = 100f ambientState.maxHeadsUpTranslation = 2000f ambientState.stackTopMargin = topMargin.toInt() + if (NotificationsHunSharedAnimationValues.isEnabled) { + headsUpAnimator.stackTopMargin = topMargin.toInt() + } whenever(notificationRow.intrinsicHeight).thenReturn(100) whenever(notificationRow.isHeadsUpAnimatingAway).thenReturn(true) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt index e7be20e7c3cb..4a761917b693 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt @@ -16,12 +16,16 @@ package com.android.systemui.statusbar.notification.stack +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags import android.testing.TestableLooper.RunWithLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.animation.AnimatorTestRule import com.android.systemui.res.R +import com.android.systemui.statusbar.notification.headsup.HeadsUpAnimator +import com.android.systemui.statusbar.notification.headsup.NotificationsHunSharedAnimationValues import com.android.systemui.statusbar.notification.row.ExpandableView import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.AnimationEvent import com.android.systemui.statusbar.notification.stack.StackStateAnimator.ANIMATION_DURATION_HEADS_UP_APPEAR @@ -49,10 +53,10 @@ private const val HEADS_UP_ABOVE_SCREEN = 80 @RunWith(AndroidJUnit4::class) @RunWithLooper class StackStateAnimatorTest : SysuiTestCase() { - @get:Rule val animatorTestRule = AnimatorTestRule(this) private lateinit var stackStateAnimator: StackStateAnimator + private lateinit var headsUpAnimator: HeadsUpAnimator private val stackScroller: NotificationStackScrollLayout = mock() private val view: ExpandableView = mock() private val viewState: ExpandableViewState = @@ -69,11 +73,20 @@ class StackStateAnimatorTest : SysuiTestCase() { whenever(stackScroller.context).thenReturn(context) whenever(view.viewState).thenReturn(viewState) - stackStateAnimator = StackStateAnimator(mContext, stackScroller) + + if (NotificationsHunSharedAnimationValues.isEnabled) { + headsUpAnimator = HeadsUpAnimator(context) + } + stackStateAnimator = StackStateAnimator( + mContext, + stackScroller, + if (::headsUpAnimator.isInitialized) headsUpAnimator else null, + ) } @Test - fun startAnimationForEvents_headsUpFromTop_startsHeadsUpAppearAnim() { + @DisableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) + fun startAnimationForEvents_headsUpFromTop_startsHeadsUpAppearAnim_flagOff() { val topMargin = 50f val expectedStartY = -topMargin - stackStateAnimator.mHeadsUpAppearStartAboveScreen val event = AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_APPEAR) @@ -94,7 +107,30 @@ class StackStateAnimatorTest : SysuiTestCase() { } @Test - fun startAnimationForEvents_headsUpFromBottom_startsHeadsUpAppearAnim() { + @EnableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) + fun startAnimationForEvents_headsUpFromTop_startsHeadsUpAppearAnim_flagOn() { + val topMargin = 50f + val expectedStartY = -topMargin - HEADS_UP_ABOVE_SCREEN + val event = AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_APPEAR) + headsUpAnimator.stackTopMargin = topMargin.toInt() + + stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0) + + verify(view).setFinalActualHeight(VIEW_HEIGHT) + verify(view, description("should animate from the top")).translationY = expectedStartY + verify(view) + .performAddAnimation( + /* delay= */ 0L, + /* duration= */ ANIMATION_DURATION_HEADS_UP_APPEAR.toLong(), + /* isHeadsUpAppear= */ true, + /* isHeadsUpCycling= */ false, + /* onEndRunnable= */ null, + ) + } + + @Test + @DisableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) + fun startAnimationForEvents_headsUpFromBottom_startsHeadsUpAppearAnim_flagOff() { val screenHeight = 2000f val expectedStartY = screenHeight + stackStateAnimator.mHeadsUpAppearStartAboveScreen val event = @@ -118,7 +154,63 @@ class StackStateAnimatorTest : SysuiTestCase() { } @Test - fun startAnimationForEvents_startsHeadsUpDisappearAnim() { + @EnableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) + fun startAnimationForEvents_headsUpFromBottom_startsHeadsUpAppearAnim_flagOn() { + val screenHeight = 2000f + val expectedStartY = screenHeight + HEADS_UP_ABOVE_SCREEN + val event = + AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_APPEAR).apply { + headsUpFromBottom = true + } + headsUpAnimator.headsUpAppearHeightBottom = screenHeight.toInt() + + stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0) + + verify(view).setFinalActualHeight(VIEW_HEIGHT) + verify(view, description("should animate from the bottom")).translationY = expectedStartY + verify(view) + .performAddAnimation( + /* delay= */ 0L, + /* duration= */ ANIMATION_DURATION_HEADS_UP_APPEAR.toLong(), + /* isHeadsUpAppear= */ true, + /* isHeadsUpCycling= */ false, + /* onEndRunnable= */ null, + ) + } + + @Test + @DisableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) + fun startAnimationForEvents_startsHeadsUpDisappearAnim_flagOff() { + val disappearDuration = ANIMATION_DURATION_HEADS_UP_DISAPPEAR.toLong() + val event = AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR) + clearInvocations(view) + stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0) + + verify(view) + .performRemoveAnimation( + /* duration= */ eq(disappearDuration), + /* delay= */ eq(0L), + /* translationDirection= */ eq(0f), + /* isHeadsUpAnimation= */ eq(true), + /* isHeadsUpCycling= */ eq(false), + /* onStartedRunnable= */ any(), + /* onFinishedRunnable= */ runnableCaptor.capture(), + /* animationListener= */ any(), + /* clipSide= */ eq(ExpandableView.ClipSide.BOTTOM), + ) + + animatorTestRule.advanceTimeBy(disappearDuration) // move to the end of SSA animations + runnableCaptor.value.run() // execute the end runnable + + verify(view, description("should be translated to the heads up appear start")) + .translationY = -stackStateAnimator.mHeadsUpAppearStartAboveScreen + verify(view, description("should be called at the end of the disappear animation")) + .removeFromTransientContainer() + } + + @Test + @EnableFlags(NotificationsHunSharedAnimationValues.FLAG_NAME) + fun startAnimationForEvents_startsHeadsUpDisappearAnim_flagOn() { val disappearDuration = ANIMATION_DURATION_HEADS_UP_DISAPPEAR.toLong() val event = AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR) clearInvocations(view) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt index cef0824e16d2..1797c4ce6124 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt @@ -71,7 +71,6 @@ class LocationBasedMobileIconViewModelTest : SysuiTestCase() { private val connectivityRepository = FakeConnectivityRepository() private val flags = FakeFeatureFlagsClassic().also { - it.set(Flags.NEW_NETWORK_SLICE_UI, false) it.set(Flags.FILTER_PROVISIONING_NETWORK_SUBSCRIPTIONS, true) } @@ -133,7 +132,7 @@ class LocationBasedMobileIconViewModelTest : SysuiTestCase() { iconsInteractor.isForceHidden, repository, context, - MobileIconCarrierIdOverridesFake() + MobileIconCarrierIdOverridesFake(), ) commonImpl = @@ -142,7 +141,6 @@ class LocationBasedMobileIconViewModelTest : SysuiTestCase() { interactor, airplaneModeInteractor, constants, - flags, testScope.backgroundScope, ) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt index 46777fa68486..3d37914b1a7d 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt @@ -21,8 +21,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.settingslib.mobile.TelephonyIcons import com.android.systemui.SysuiTestCase -import com.android.systemui.flags.FakeFeatureFlagsClassic -import com.android.systemui.flags.Flags import com.android.systemui.statusbar.phone.StatusBarLocation import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor @@ -60,7 +58,6 @@ class MobileIconsViewModelTest : SysuiTestCase() { private lateinit var underTest: MobileIconsViewModel private val interactor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock()) - private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } private lateinit var airplaneModeInteractor: AirplaneModeInteractor @Mock private lateinit var constants: ConnectivityConstants @@ -88,7 +85,6 @@ class MobileIconsViewModelTest : SysuiTestCase() { interactor, airplaneModeInteractor, constants, - flags, testScope.backgroundScope, ) @@ -108,7 +104,7 @@ class MobileIconsViewModelTest : SysuiTestCase() { isOpportunistic = false, carrierName = "Carrier 1", profileClass = PROFILE_CLASS_UNSET, - ), + ) ) assertThat(latest).isEqualTo(listOf(1)) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/StackedMobileIconViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/StackedMobileIconViewModelTest.kt index 20bdebd069f7..d7bcf88f6941 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/StackedMobileIconViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/StackedMobileIconViewModelTest.kt @@ -22,8 +22,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.Icon -import com.android.systemui.flags.Flags -import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.kosmos.runTest @@ -53,7 +51,6 @@ class StackedMobileIconViewModelTest : SysuiTestCase() { @Before fun setUp() { - kosmos.fakeFeatureFlagsClassic.set(Flags.NEW_NETWORK_SLICE_UI, false) kosmos.underTest.activateIn(testScope) } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt deleted file mode 100644 index 7549a7fa0499..000000000000 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/ClockTest.kt +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.statusbar.policy - -import android.testing.TestableLooper -import android.view.View.MeasureSpec.UNSPECIFIED -import android.view.View.MeasureSpec.makeMeasureSpec -import android.view.ViewGroup.LayoutParams.WRAP_CONTENT -import android.widget.LinearLayout -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.filters.SmallTest -import com.android.systemui.SysuiTestCase -import org.junit.Before -import org.junit.runner.RunWith - -import com.google.common.truth.Truth.assertThat -import org.junit.Test - -@SmallTest -@RunWith(AndroidJUnit4::class) -@TestableLooper.RunWithLooper -class ClockTest : SysuiTestCase() { - private lateinit var clockView: Clock - - @Before - fun setUp() { - allowTestableLooperAsMainThread() - TestableLooper.get(this).runWithLooper { - val container = LinearLayout(context) - val lp = LinearLayout.LayoutParams(1000, WRAP_CONTENT) - container.layoutParams = lp - clockView = Clock(context, null) - container.addView(clockView) - measureClock() - } - } - - @Test - fun testWidthDoesNotDecrease_sameCharLength() { - // GIVEN time is narrow - clockView.text = ONE_3 - measureClock() - val width1 = clockView.measuredWidth - - // WHEN the text changes to be wider characters - clockView.text = ZERO_3 - measureClock() - val width2 = clockView.measuredWidth - - // THEN the width should be wider (or equals when using monospace font) - assertThat(width2).isAtLeast(width1) - } - - @Test - fun testWidthDoesNotDecrease_narrowerFont_sameNumberOfChars() { - // GIVEN time is wide - clockView.text = ZERO_3 - measureClock() - val width1 = clockView.measuredWidth - - // WHEN the text changes to a narrower font - clockView.text = ONE_3 - measureClock() - val width2 = clockView.measuredWidth - - // THEN the width should not have decreased, and they should in fact be the same - assertThat(width2).isEqualTo(width1) - } - - @Test - fun testWidthIncreases_whenCharsChanges() { - // GIVEN wide 3-char text - clockView.text = ZERO_3 - measureClock() - val width1 = clockView.measuredWidth - - // WHEN text changes to 4-char wide text - clockView.text = ZERO_4 - measureClock() - val width2 = clockView.measuredWidth - - // THEN the text field is wider - assertThat(width2).isGreaterThan(width1) - } - - @Test - fun testWidthDecreases_whenCharsChange_longToShort() { - // GIVEN wide 4-char text - clockView.text = ZERO_4 - measureClock() - val width1 = clockView.measuredWidth - - // WHEN number of characters changes to a narrow 3-char text - clockView.text = ONE_3 - measureClock() - val width2 = clockView.measuredWidth - - // THEN the width can shrink, because number of chars changed - assertThat(width2).isLessThan(width1) - } - - private fun measureClock() { - clockView.measure( - makeMeasureSpec(0, UNSPECIFIED), - makeMeasureSpec(0, UNSPECIFIED) - ) - } -} - -/** - * In a non-monospace font, it is expected that "0:00" is wider than "1:11" - */ -private const val ZERO_3 = "0:00" -private const val ZERO_4 = "00:00" -private const val ONE_3 = "1:11" -private const val ONE_4 = "11:11" diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt index d0cabec8332a..a303da0dae1a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorTest.kt @@ -17,16 +17,17 @@ package com.android.systemui.volume.dialog.domain.interactor import android.app.ActivityManager -import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.accessibility.data.repository.accessibilityRepository import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.fakeVolumeDialogController import com.android.systemui.testKosmos import com.android.systemui.volume.Events +import com.android.systemui.volume.dialog.shared.model.VolumeDialogSafetyWarningModel import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel import com.google.common.truth.Truth.assertThat import kotlin.time.Duration.Companion.days @@ -34,7 +35,6 @@ import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.test.advanceTimeBy import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest -import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -42,17 +42,18 @@ private val dialogTimeoutDuration = 3.seconds @SmallTest @RunWith(AndroidJUnit4::class) -@TestableLooper.RunWithLooper +@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class) class VolumeDialogVisibilityInteractorTest : SysuiTestCase() { - private val kosmos: Kosmos = testKosmos() - - private lateinit var underTest: VolumeDialogVisibilityInteractor + private val kosmos: Kosmos = + testKosmos().apply { + accessibilityRepository.setRecommendedTimeout(dialogTimeoutDuration) + volumeDialogStateInteractor.setHovering(false) + volumeDialogStateInteractor.setSafetyWarning(VolumeDialogSafetyWarningModel.Invisible) + } - @Before - fun setUp() { - underTest = kosmos.volumeDialogVisibilityInteractor - } + private val underTest: VolumeDialogVisibilityInteractor = + kosmos.volumeDialogVisibilityInteractor @Test fun testShowRequest_visible() = @@ -92,6 +93,7 @@ class VolumeDialogVisibilityInteractorTest : SysuiTestCase() { runCurrent() fakeVolumeDialogController.onDismissRequested(Events.DISMISS_REASON_SCREEN_OFF) + runCurrent() assertThat(visibilityModel!!) .isEqualTo( @@ -105,7 +107,6 @@ class VolumeDialogVisibilityInteractorTest : SysuiTestCase() { with(kosmos) { testScope.runTest { runCurrent() - underTest.resetDismissTimeout() val visibilityModel by collectLastValue(underTest.dialogVisibility) fakeVolumeDialogController.onShowRequested( Events.SHOW_REASON_VOLUME_CHANGED, @@ -126,7 +127,6 @@ class VolumeDialogVisibilityInteractorTest : SysuiTestCase() { with(kosmos) { testScope.runTest { runCurrent() - underTest.resetDismissTimeout() val visibilityModel by collectLastValue(underTest.dialogVisibility) fakeVolumeDialogController.onShowRequested( Events.SHOW_REASON_VOLUME_CHANGED, diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt index 4ed0d6ed4657..14b61e197fbf 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/sliders/domain/interactor/VolumeDialogSliderInputEventsInteractorTest.kt @@ -17,10 +17,10 @@ package com.android.systemui.volume.dialog.sliders.domain.interactor import android.app.ActivityManager -import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.accessibility.data.repository.accessibilityRepository import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.fakeVolumeDialogController @@ -35,24 +35,19 @@ import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.test.advanceTimeBy import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest -import org.junit.Before import org.junit.runner.RunWith private val volumeDialogTimeout = 3.seconds @SmallTest @RunWith(AndroidJUnit4::class) -@TestableLooper.RunWithLooper class VolumeDialogSliderInputEventsInteractorTest : SysuiTestCase() { - private val kosmos = testKosmos() + private val kosmos = + testKosmos().apply { accessibilityRepository.setRecommendedTimeout(volumeDialogTimeout) } - private lateinit var underTest: VolumeDialogSliderInputEventsInteractor - - @Before - fun setup() { - underTest = kosmos.volumeDialogSliderInputEventsInteractor - } + private val underTest: VolumeDialogSliderInputEventsInteractor = + kosmos.volumeDialogSliderInputEventsInteractor @Test fun inputEvents_resetDialogVisibilityTimeout() = diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java index b2083c2921c9..d7b4cba10177 100644 --- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java +++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java @@ -85,6 +85,10 @@ public interface BcSmartspaceDataPlugin extends Plugin { throw new UnsupportedOperationException("Not implemented by " + getClass()); } + default SmartspaceView getLargeClockView(ViewGroup parent) { + throw new UnsupportedOperationException("Not implemented by " + getClass()); + } + /** * As the smartspace view becomes available, allow listeners to receive an event. */ diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt index 3ed321e48cd3..02a3902a042c 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/clocks/ClockLogger.kt @@ -16,7 +16,9 @@ package com.android.systemui.plugins.clocks +import android.graphics.Rect import android.view.View +import android.view.View.MeasureSpec import com.android.systemui.log.core.LogLevel import com.android.systemui.log.core.LogcatOnlyMessageBuffer import com.android.systemui.log.core.Logger @@ -46,12 +48,21 @@ class ClockLogger(private val view: View?, buffer: MessageBuffer, tag: String) : } } - fun onMeasure() { - d("onMeasure()") + fun onMeasure(widthSpec: Int, heightSpec: Int) { + d({ "onMeasure(${getSpecText(int1)}, ${getSpecText(int2)})" }) { + int1 = widthSpec + int2 = heightSpec + } } - fun onLayout() { - d("onLayout()") + fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + d({ "onLayout($bool1, ${Rect(int1, int2, long1.toInt(), long2.toInt())})" }) { + bool1 = changed + int1 = left + int2 = top + long1 = right.toLong() + long2 = bottom.toLong() + } } fun onDraw() { @@ -90,8 +101,8 @@ class ClockLogger(private val view: View?, buffer: MessageBuffer, tag: String) : } } - fun addView(child: View) { - d({ "addView($str1 @$int1)" }) { + fun onViewAdded(child: View) { + d({ "onViewAdded($str1 @$int1)" }) { str1 = child::class.simpleName!! int1 = child.id } @@ -133,6 +144,20 @@ class ClockLogger(private val view: View?, buffer: MessageBuffer, tag: String) : } @JvmStatic + fun getSpecText(spec: Int): String { + val size = MeasureSpec.getSize(spec) + val mode = MeasureSpec.getMode(spec) + val modeText = + when (mode) { + MeasureSpec.EXACTLY -> "EXACTLY" + MeasureSpec.AT_MOST -> "AT MOST" + MeasureSpec.UNSPECIFIED -> "UNSPECIFIED" + else -> "$mode" + } + return "($size, $modeText)" + } + + @JvmStatic fun escapeTime(timeStr: String?): String? { return timeStr?.replace("\n", "\\n") } diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java index 56176cfc0f91..d197cdb792e4 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java @@ -42,7 +42,7 @@ import java.util.function.Supplier; @DependsOn(target = Icon.class) @DependsOn(target = State.class) public interface QSTile { - int VERSION = 4; + int VERSION = 5; String getTileSpec(); @@ -78,6 +78,7 @@ public interface QSTile { void longClick(@Nullable Expandable expandable); void userSwitch(int currentUser); + int getCurrentTileUser(); /** * @deprecated not needed as {@link com.android.internal.logging.UiEvent} will use @@ -150,6 +151,8 @@ public interface QSTile { return null; } + boolean isDestroyed(); + @ProvidesInterface(version = Callback.VERSION) interface Callback { static final int VERSION = 2; diff --git a/packages/SystemUI/pods/Android.bp b/packages/SystemUI/pods/Android.bp index 588a074ef80c..fba89621cdd0 100644 --- a/packages/SystemUI/pods/Android.bp +++ b/packages/SystemUI/pods/Android.bp @@ -26,7 +26,12 @@ java_defaults { libs: [ "jsr330", ], + lint: { + extra_check_modules: ["SystemUILintChecker"], + warning_checks: ["MissingApacheLicenseDetector"], + }, kotlincflags: [ + "-Xexplicit-api=strict", "-Xjvm-default=all", ], defaults_visibility: [":__subpackages__"], diff --git a/packages/SystemUI/pods/com/android/systemui/retail/RetailModeModule.kt b/packages/SystemUI/pods/com/android/systemui/retail/RetailModeModule.kt index c20e368f1690..fe78bb3da9f4 100644 --- a/packages/SystemUI/pods/com/android/systemui/retail/RetailModeModule.kt +++ b/packages/SystemUI/pods/com/android/systemui/retail/RetailModeModule.kt @@ -24,11 +24,15 @@ import dagger.Binds import dagger.Module @Module -abstract class RetailModeModule { +public abstract class RetailModeModule { @Binds - abstract fun bindsRetailModeRepository(impl: RetailModeSettingsRepository): RetailModeRepository + public abstract fun bindsRetailModeRepository( + impl: RetailModeSettingsRepository + ): RetailModeRepository @Binds - abstract fun bindsRetailModeInteractor(impl: RetailModeInteractorImpl): RetailModeInteractor + public abstract fun bindsRetailModeInteractor( + impl: RetailModeInteractorImpl + ): RetailModeInteractor } diff --git a/packages/SystemUI/pods/com/android/systemui/retail/data/repository/RetailModeRepository.kt b/packages/SystemUI/pods/com/android/systemui/retail/data/repository/RetailModeRepository.kt index c9eac2588811..4fd69855f30b 100644 --- a/packages/SystemUI/pods/com/android/systemui/retail/data/repository/RetailModeRepository.kt +++ b/packages/SystemUI/pods/com/android/systemui/retail/data/repository/RetailModeRepository.kt @@ -19,11 +19,11 @@ package com.android.systemui.retail.data.repository import kotlinx.coroutines.flow.StateFlow /** Repository to track if the device is in Retail mode */ -interface RetailModeRepository { +public interface RetailModeRepository { /** Flow of whether the device is currently in retail mode. */ - val retailMode: StateFlow<Boolean> + public val retailMode: StateFlow<Boolean> /** Last value of whether the device is in retail mode. */ - val inRetailMode: Boolean + public val inRetailMode: Boolean get() = retailMode.value } diff --git a/packages/SystemUI/pods/com/android/systemui/retail/data/repository/impl/RetailModeSettingsRepository.kt b/packages/SystemUI/pods/com/android/systemui/retail/data/repository/impl/RetailModeSettingsRepository.kt index 8955263595f3..7296835d420e 100644 --- a/packages/SystemUI/pods/com/android/systemui/retail/data/repository/impl/RetailModeSettingsRepository.kt +++ b/packages/SystemUI/pods/com/android/systemui/retail/data/repository/impl/RetailModeSettingsRepository.kt @@ -38,17 +38,17 @@ import kotlinx.coroutines.flow.stateIn /** * Tracks [Settings.Global.DEVICE_DEMO_MODE]. * - * @see UserManager.isDeviceInDemoMode + * @see android.os.UserManager.isDeviceInDemoMode */ @SysUISingleton -class RetailModeSettingsRepository +public class RetailModeSettingsRepository @Inject constructor( globalSettings: GlobalSettings, @Background backgroundDispatcher: CoroutineDispatcher, @Application scope: CoroutineScope, ) : RetailModeRepository { - override val retailMode = + override val retailMode: StateFlow<Boolean> = conflatedCallbackFlow { val observer = object : ContentObserver(null) { @@ -66,7 +66,7 @@ constructor( .flowOn(backgroundDispatcher) .stateIn(scope, SharingStarted.Eagerly, false) - companion object { + public companion object { private const val RETAIL_MODE_SETTING = Settings.Global.DEVICE_DEMO_MODE } } diff --git a/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/RetailModeInteractor.kt b/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/RetailModeInteractor.kt index 748e34d430d8..3e44f8dbca76 100644 --- a/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/RetailModeInteractor.kt +++ b/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/RetailModeInteractor.kt @@ -17,7 +17,7 @@ package com.android.systemui.retail.domain.interactor /** Interactor to determine if the device is currently in retail mode */ -interface RetailModeInteractor { +public interface RetailModeInteractor { /** Whether the device is currently in retail mode */ - val isInRetailMode: Boolean + public val isInRetailMode: Boolean } diff --git a/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/impl/RetailModeInteractorImpl.kt b/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/impl/RetailModeInteractorImpl.kt index 8dbe562c2ed7..52b4bcc81976 100644 --- a/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/impl/RetailModeInteractorImpl.kt +++ b/packages/SystemUI/pods/com/android/systemui/retail/domain/interactor/impl/RetailModeInteractorImpl.kt @@ -22,11 +22,9 @@ import com.android.systemui.retail.domain.interactor.RetailModeInteractor import javax.inject.Inject @SysUISingleton -class RetailModeInteractorImpl +public class RetailModeInteractorImpl @Inject -constructor( - private val repository: RetailModeRepository, -) : RetailModeInteractor { +constructor(private val repository: RetailModeRepository) : RetailModeInteractor { override val isInRetailMode: Boolean get() = repository.inRetailMode } diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt index 597276a66dfa..a8d4f7906115 100644 --- a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt +++ b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxy.kt @@ -19,6 +19,7 @@ import android.annotation.UserIdInt import android.content.ContentResolver import android.database.ContentObserver import android.net.Uri +import android.provider.Settings import android.provider.Settings.SettingNotFoundException import androidx.annotation.AnyThread import androidx.annotation.WorkerThread @@ -28,6 +29,7 @@ import com.android.app.tracing.coroutines.withContextTraced as withContext import kotlin.coroutines.coroutineContext import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job /** * Used to interact with mainly with Settings.Global, but can also be used for Settings.System and @@ -43,15 +45,15 @@ import kotlinx.coroutines.CoroutineScope * This class also provides [.registerContentObserver] methods, normally found on [ContentResolver] * instances, unifying setting related actions in one place. */ -interface SettingsProxy { +public interface SettingsProxy { /** Returns the [ContentResolver] this instance was constructed with. */ - fun getContentResolver(): ContentResolver + public fun getContentResolver(): ContentResolver /** Returns the [CoroutineScope] that the async APIs will use. */ - val settingsScope: CoroutineScope + public val settingsScope: CoroutineScope @OptIn(ExperimentalStdlibApi::class) - suspend fun executeOnSettingsScopeDispatcher(name: String, block: () -> Unit) { + public suspend fun executeOnSettingsScopeDispatcher(name: String, block: () -> Unit) { val settingsDispatcher = settingsScope.coroutineContext[CoroutineDispatcher] if ( settingsDispatcher != null && @@ -70,7 +72,7 @@ interface SettingsProxy { * @param name to look up in the table * @return the corresponding content URI, or null if not present */ - @AnyThread fun getUriFor(name: String): Uri + @AnyThread public fun getUriFor(name: String): Uri /** * Registers listener for a given content observer <b>while blocking the current thread</b>. @@ -80,7 +82,7 @@ interface SettingsProxy { * [registerContentObserverAsync] instead. */ @WorkerThread - fun registerContentObserverSync(name: String, settingsObserver: ContentObserver) { + public fun registerContentObserverSync(name: String, settingsObserver: ContentObserver) { registerContentObserverSync(getUriFor(name), settingsObserver) } @@ -91,7 +93,7 @@ interface SettingsProxy { * registration happens on a worker thread. Caller may wrap the API in an async block if they * wish to synchronize execution. */ - suspend fun registerContentObserver(name: String, settingsObserver: ContentObserver) { + public suspend fun registerContentObserver(name: String, settingsObserver: ContentObserver) { executeOnSettingsScopeDispatcher("registerContentObserver-A") { registerContentObserverSync(getUriFor(name), settingsObserver) } @@ -103,7 +105,7 @@ interface SettingsProxy { * API corresponding to [registerContentObserver] for Java usage. */ @AnyThread - fun registerContentObserverAsync(name: String, settingsObserver: ContentObserver) = + public fun registerContentObserverAsync(name: String, settingsObserver: ContentObserver): Job = settingsScope.launch("registerContentObserverAsync-A") { registerContentObserverSync(getUriFor(name), settingsObserver) } @@ -116,11 +118,11 @@ interface SettingsProxy { * value. */ @AnyThread - fun registerContentObserverAsync( + public fun registerContentObserverAsync( name: String, settingsObserver: ContentObserver, @WorkerThread registered: Runnable, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-B") { registerContentObserverSync(getUriFor(name), settingsObserver) registered.run() @@ -133,8 +135,9 @@ interface SettingsProxy { * [registerContentObserverAsync] instead. */ @WorkerThread - fun registerContentObserverSync(uri: Uri, settingsObserver: ContentObserver) = + public fun registerContentObserverSync(uri: Uri, settingsObserver: ContentObserver) { registerContentObserverSync(uri, false, settingsObserver) + } /** * Convenience wrapper around [ContentResolver.registerContentObserver].' @@ -143,7 +146,7 @@ interface SettingsProxy { * registration happens on a worker thread. Caller may wrap the API in an async block if they * wish to synchronize execution. */ - suspend fun registerContentObserver(uri: Uri, settingsObserver: ContentObserver) { + public suspend fun registerContentObserver(uri: Uri, settingsObserver: ContentObserver) { executeOnSettingsScopeDispatcher("registerContentObserver-B") { registerContentObserverSync(uri, settingsObserver) } @@ -155,7 +158,7 @@ interface SettingsProxy { * API corresponding to [registerContentObserver] for Java usage. */ @AnyThread - fun registerContentObserverAsync(uri: Uri, settingsObserver: ContentObserver) = + public fun registerContentObserverAsync(uri: Uri, settingsObserver: ContentObserver): Job = settingsScope.launch("registerContentObserverAsync-C") { registerContentObserverSync(uri, settingsObserver) } @@ -168,11 +171,11 @@ interface SettingsProxy { * value. */ @AnyThread - fun registerContentObserverAsync( + public fun registerContentObserverAsync( uri: Uri, settingsObserver: ContentObserver, @WorkerThread registered: Runnable, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-D") { registerContentObserverSync(uri, settingsObserver) registered.run() @@ -184,11 +187,13 @@ interface SettingsProxy { * Implicitly calls [getUriFor] on the passed in name. */ @WorkerThread - fun registerContentObserverSync( + public fun registerContentObserverSync( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, - ) = registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver) + ) { + registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver) + } /** * Convenience wrapper around [ContentResolver.registerContentObserver].' @@ -197,7 +202,7 @@ interface SettingsProxy { * registration happens on a worker thread. Caller may wrap the API in an async block if they * wish to synchronize execution. */ - suspend fun registerContentObserver( + public suspend fun registerContentObserver( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -213,11 +218,11 @@ interface SettingsProxy { * API corresponding to [registerContentObserver] for Java usage. */ @AnyThread - fun registerContentObserverAsync( + public fun registerContentObserverAsync( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-E") { registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver) } @@ -230,12 +235,12 @@ interface SettingsProxy { * value. */ @AnyThread - fun registerContentObserverAsync( + public fun registerContentObserverAsync( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @WorkerThread registered: Runnable, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-F") { registerContentObserverSync(getUriFor(name), notifyForDescendants, settingsObserver) registered.run() @@ -248,7 +253,7 @@ interface SettingsProxy { * [registerContentObserverAsync] instead. */ @WorkerThread - fun registerContentObserverSync( + public fun registerContentObserverSync( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -266,7 +271,7 @@ interface SettingsProxy { * registration happens on a worker thread. Caller may wrap the API in an async block if they * wish to synchronize execution. */ - suspend fun registerContentObserver( + public suspend fun registerContentObserver( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -282,11 +287,11 @@ interface SettingsProxy { * API corresponding to [registerContentObserver] for Java usage. */ @AnyThread - fun registerContentObserverAsync( + public fun registerContentObserverAsync( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-G") { registerContentObserverSync(uri, notifyForDescendants, settingsObserver) } @@ -299,12 +304,12 @@ interface SettingsProxy { * value. */ @AnyThread - fun registerContentObserverAsync( + public fun registerContentObserverAsync( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @WorkerThread registered: Runnable, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-H") { registerContentObserverSync(uri, notifyForDescendants, settingsObserver) registered.run() @@ -317,7 +322,7 @@ interface SettingsProxy { * [unregisterContentObserverAsync] instead. */ @WorkerThread - fun unregisterContentObserverSync(settingsObserver: ContentObserver) { + public fun unregisterContentObserverSync(settingsObserver: ContentObserver) { trace({ "SP#unregisterObserver" }) { getContentResolver().unregisterContentObserver(settingsObserver) } @@ -330,7 +335,7 @@ interface SettingsProxy { * [ContentObserver] un-registration happens on a worker thread. Caller may wrap the API in an * async block if they wish to synchronize execution. */ - suspend fun unregisterContentObserver(settingsObserver: ContentObserver) { + public suspend fun unregisterContentObserver(settingsObserver: ContentObserver) { executeOnSettingsScopeDispatcher("unregisterContentObserver") { unregisterContentObserverSync(settingsObserver) } @@ -343,7 +348,7 @@ interface SettingsProxy { * [ContentObserver] registration happens on a worker thread. */ @AnyThread - fun unregisterContentObserverAsync(settingsObserver: ContentObserver) = + public fun unregisterContentObserverAsync(settingsObserver: ContentObserver): Job = settingsScope.launch("unregisterContentObserverAsync") { unregisterContentObserver(settingsObserver) } @@ -354,7 +359,7 @@ interface SettingsProxy { * @param name to look up in the table * @return the corresponding value, or null if not present */ - fun getString(name: String): String? + public fun getString(name: String): String? /** * Store a name/value pair into the database. @@ -363,7 +368,7 @@ interface SettingsProxy { * @param value to associate with the name * @return true if the value was set, false on database errors */ - fun putString(name: String, value: String?): Boolean + public fun putString(name: String, value: String?): Boolean /** * Store a name/value pair into the database. @@ -394,7 +399,7 @@ interface SettingsProxy { * @return true if the value was set, false on database errors. * @see .resetToDefaults */ - fun putString(name: String, value: String?, tag: String?, makeDefault: Boolean): Boolean + public fun putString(name: String, value: String?, tag: String?, makeDefault: Boolean): Boolean /** * Convenience function for retrieving a single secure settings value as an integer. Note that @@ -406,7 +411,7 @@ interface SettingsProxy { * @param default Value to return if the setting is not defined. * @return The setting's current value, or default if it is not defined or not a valid integer. */ - fun getInt(name: String, default: Int): Int { + public fun getInt(name: String, default: Int): Int { val v = getString(name) return try { v?.toInt() ?: default @@ -429,7 +434,7 @@ interface SettingsProxy { * found or the setting value is not an integer. */ @Throws(SettingNotFoundException::class) - fun getInt(name: String): Int { + public fun getInt(name: String): Int { val v = getString(name) ?: throw SettingNotFoundException(name) return try { v.toInt() @@ -448,7 +453,7 @@ interface SettingsProxy { * @param value The new value for the setting. * @return true if the value was set, false on database errors */ - fun putInt(name: String, value: Int): Boolean { + public fun putInt(name: String, value: Int): Boolean { return putString(name, value.toString()) } @@ -462,7 +467,7 @@ interface SettingsProxy { * @param default Value to return if the setting is not defined. * @return The setting's current value, or default if it is not defined or not a valid boolean. */ - fun getBool(name: String, default: Boolean): Boolean { + public fun getBool(name: String, default: Boolean): Boolean { return getInt(name, if (default) 1 else 0) != 0 } @@ -480,7 +485,7 @@ interface SettingsProxy { * found or the setting value is not a boolean. */ @Throws(SettingNotFoundException::class) - fun getBool(name: String): Boolean { + public fun getBool(name: String): Boolean { return getInt(name) != 0 } @@ -494,7 +499,7 @@ interface SettingsProxy { * @param value The new value for the setting. * @return true if the value was set, false on database errors */ - fun putBool(name: String, value: Boolean): Boolean { + public fun putBool(name: String, value: Boolean): Boolean { return putInt(name, if (value) 1 else 0) } @@ -508,7 +513,7 @@ interface SettingsProxy { * @param def Value to return if the setting is not defined. * @return The setting's current value, or 'def' if it is not defined or not a valid `long`. */ - fun getLong(name: String, def: Long): Long { + public fun getLong(name: String, def: Long): Long { val valString = getString(name) return parseLongOrUseDefault(valString, def) } @@ -527,7 +532,7 @@ interface SettingsProxy { * found or the setting value is not an integer. */ @Throws(SettingNotFoundException::class) - fun getLong(name: String): Long { + public fun getLong(name: String): Long { val valString = getString(name) return parseLongOrThrow(name, valString) } @@ -542,7 +547,7 @@ interface SettingsProxy { * @param value The new value for the setting. * @return true if the value was set, false on database errors */ - fun putLong(name: String, value: Long): Boolean { + public fun putLong(name: String, value: Long): Boolean { return putString(name, value.toString()) } @@ -556,7 +561,7 @@ interface SettingsProxy { * @param def Value to return if the setting is not defined. * @return The setting's current value, or 'def' if it is not defined or not a valid float. */ - fun getFloat(name: String, def: Float): Float { + public fun getFloat(name: String, def: Float): Float { val v = getString(name) return parseFloat(v, def) } @@ -575,7 +580,7 @@ interface SettingsProxy { * found or the setting value is not a float. */ @Throws(SettingNotFoundException::class) - fun getFloat(name: String): Float { + public fun getFloat(name: String): Float { val v = getString(name) return parseFloatOrThrow(name, v) } @@ -590,14 +595,14 @@ interface SettingsProxy { * @param value The new value for the setting. * @return true if the value was set, false on database errors */ - fun putFloat(name: String, value: Float): Boolean { + public fun putFloat(name: String, value: Float): Boolean { return putString(name, value.toString()) } - companion object { + public companion object { /** Convert a string to a long, or uses a default if the string is malformed or null */ @JvmStatic - fun parseLongOrUseDefault(valString: String?, default: Long): Long { + public fun parseLongOrUseDefault(valString: String?, default: Long): Long { val value: Long = try { valString?.toLong() ?: default @@ -610,7 +615,7 @@ interface SettingsProxy { /** Convert a string to a long, or throws an exception if the string is malformed or null */ @JvmStatic @Throws(SettingNotFoundException::class) - fun parseLongOrThrow(name: String, valString: String?): Long { + public fun parseLongOrThrow(name: String, valString: String?): Long { if (valString == null) { throw SettingNotFoundException(name) } @@ -623,7 +628,7 @@ interface SettingsProxy { /** Convert a string to a float, or uses a default if the string is malformed or null */ @JvmStatic - fun parseFloat(v: String?, def: Float): Float { + public fun parseFloat(v: String?, def: Float): Float { return try { v?.toFloat() ?: def } catch (e: NumberFormatException) { @@ -636,7 +641,7 @@ interface SettingsProxy { */ @JvmStatic @Throws(SettingNotFoundException::class) - fun parseFloatOrThrow(name: String, v: String?): Float { + public fun parseFloatOrThrow(name: String, v: String?): Float { if (v == null) { throw SettingNotFoundException(name) } @@ -648,7 +653,7 @@ interface SettingsProxy { } } - fun interface CurrentUserIdProvider { - @UserIdInt fun getUserId(): Int + public fun interface CurrentUserIdProvider { + @UserIdInt public fun getUserId(): Int } } diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxyExt.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxyExt.kt index 364681444c1b..60feaf1315e6 100644 --- a/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxyExt.kt +++ b/packages/SystemUI/pods/com/android/systemui/util/settings/SettingsProxyExt.kt @@ -17,6 +17,7 @@ package com.android.systemui.util.settings +import android.annotation.SuppressLint import android.annotation.UserIdInt import android.database.ContentObserver import com.android.systemui.Flags @@ -25,10 +26,11 @@ import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow /** Kotlin extension functions for [SettingsProxy]. */ -object SettingsProxyExt { +@SuppressLint("RegisterContentObserverSyncWarning") +public object SettingsProxyExt { /** Returns a flow of [Unit] that is invoked each time that content is updated. */ - fun UserSettingsProxy.observerFlow( + public fun UserSettingsProxy.observerFlow( @UserIdInt userId: Int, vararg names: String, ): Flow<Unit> { @@ -59,9 +61,7 @@ object SettingsProxyExt { } /** Returns a flow of [Unit] that is invoked each time that content is updated. */ - fun SettingsProxy.observerFlow( - vararg names: String, - ): Flow<Unit> { + public fun SettingsProxy.observerFlow(vararg names: String): Flow<Unit> { return conflatedCallbackFlow { val observer = object : ContentObserver(null) { diff --git a/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt b/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt index 3ccac9e374a2..61c7f7359820 100644 --- a/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt +++ b/packages/SystemUI/pods/com/android/systemui/util/settings/UserSettingsProxy.kt @@ -15,6 +15,7 @@ */ package com.android.systemui.util.settings +import android.annotation.SuppressLint import android.annotation.UserIdInt import android.annotation.WorkerThread import android.content.ContentResolver @@ -28,6 +29,7 @@ import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloat import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloatOrThrow import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrThrow import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrUseDefault +import kotlinx.coroutines.Job /** * Used to interact with per-user Settings.Secure and Settings.System settings (but not @@ -42,11 +44,12 @@ import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrUse * This class also provides [.registerContentObserver] methods, normally found on [ContentResolver] * instances, unifying setting related actions in one place. */ -interface UserSettingsProxy : SettingsProxy { - val currentUserProvider: SettingsProxy.CurrentUserIdProvider +@SuppressLint("RegisterContentObserverSyncWarning") +public interface UserSettingsProxy : SettingsProxy { + public val currentUserProvider: SettingsProxy.CurrentUserIdProvider /** Returns the user id for the associated [ContentResolver]. */ - var userId: Int + public var userId: Int get() = getContentResolver().userId set(_) { throw UnsupportedOperationException( @@ -58,7 +61,7 @@ interface UserSettingsProxy : SettingsProxy { * Returns the actual current user handle when querying with the current user. Otherwise, * returns the passed in user id. */ - fun getRealUserHandle(userHandle: Int): Int { + public fun getRealUserHandle(userHandle: Int): Int { return if (userHandle != UserHandle.USER_CURRENT) { userHandle } else currentUserProvider.getUserId() @@ -75,7 +78,7 @@ interface UserSettingsProxy : SettingsProxy { } } - override fun registerContentObserverAsync(uri: Uri, settingsObserver: ContentObserver) = + override fun registerContentObserverAsync(uri: Uri, settingsObserver: ContentObserver): Job = settingsScope.launch("registerContentObserverAsync-A") { registerContentObserverForUserSync(uri, settingsObserver, userId) } @@ -109,7 +112,7 @@ interface UserSettingsProxy : SettingsProxy { uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, - ) = + ): Job = settingsScope.launch("registerContentObserverAsync-B") { registerContentObserverForUserSync(uri, notifyForDescendants, settingsObserver, userId) } @@ -120,7 +123,7 @@ interface UserSettingsProxy : SettingsProxy { * Implicitly calls [getUriFor] on the passed in name. */ @WorkerThread - fun registerContentObserverForUserSync( + public fun registerContentObserverForUserSync( name: String, settingsObserver: ContentObserver, userHandle: Int, @@ -135,7 +138,7 @@ interface UserSettingsProxy : SettingsProxy { * [ContentObserver] registration happens on a worker thread. Caller may wrap the API in an * async block if they wish to synchronize execution. */ - suspend fun registerContentObserverForUser( + public suspend fun registerContentObserverForUser( name: String, settingsObserver: ContentObserver, userHandle: Int, @@ -150,11 +153,11 @@ interface UserSettingsProxy : SettingsProxy { * * API corresponding to [registerContentObserverForUser] for Java usage. */ - fun registerContentObserverForUserAsync( + public fun registerContentObserverForUserAsync( name: String, settingsObserver: ContentObserver, userHandle: Int, - ) = + ): Job = settingsScope.launch("registerContentObserverForUserAsync-A") { try { registerContentObserverForUserSync(getUriFor(name), settingsObserver, userHandle) @@ -165,7 +168,7 @@ interface UserSettingsProxy : SettingsProxy { /** Convenience wrapper around [ContentResolver.registerContentObserver] */ @WorkerThread - fun registerContentObserverForUserSync( + public fun registerContentObserverForUserSync( uri: Uri, settingsObserver: ContentObserver, userHandle: Int, @@ -180,7 +183,7 @@ interface UserSettingsProxy : SettingsProxy { * [ContentObserver] registration happens on a worker thread. Caller may wrap the API in an * async block if they wish to synchronize execution. */ - suspend fun registerContentObserverForUser( + public suspend fun registerContentObserverForUser( uri: Uri, settingsObserver: ContentObserver, userHandle: Int, @@ -195,11 +198,11 @@ interface UserSettingsProxy : SettingsProxy { * * API corresponding to [registerContentObserverForUser] for Java usage. */ - fun registerContentObserverForUserAsync( + public fun registerContentObserverForUserAsync( uri: Uri, settingsObserver: ContentObserver, userHandle: Int, - ) = + ): Job = settingsScope.launch("registerContentObserverForUserAsync-B") { try { registerContentObserverForUserSync(uri, settingsObserver, userHandle) @@ -215,12 +218,12 @@ interface UserSettingsProxy : SettingsProxy { * complete, the callback block is called on the <b>background thread</b> to allow for update of * value. */ - fun registerContentObserverForUserAsync( + public fun registerContentObserverForUserAsync( uri: Uri, settingsObserver: ContentObserver, userHandle: Int, @WorkerThread registered: Runnable, - ) = + ): Job = settingsScope.launch("registerContentObserverForUserAsync-C") { try { registerContentObserverForUserSync(uri, settingsObserver, userHandle) @@ -236,7 +239,7 @@ interface UserSettingsProxy : SettingsProxy { * Implicitly calls [getUriFor] on the passed in name. */ @WorkerThread - fun registerContentObserverForUserSync( + public fun registerContentObserverForUserSync( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -257,7 +260,7 @@ interface UserSettingsProxy : SettingsProxy { * [ContentObserver] registration happens on a worker thread. Caller may wrap the API in an * async block if they wish to synchronize execution. */ - suspend fun registerContentObserverForUser( + public suspend fun registerContentObserverForUser( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -278,7 +281,7 @@ interface UserSettingsProxy : SettingsProxy { * * API corresponding to [registerContentObserverForUser] for Java usage. */ - fun registerContentObserverForUserAsync( + public fun registerContentObserverForUserAsync( name: String, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -300,7 +303,7 @@ interface UserSettingsProxy : SettingsProxy { /** Convenience wrapper around [ContentResolver.registerContentObserver] */ @WorkerThread - fun registerContentObserverForUserSync( + public fun registerContentObserverForUserSync( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -314,7 +317,6 @@ interface UserSettingsProxy : SettingsProxy { settingsObserver, getRealUserHandle(userHandle), ) - Unit } } @@ -325,7 +327,7 @@ interface UserSettingsProxy : SettingsProxy { * [ContentObserver] registration happens on a worker thread. Caller may wrap the API in an * async block if they wish to synchronize execution. */ - suspend fun registerContentObserverForUser( + public suspend fun registerContentObserverForUser( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, @@ -346,12 +348,12 @@ interface UserSettingsProxy : SettingsProxy { * * API corresponding to [registerContentObserverForUser] for Java usage. */ - fun registerContentObserverForUserAsync( + public fun registerContentObserverForUserAsync( uri: Uri, notifyForDescendants: Boolean, settingsObserver: ContentObserver, userHandle: Int, - ) = + ): Job = settingsScope.launch("registerContentObserverForUserAsync-E") { try { registerContentObserverForUserSync( @@ -376,7 +378,7 @@ interface UserSettingsProxy : SettingsProxy { } /** See [getString]. */ - fun getStringForUser(name: String, userHandle: Int): String? + public fun getStringForUser(name: String, userHandle: Int): String? /** * Store a name/value pair into the database. Values written by this method will be overridden @@ -386,17 +388,17 @@ interface UserSettingsProxy : SettingsProxy { * @param value to associate with the name * @return true if the value was set, false on database errors */ - fun putString(name: String, value: String?, overrideableByRestore: Boolean): Boolean + public fun putString(name: String, value: String?, overrideableByRestore: Boolean): Boolean override fun putString(name: String, value: String?): Boolean { return putStringForUser(name, value, userId) } /** Similar implementation to [putString] for the specified [userHandle]. */ - fun putStringForUser(name: String, value: String?, userHandle: Int): Boolean + public fun putStringForUser(name: String, value: String?, userHandle: Int): Boolean /** Similar implementation to [putString] for the specified [userHandle]. */ - fun putStringForUser( + public fun putStringForUser( name: String, value: String?, tag: String?, @@ -410,7 +412,7 @@ interface UserSettingsProxy : SettingsProxy { } /** Similar implementation to [getInt] for the specified [userHandle]. */ - fun getIntForUser(name: String, default: Int, userHandle: Int): Int { + public fun getIntForUser(name: String, default: Int, userHandle: Int): Int { val v = getStringForUser(name, userHandle) return try { v?.toInt() ?: default @@ -420,11 +422,11 @@ interface UserSettingsProxy : SettingsProxy { } @Throws(SettingNotFoundException::class) - override fun getInt(name: String) = getIntForUser(name, userId) + override fun getInt(name: String): Int = getIntForUser(name, userId) /** Similar implementation to [getInt] for the specified [userHandle]. */ @Throws(SettingNotFoundException::class) - fun getIntForUser(name: String, userHandle: Int): Int { + public fun getIntForUser(name: String, userHandle: Int): Int { val v = getStringForUser(name, userHandle) ?: throw SettingNotFoundException(name) return try { v.toInt() @@ -433,24 +435,24 @@ interface UserSettingsProxy : SettingsProxy { } } - override fun putInt(name: String, value: Int) = putIntForUser(name, value, userId) + override fun putInt(name: String, value: Int): Boolean = putIntForUser(name, value, userId) /** Similar implementation to [getInt] for the specified [userHandle]. */ - fun putIntForUser(name: String, value: Int, userHandle: Int) = + public fun putIntForUser(name: String, value: Int, userHandle: Int): Boolean = putStringForUser(name, value.toString(), userHandle) - override fun getBool(name: String, def: Boolean) = getBoolForUser(name, def, userId) + override fun getBool(name: String, def: Boolean): Boolean = getBoolForUser(name, def, userId) /** Similar implementation to [getBool] for the specified [userHandle]. */ - fun getBoolForUser(name: String, def: Boolean, userHandle: Int) = + public fun getBoolForUser(name: String, def: Boolean, userHandle: Int): Boolean = getIntForUser(name, if (def) 1 else 0, userHandle) != 0 @Throws(SettingNotFoundException::class) - override fun getBool(name: String) = getBoolForUser(name, userId) + override fun getBool(name: String): Boolean = getBoolForUser(name, userId) /** Similar implementation to [getBool] for the specified [userHandle]. */ @Throws(SettingNotFoundException::class) - fun getBoolForUser(name: String, userHandle: Int): Boolean { + public fun getBoolForUser(name: String, userHandle: Int): Boolean { return getIntForUser(name, userHandle) != 0 } @@ -459,40 +461,40 @@ interface UserSettingsProxy : SettingsProxy { } /** Similar implementation to [putBool] for the specified [userHandle]. */ - fun putBoolForUser(name: String, value: Boolean, userHandle: Int) = + public fun putBoolForUser(name: String, value: Boolean, userHandle: Int): Boolean = putIntForUser(name, if (value) 1 else 0, userHandle) /** Similar implementation to [getLong] for the specified [userHandle]. */ - fun getLongForUser(name: String, def: Long, userHandle: Int): Long { + public fun getLongForUser(name: String, def: Long, userHandle: Int): Long { val valString = getStringForUser(name, userHandle) return parseLongOrUseDefault(valString, def) } /** Similar implementation to [getLong] for the specified [userHandle]. */ @Throws(SettingNotFoundException::class) - fun getLongForUser(name: String, userHandle: Int): Long { + public fun getLongForUser(name: String, userHandle: Int): Long { val valString = getStringForUser(name, userHandle) return parseLongOrThrow(name, valString) } /** Similar implementation to [putLong] for the specified [userHandle]. */ - fun putLongForUser(name: String, value: Long, userHandle: Int) = + public fun putLongForUser(name: String, value: Long, userHandle: Int): Boolean = putStringForUser(name, value.toString(), userHandle) /** Similar implementation to [getFloat] for the specified [userHandle]. */ - fun getFloatForUser(name: String, def: Float, userHandle: Int): Float { + public fun getFloatForUser(name: String, def: Float, userHandle: Int): Float { val v = getStringForUser(name, userHandle) return parseFloat(v, def) } /** Similar implementation to [getFloat] for the specified [userHandle]. */ @Throws(SettingNotFoundException::class) - fun getFloatForUser(name: String, userHandle: Int): Float { + public fun getFloatForUser(name: String, userHandle: Int): Float { val v = getStringForUser(name, userHandle) return parseFloatOrThrow(name, v) } /** Similar implementation to [putFloat] for the specified [userHandle]. */ - fun putFloatForUser(name: String, value: Float, userHandle: Int) = + public fun putFloatForUser(name: String, value: Float, userHandle: Int): Boolean = putStringForUser(name, value.toString(), userHandle) } diff --git a/packages/SystemUI/res-keyguard/layout/default_clock_preview.xml b/packages/SystemUI/res-keyguard/layout/default_clock_preview.xml deleted file mode 100644 index 3e6dd13e4b9f..000000000000 --- a/packages/SystemUI/res-keyguard/layout/default_clock_preview.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - > - <TextClock - android:id="@+id/time" - style="@style/widget_big" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_above="@id/date" - android:letterSpacing="0.03" - android:gravity="center_horizontal" - android:format12Hour="@string/keyguard_widget_12_hours_format" - android:format24Hour="@string/keyguard_widget_24_hours_format" - /> - - <TextClock - android:id="@+id/date" - style="@stype/widget_big" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:letterSpacing="0.03" - android:gravity="center_horizontal" - android:format12Hour="EEE, MMM d" - android:format24Hour="EEE, MMM d" - /> -</RelativeLayout> diff --git a/packages/SystemUI/res-keyguard/layout/digital_clock.xml b/packages/SystemUI/res-keyguard/layout/digital_clock.xml deleted file mode 100644 index 38ee081b8327..000000000000 --- a/packages/SystemUI/res-keyguard/layout/digital_clock.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2019 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_alignParentTop="true"> - <TextClock - android:id="@+id/lock_screen_clock" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:gravity="center_horizontal" - android:paddingBottom="@dimen/widget_vertical_padding_clock" - android:letterSpacing="0.03" - android:textColor="?attr/wallpaperTextColor" - android:singleLine="true" - style="@style/widget_small_bold" - android:format12Hour="@string/keyguard_widget_12_hours_format" - android:format24Hour="@string/keyguard_widget_24_hours_format" - android:elegantTextHeight="false" - /> -</FrameLayout> - diff --git a/packages/SystemUI/res/drawable/notification_2025_guts_priority_button_bg.xml b/packages/SystemUI/res/drawable/notification_2025_guts_priority_button_bg.xml new file mode 100644 index 000000000000..1de8c2b6c35d --- /dev/null +++ b/packages/SystemUI/res/drawable/notification_2025_guts_priority_button_bg.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2025 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" > + <solid + android:color="@color/notification_guts_priority_button_bg_fill" /> + + <stroke + android:width="1.5dp" + android:color="@color/notification_guts_priority_button_bg_stroke" /> + + <corners android:radius="16dp" /> +</shape> diff --git a/packages/SystemUI/res/layout/combined_qs_header.xml b/packages/SystemUI/res/layout/combined_qs_header.xml index 32407c6ae1bf..5c06585de99c 100644 --- a/packages/SystemUI/res/layout/combined_qs_header.xml +++ b/packages/SystemUI/res/layout/combined_qs_header.xml @@ -86,6 +86,7 @@ frame when animating QS <-> QQS transition android:singleLine="true" android:textDirection="locale" android:textAppearance="@style/TextAppearance.QS.Status" + android:fontFeatureSettings="tnum" android:transformPivotX="0dp" android:transformPivotY="24dp" android:scaleX="1" diff --git a/packages/SystemUI/res/layout/keyguard_status_bar.xml b/packages/SystemUI/res/layout/keyguard_status_bar.xml index 4cb7591a3502..d5f9d4cc0954 100644 --- a/packages/SystemUI/res/layout/keyguard_status_bar.xml +++ b/packages/SystemUI/res/layout/keyguard_status_bar.xml @@ -76,7 +76,7 @@ android:gravity="center_vertical" android:ellipsize="marquee" android:textDirection="locale" - android:textAppearance="@style/TextAppearance.StatusBar.Clock" + android:textAppearance="@style/TextAppearance.StatusBar.Carrier" android:textColor="?attr/wallpaperTextColorSecondary" android:singleLine="true" systemui:showMissingSim="true" diff --git a/packages/SystemUI/res/layout/notification_2025_info.xml b/packages/SystemUI/res/layout/notification_2025_info.xml new file mode 100644 index 000000000000..7b6916652924 --- /dev/null +++ b/packages/SystemUI/res/layout/notification_2025_info.xml @@ -0,0 +1,365 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright 2025, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<!-- extends LinearLayout --> +<com.android.systemui.statusbar.notification.row.NotificationInfo + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + android:id="@+id/notification_guts" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:focusable="true" + android:clipChildren="false" + android:clipToPadding="true" + android:orientation="vertical" + android:paddingStart="@*android:dimen/notification_2025_margin"> + + <!-- Package Info --> + <LinearLayout + android:id="@+id/header" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clipChildren="false" + android:clipToPadding="true"> + <ImageView + android:id="@+id/pkg_icon" + android:layout_width="@*android:dimen/notification_2025_icon_circle_size" + android:layout_height="@*android:dimen/notification_2025_icon_circle_size" + android:layout_marginTop="@*android:dimen/notification_2025_margin" + android:layout_marginEnd="@*android:dimen/notification_2025_margin" /> + <LinearLayout + android:id="@+id/names" + android:layout_weight="1" + android:layout_width="0dp" + android:orientation="vertical" + android:layout_height="wrap_content" + android:layout_marginTop="@*android:dimen/notification_2025_margin" + android:minHeight="@*android:dimen/notification_2025_icon_circle_size"> + <TextView + android:id="@+id/channel_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textDirection="locale" + style="@style/TextAppearance.NotificationImportanceChannel"/> + <TextView + android:id="@+id/group_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textDirection="locale" + android:ellipsize="end" + style="@style/TextAppearance.NotificationImportanceChannelGroup"/> + <TextView + android:id="@+id/pkg_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/TextAppearance.NotificationImportanceApp" + android:ellipsize="end" + android:textDirection="locale" + android:maxLines="1"/> + <TextView + android:id="@+id/delegate_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@style/TextAppearance.NotificationImportanceHeader" + android:ellipsize="end" + android:textDirection="locale" + android:text="@string/notification_delegate_header" + android:maxLines="1" /> + + </LinearLayout> + + <!-- feedback for notificationassistantservice --> + <ImageButton + android:id="@+id/feedback" + android:layout_width="@dimen/notification_2025_guts_button_size" + android:layout_height="@dimen/notification_2025_guts_button_size" + android:visibility="gone" + android:background="@drawable/ripple_drawable" + android:contentDescription="@string/notification_guts_bundle_feedback" + android:src="@*android:drawable/ic_feedback" + android:paddingTop="@*android:dimen/notification_2025_margin" + android:tint="@androidprv:color/materialColorPrimary"/> + + <!-- Optional link to app. Only appears if the channel is not disabled and the app + asked for it --> + <ImageButton + android:id="@+id/app_settings" + android:layout_width="@dimen/notification_2025_guts_button_size" + android:layout_height="@dimen/notification_2025_guts_button_size" + android:visibility="gone" + android:background="@drawable/ripple_drawable" + android:contentDescription="@string/notification_app_settings" + android:src="@drawable/ic_info" + android:paddingTop="@*android:dimen/notification_2025_margin" + android:tint="@androidprv:color/materialColorPrimary"/> + + <!-- System notification settings --> + <ImageButton + android:id="@+id/info" + android:layout_width="@dimen/notification_2025_guts_button_size" + android:layout_height="@dimen/notification_2025_guts_button_size" + android:contentDescription="@string/notification_more_settings" + android:background="@drawable/ripple_drawable" + android:src="@drawable/ic_settings" + android:padding="@*android:dimen/notification_2025_margin" + android:tint="@androidprv:color/materialColorPrimary" /> + + </LinearLayout> + + <LinearLayout + android:id="@+id/inline_controls" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginEnd="@*android:dimen/notification_2025_margin" + android:layout_marginTop="@*android:dimen/notification_2025_margin" + android:clipChildren="false" + android:clipToPadding="false" + android:orientation="vertical"> + + <!-- Non configurable app/channel text. appears instead of @+id/interruptiveness_settings--> + <TextView + android:id="@+id/non_configurable_text" + android:text="@string/notification_unblockable_desc" + android:visibility="gone" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@*android:style/TextAppearance.DeviceDefault.Notification" /> + + <!-- Non configurable app/channel text. appears instead of @+id/interruptiveness_settings--> + <TextView + android:id="@+id/non_configurable_call_text" + android:text="@string/notification_unblockable_call_desc" + android:visibility="gone" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@*android:style/TextAppearance.DeviceDefault.Notification" /> + + <!-- Non configurable multichannel text. appears instead of @+id/interruptiveness_settings--> + <TextView + android:id="@+id/non_configurable_multichannel_text" + android:text="@string/notification_multichannel_desc" + android:visibility="gone" + android:layout_width="match_parent" + android:layout_height="wrap_content" + style="@*android:style/TextAppearance.DeviceDefault.Notification" /> + + <LinearLayout + android:id="@+id/interruptiveness_settings" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:orientation="vertical"> + <com.android.systemui.statusbar.notification.row.ButtonLinearLayout + android:id="@+id/automatic" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingVertical="@dimen/notification_2025_importance_button_padding_vertical" + android:paddingHorizontal="@dimen/notification_2025_importance_button_padding_horizontal" + android:gravity="center_vertical" + android:clickable="true" + android:focusable="true" + android:background="@drawable/notification_2025_guts_priority_button_bg" + android:orientation="horizontal" + android:visibility="gone"> + <ImageView + android:id="@+id/automatic_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="@*android:dimen/notification_2025_margin" + android:src="@drawable/ic_notifications_automatic" + android:background="@android:color/transparent" + android:tint="@color/notification_guts_priority_contents" + android:clickable="false" + android:focusable="false"/> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + > + <TextView + android:id="@+id/automatic_label" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:ellipsize="end" + android:maxLines="1" + android:clickable="false" + android:focusable="false" + android:textAppearance="@style/TextAppearance.NotificationImportanceButton" + android:text="@string/notification_automatic_title"/> + <TextView + android:id="@+id/automatic_summary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/notification_importance_button_description_top_margin" + android:visibility="gone" + android:text="@string/notification_channel_summary_automatic" + android:clickable="false" + android:focusable="false" + android:ellipsize="end" + android:maxLines="2" + android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"/> + </LinearLayout> + </com.android.systemui.statusbar.notification.row.ButtonLinearLayout> + + <com.android.systemui.statusbar.notification.row.ButtonLinearLayout + android:id="@+id/alert" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingVertical="@dimen/notification_2025_importance_button_padding_vertical" + android:paddingHorizontal="@dimen/notification_2025_importance_button_padding_horizontal" + android:gravity="center_vertical" + android:clickable="true" + android:focusable="true" + android:background="@drawable/notification_2025_guts_priority_button_bg" + android:orientation="horizontal"> + <ImageView + android:id="@+id/alert_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="@*android:dimen/notification_2025_margin" + android:src="@drawable/ic_notifications_alert" + android:background="@android:color/transparent" + android:tint="@color/notification_guts_priority_contents" + android:clickable="false" + android:focusable="false"/> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + > + <TextView + android:id="@+id/alert_label" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:ellipsize="end" + android:maxLines="1" + android:clickable="false" + android:focusable="false" + android:textAppearance="@style/TextAppearance.NotificationImportanceButton" + android:text="@string/notification_alert_title"/> + <TextView + android:id="@+id/alert_summary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + android:text="@string/notification_channel_summary_default" + android:clickable="false" + android:focusable="false" + android:ellipsize="end" + android:maxLines="2" + android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"/> + </LinearLayout> + </com.android.systemui.statusbar.notification.row.ButtonLinearLayout> + + <com.android.systemui.statusbar.notification.row.ButtonLinearLayout + android:id="@+id/silence" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/notification_importance_button_separation" + android:paddingVertical="@dimen/notification_2025_importance_button_padding_vertical" + android:paddingHorizontal="@dimen/notification_2025_importance_button_padding_horizontal" + android:gravity="center_vertical" + android:clickable="true" + android:focusable="true" + android:background="@drawable/notification_2025_guts_priority_button_bg" + android:orientation="horizontal"> + <ImageView + android:id="@+id/silence_icon" + android:src="@drawable/ic_notifications_silence" + android:background="@android:color/transparent" + android:tint="@color/notification_guts_priority_contents" + android:layout_gravity="center" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingEnd="@*android:dimen/notification_2025_margin" + android:clickable="false" + android:focusable="false"/> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center" + > + <TextView + android:id="@+id/silence_label" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxLines="1" + android:clickable="false" + android:focusable="false" + android:layout_toEndOf="@id/silence_icon" + android:textAppearance="@style/TextAppearance.NotificationImportanceButton" + android:text="@string/notification_silence_title"/> + <TextView + android:id="@+id/silence_summary" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + android:text="@string/notification_channel_summary_low" + android:clickable="false" + android:focusable="false" + android:ellipsize="end" + android:maxLines="2" + android:textAppearance="@style/TextAppearance.NotificationImportanceDetail"/> + </LinearLayout> + </com.android.systemui.statusbar.notification.row.ButtonLinearLayout> + + </LinearLayout> + + <LinearLayout + android:id="@+id/bottom_buttons" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@*android:dimen/notification_2025_margin" + android:minHeight="@dimen/notification_2025_guts_button_size" + android:gravity="center_vertical" + > + <TextView + android:id="@+id/turn_off_notifications" + android:text="@string/inline_turn_off_notifications" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="32dp" + android:paddingTop="8dp" + android:paddingBottom="@*android:dimen/notification_2025_margin" + android:gravity="center" + android:minWidth="@dimen/notification_2025_min_tap_target_size" + android:minHeight="@dimen/notification_2025_min_tap_target_size" + android:maxWidth="200dp" + style="@style/TextAppearance.NotificationInfo.Button" + android:textSize="@*android:dimen/notification_2025_action_text_size"/> + <TextView + android:id="@+id/done" + android:text="@string/inline_ok_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="8dp" + android:paddingBottom="@*android:dimen/notification_2025_margin" + android:gravity="center" + android:minWidth="@dimen/notification_2025_min_tap_target_size" + android:minHeight="@dimen/notification_2025_min_tap_target_size" + android:maxWidth="125dp" + style="@style/TextAppearance.NotificationInfo.Button" + android:textSize="@*android:dimen/notification_2025_action_text_size"/> + </LinearLayout> + </LinearLayout> +</com.android.systemui.statusbar.notification.row.NotificationInfo> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index d9a28a6bbaf8..d8e08fc1aec3 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth gekoppel."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-toestelikoon"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik om toestelbesonderhede op te stel."</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Stel toestelbesonderhede op"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Sien alle toestelle"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Bind nuwe toestel saam"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batterypersentasie is onbekend."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Gekoppel aan <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Gekoppel aan <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Vou groep uit."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Maak app oop."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nie gekoppel nie."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Swerwing"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Invoer"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Gehoortoestelle"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Skakel tans aan …"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan nie helderheid verstel nie omdat dit deur die topapp beheer word"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Outodraai"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Outodraai skerm"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Ligging"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Verrigting van veelvuldige take"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Gebruik verdeelde skerm met app aan die regterkant"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Gebruik verdeelde skerm met app aan die linkerkant"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Gebruik volskerm"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Gebruik rekenaaraansig"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Skakel oor na app regs of onder terwyl jy verdeelde skerm gebruik"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Skakel oor na app links of bo terwyl jy verdeelde skerm gebruik"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Tydens verdeelde skerm: verplaas ’n app van een skerm na ’n ander"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Bekyk onlangse apps"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Wissel apps"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Volgende"</string> <string name="gesture_error_title" msgid="469064941635578511">"Probeer weer!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gaan terug"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swiep links of regs met drie vingers op jou raakpaneel"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index ba1c3eda2135..ea51f0003be6 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ብሉቱዝ ተያይዟል።"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"የብሉቱዝ መሣሪያ አዶ"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"የመሣሪያ ዝርዝርን ለማዋቀር ጠቅ ያድርጉ"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>። የመሣሪያ ዝርዝር ያዋቅሩ"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ሁሉንም መሣሪያዎች ይመልከቱ"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"አዲስ መሣሪያ ያጣምሩ"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"የባትሪ መቶኛ አይታወቅም።"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"ከ<xliff:g id="BLUETOOTH">%s</xliff:g> ጋር ተገናኝቷል።"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"ከ<xliff:g id="CAST">%s</xliff:g> ጋር ተገናኝቷል።"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ቡድንን ዘርጋ።"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"መተግበሪያ ክፈት።"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"አልተገናኘም።"</string> <string name="data_connection_roaming" msgid="375650836665414797">"በማዛወር ላይ"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ግቤት"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"መስሚያ አጋዥ መሣሪያዎች"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"በማብራት ላይ..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ከላይ ባለው መተግበሪያ ቁጥጥር ላይ ስለሆነ ብሩህነትን ማስተካከል አልተቻለም"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"በራስ ሰር አሽከርክር"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ማያ ገጽን በራስ-አሽከርክር"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"አካባቢ"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"ብዙ ተግባራትን በተመሳሳይ ጊዜ ማከናወን"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"መተግበሪያ በስተቀኝ ላይ ሆኖ የተከፈለ ማያ ገፅን ይጠቀሙ"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"መተግበሪያ በስተግራ ላይ ሆኖ የተከፈለ ማያ ገፅን ይጠቀሙ"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ሙሉ ገፅ ዕይታን ይጠቀሙ"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"የዴስክቶፕ ዕይታ ይጠቀሙ"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"የተከፈለ ማያ ገጽን ሲጠቀሙ በቀኝ ወይም ከታች ወዳለ መተግበሪያ ይቀይሩ"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"የተከፈለ ማያ ገጽን ሲጠቀሙ በቀኝ ወይም ከላይ ወዳለ መተግበሪያ ይቀይሩ"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"በተከፈለ ማያ ገጽ ወቅት፡- መተግበሪያን ከአንዱ ወደ ሌላው ተካ"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"የቅርብ ጊዜ መተግበሪያዎችን አሳይ"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"መተግበሪያዎችን ይቀያይሩ"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ተከናውኗል"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ቀጣይ"</string> <string name="gesture_error_title" msgid="469064941635578511">"እንደገና ይሞክሩ!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ወደኋላ ተመለስ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"የመዳሰሻ ሰሌዳዎ ላይ ሦስት ጣቶችን በመጠቀም ወደ ግራ ወይም ወደ ቀኝ ያንሸራትቱ"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 905183ca9825..99c156b9aa2e 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -255,6 +255,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"متصل بـ <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"تم الاتصال بـ <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"سيتم توسيع المجموعة."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"سيتم فتح التطبيق."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"غير متصل."</string> <string name="data_connection_roaming" msgid="375650836665414797">"التجوال"</string> @@ -332,7 +336,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"الإدخال"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"سماعات الأذن الطبية"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"جارٍ التفعيل…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"لا يمكن ضبط مستوى السطوع لأنّ التطبيق الأول يتحكّم فيه"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"التدوير التلقائي"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"التدوير التلقائي للشاشة"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"الموقع الجغرافي"</string> @@ -586,7 +591,7 @@ <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"سيتم بث كل المحتوى المعروض على شاشتك، لذا يُرجى توخي الحذر بشأن المعلومات الظاهرة، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور والمقاطع الصوتية والفيديوهات."</string> <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"سيتم بث كل المحتوى المعروض أو الذي يتم تشغيله في ذلك التطبيق، لذا يُرجى توخي الحذر بشأن المعلومات الظاهرة، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور والمقاطع الصوتية والفيديوهات."</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"بث محتوى الشاشة"</string> - <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"اختيار تطبيق لبث محتواه"</string> + <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"يُرجى اختيار تطبيق لبث محتواه"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"هل تريد بدء المشاركة؟"</string> <string name="media_projection_entry_generic_permission_dialog_warning_entire_screen" msgid="5407906851409410209">"أثناء المشاركة أو التسجيل أو البثّ، يمكن لنظام Android الوصول إلى كل المحتوى المعروض على شاشتك أو الذي يتم تشغيله على جهازك، لذا يُرجى توخي الحذر بشأن المعلومات، مثل كلمات المرور وتفاصيل الدفع والرسائل والصور وملفات الصوت والفيديو."</string> <string name="media_projection_entry_generic_permission_dialog_warning_single_app" msgid="3454859977888159495">"أثناء مشاركة محتوى تطبيق أو تسجيله أو بثّه، يمكن لنظام Android الوصول إلى كل المحتوى المعروض أو الذي يتم تشغيله في ذلك التطبيق، لذا يُرجى توخي الحذر بشأن المعلومات مثل كلمات المرور وتفاصيل الدفع والرسائل والصور وملفات الصوت والفيديو."</string> @@ -991,8 +996,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"إظهار رموز الإشعارات ذات الأولوية المنخفضة"</string> <string name="other" msgid="429768510980739978">"غير ذلك"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"تبديل حجم المربّع"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"إزالة بطاقة"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"إضافة مربّع إلى الموضع الأخير"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"نقل بطاقة"</string> @@ -1546,10 +1550,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"لعرض التطبيقات المستخدَمة مؤخرًا، مرِّر سريعًا للأعلى مع استمرار الضغط على لوحة اللمس باستخدام 3 أصابع"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"لعرض جميع التطبيقات، اضغط على مفتاح الإجراء في لوحة المفاتيح"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"إشعار مخفي"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"يُرجى فتح القفل لعرض المعلومات"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"يُرجى فتح القفل لعرض الرمز"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"التعليم السياقي"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"استخدِم لوحة اللمس للرجوع"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"مرِّر سريعًا لليمين أو لليسار باستخدام 3 أصابع. انقر للتعرّف على المزيد من الإيماءات."</string> diff --git a/packages/SystemUI/res/values-ar/tiles_states_strings.xml b/packages/SystemUI/res/values-ar/tiles_states_strings.xml index abb0d85ea1fb..aac5a355aa78 100644 --- a/packages/SystemUI/res/values-ar/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ar/tiles_states_strings.xml @@ -196,7 +196,9 @@ <item msgid="6419996398343291862">"متوقّفة"</item> <item msgid="5908720590832378783">"مفعّلة"</item> </string-array> - <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) --> - <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) --> - <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) --> + <string-array name="tile_states_desktopeffects"> + <item msgid="6253480000354287321">"غير متوفّر"</item> + <item msgid="6641673879029894995">"غير مفعَّل"</item> + <item msgid="5806682401126108403">"مفعَّل"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 784dfeeaeb07..17d24da6d327 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ব্লুটুথ সংযোগ হ’ল।"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ব্লুটুথ ডিভাইচৰ চিহ্ন"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ডিভাইচৰ সবিশেষ কনফিগাৰ কৰিবলৈ ক্লিক কৰক"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>। ডিভাইচৰ সবিশেষ কনফিগাৰ কৰক"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"আটাইবোৰ ডিভাইচ চাওক"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"নতুন ডিভাইচ পেয়াৰ কৰক"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"বেটাৰীৰ চাৰ্জৰ শতাংশ অজ্ঞাত।"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>ৰ লগত সংযোগ কৰা হ’ল।"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>ত সংযোগ হ’ল।"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"গোট বিস্তাৰ কৰক।"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"এপ্লিকেশ্বনটো খোলক।"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"সংযোগ হৈ থকা নাই।"</string> <string name="data_connection_roaming" msgid="375650836665414797">"ৰ\'মিং"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ইনপুট"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"শ্ৰৱণ যন্ত্ৰ"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"অন কৰি থকা হৈছে…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"উজ্জ্বলতা মিলাব নোৱাৰি কাৰণ সেয়া\n শীৰ্ষৰ এপটোৱে নিয়ন্ত্ৰণ কৰি আছে"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"স্বয়ং-ঘূৰ্ণন"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"স্বয়ং-ঘূৰ্ণন স্ক্ৰীন"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"অৱস্থান"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"মাল্টিটাস্কিং"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"সোঁফালে থকা এপ্টোৰ সৈতে বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰক"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"বাওঁফালে থকা এপ্টোৰ সৈতে বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰক"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"পূৰ্ণ স্ক্ৰীন ব্যৱহাৰ কৰক"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ডেস্কটপ ভিউ ব্যৱহাৰ কৰক"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰাৰ সময়ত সোঁফালে অথবা তলত থকা এপলৈ সলনি কৰক"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"বিভাজিত স্ক্ৰীন ব্যৱহাৰ কৰাৰ সময়ত বাওঁফালে অথবা ওপৰত থকা এপলৈ সলনি কৰক"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"বিভাজিত স্ক্ৰীনৰ ব্যৱহাৰ কৰাৰ সময়ত: কোনো এপ্ এখন স্ক্ৰীনৰ পৰা আনখনলৈ নিয়ক"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"শেহতীয়া এপ্সমূহ চাওক"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"এপ্সমূহ সলনি কৰক"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হ’ল"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"পৰৱৰ্তী"</string> <string name="gesture_error_title" msgid="469064941635578511">"পুনৰ চেষ্টা কৰক!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"উভতি যাওক"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"আপোনাৰ টাচ্চপেডত তিনিটা আঙুলি ব্যৱহাৰ কৰি বাওঁফাললৈ বা সোঁফাললৈ ছোৱাইপ কৰক"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 20f3e37beec1..a0eecd13b690 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth qoşulub."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth cihazı ikonası"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cihaz təfərrüatlarını konfiqurasiya etmək üçün klikləyin"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Cihaz detallarını konfiqurasiya edin"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Bütün cihazlara baxın"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Yeni cihaz birləşdirin"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batareyanın faizi naməlumdur."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> üzərindən qoşuldu."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> cihazına qoşulub."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Qrupu genişləndirin."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Tətbiqi açın."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Qoşulu deyil."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Rouminq"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Giriş"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Eşitmə aparatları"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktiv edilir..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Yuxarıdakı tətbiq tərəfindən idarə olunduğu üçün parlaqlığı tənzimləmək mümkün deyil"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Avtodönüş"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ekranın avtomatik dönməsi"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Məkan"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Çoxsaylı tapşırıq icrası"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Tətbiq sağda olmaqla bölünmüş ekranı istifadə edin"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Tətbiq solda olmaqla bölünmüş ekranı istifadə edin"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Tam ekrandan istifadə edin"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Masaüstü görünüşdən istifadə edin"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Bölünmüş ekran istifadə edərkən sağda və ya aşağıda tətbiqə keçin"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Bölünmüş ekran istifadə edərkən solda və ya yuxarıda tətbiqə keçin"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Bölünmüş ekran rejimində: tətbiqi birindən digərinə dəyişin"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Son tətbiqlərə baxın"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Başqa tətbiqə keçin"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hazırdır"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Növbəti"</string> <string name="gesture_error_title" msgid="469064941635578511">"Yenidən cəhd edin!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Geri qayıdın"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Taçpeddə üç barmaqla sola və ya sağa sürüşdürün"</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 69ebc70b6474..8921effd0cb6 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezani ste sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Povezani smo sa uređajem <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Proširite grupu."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Otvorite aplikaciju."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nije povezano."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roming"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Unos"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušni aparati"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Uključuje se..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ne možete da prilagodite osvetljenost jer je kontroliše aplikacija u vrhu"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatska rotacija"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatsko rotiranje ekrana"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obaveštenja niskog prioriteta"</string> <string name="other" msgid="429768510980739978">"Drugo"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"uključivanje ili isključivanje veličine pločice"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklonili pločicu"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodali pločicu na poslednju poziciju"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premestite pločicu"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Da biste pregledali nedavne aplikacije, prevucite nagore i zadržite sa tri prsta na tačpedu"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Da biste pogledali sve aplikacije, pritisnite taster radnji na tastaturi"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redigovano"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Otključajte za prikaz"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Otključajte da biste videli kôd"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno obrazovanje"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Koristite tačped za vraćanje nazad"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Prevucite ulevo ili udesno sa tri prsta. Dodirnite da biste videli više pokreta."</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 7c7c364fe502..3568586a75b6 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Падлучаны да <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Ёсць падключэнне да <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Разгарнуць групу."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Адкрыць праграму."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Няма падключэння."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роўмінг"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Увод"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слыхавыя апараты"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Уключэнне…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не ўдаецца адрэгуляваць яркасць, бо янакантралюецца асноўнай праграмай"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Аўтапаварот"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Аўтаматычны паварот экрана"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Месцазнаходжанне"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 0f2ab1783fc7..9d6be139efd2 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth е включен."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Икона за устройство с Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Кликнете, за да конфигурирате подробностите за устройството"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Конфигуриране на подробностите за устройството"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Вижте всички устройства"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Сдвояване на ново устройство"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Процентът на батерията е неизвестен."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Има връзка с <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Установена е връзка с/ъс <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Разгъване на групата."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Отваряне на приложението."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Няма връзка."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Вход"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слухови апарати"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Включва се..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Яркостта не може да се коригира, защото се контролира от приложението на екрана"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Авт. ориентация"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматично завъртане на екрана"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Местоположение"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Няколко задачи едновременно"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Използване на разделен екран с приложението вдясно"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Използване на разделен екран с приложението вляво"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Използване режима на цял екран"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Използване на изгледа за настолни компютри"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Превключване към приложението вдясно/отдолу в режима на разделен екран"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Превключване към приложението вляво/отгоре в режима на разделен екран"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"При разделен екран: замяна на дадено приложение с друго"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Показване на иконите за известията с нисък приоритет"</string> <string name="other" msgid="429768510980739978">"Друго"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"превключване на размера на панела"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"премахване на панел"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"добавяне на панела на последната позиция"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместване на панел"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Преглед на скорошните приложения"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Превключване на приложенията"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Напред"</string> <string name="gesture_error_title" msgid="469064941635578511">"Опитайте отново!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Плъзнете три пръста наляво или надясно по сензорния панел"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"За да прегледате скорошните приложения, плъзнете нагоре по сензорния панел с три пръста и задръжте"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"За да прегледате всичките си приложения, натиснете клавиша за действия на клавиатурата си"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Скрито"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Отключете за преглед"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Отключете, за да прегледате кода"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстуално обучение"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Използвайте сензорния панел, за да се върнете назад"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Плъзнете три пръста наляво или надясно. Докоснете, за да научите повече жестове."</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 10a1fd63c22e..636d4f28c18a 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ব্লুটুথ সংযুক্ত হয়েছে৷"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ব্লুটুথ ডিভাইসের আইকন"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ডিভাইসের বিবরণ কনফিগার করতে ক্লিক করুন"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>। ডিভাইসের বিবরণ কনফিগার করুন"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"সব ডিভাইস দেখুন"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"নতুন ডিভাইস পেয়ার করুন"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ব্যাটারি কত শতাংশ আছে তা জানা যায়নি।"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>এ সংযুক্ত হয়ে আছে।"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> এর সাথে সংযুক্ত৷"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"গ্রুপ বড় করুন।"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"অ্যাপ্লিকেশন খুলুন।"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"সংযুক্ত নয়৷"</string> <string name="data_connection_roaming" msgid="375650836665414797">"রোমিং"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ইনপুট"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"হিয়ারিং এড"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"চালু করা হচ্ছে…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"উজ্জ্বলতা টপ অ্যাপ নিয়ন্ত্রণ করায় এটিকে অ্যাডজাস্ট করা যাচ্ছে না"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"নিজে থেকে ঘুরবে"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"অটো-রোটেট স্ক্রিন"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"লোকেশন"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"মাল্টিটাস্কিং"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"ডানদিকে বর্তমান অ্যাপে স্প্লিট স্ক্রিন ব্যবহার করুন"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"বাঁদিকে বর্তমান অ্যাপে স্প্লিট স্ক্রিন ব্যবহার করুন"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ফুল-স্ক্রিন মোড ব্যবহার করুন"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ডেস্কটপ ভিউ ব্যবহার করুন"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"স্প্লিট স্ক্রিন ব্যবহার করার সময় ডানদিকের বা নিচের অ্যাপে পাল্টে নিন"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"স্প্লিট স্ক্রিন ব্যবহার করার সময় বাঁদিকের বা উপরের অ্যাপে পাল্টে নিন"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"\'স্প্লিট স্ক্রিন\' থাকাকালীন: একটি অ্যাপ থেকে অন্যটিতে পাল্টান"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"সম্প্রতি ব্যবহার করা হয়েছে এমন অ্যাপ দেখুন"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"অ্যাপ পরিবর্তন করুন"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"হয়ে গেছে"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"এরপর"</string> <string name="gesture_error_title" msgid="469064941635578511">"আবার চেষ্টা করুন!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ফিরে যান"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"আপনার টাচপ্যাডে তিনটি আঙুল ব্যবহার করে বাঁদিকে বা ডানদিকে সোয়াইপ করুন"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 8eadd4d5a6cc..331bac2fb24e 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -245,13 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth je povezan."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona Bluetooth uređaja"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknite da konfigurirate detalje uređaja"</string> - <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurirajte pojedinosti o uređaju"</string> - <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Pogledajte sve uređaje"</string> - <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Upari novi uređaj"</string> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfiguracija detalja o uređaju"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Prikaz svih uređaja"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Uparivanje novog uređaja"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Postotak napunjenosti baterije nije poznat"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezan na <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Povezan na <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Proširivanje grupe."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Otvaranje aplikacije."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nije povezano."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roming"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ulaz"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušni aparati"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Uključivanje…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nije moguće podesiti osvijetljenost jer njome upravlja aplikacija pri vrhu"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatsko rotiranje"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatsko rotiranje ekrana"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string> @@ -898,8 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Korištenje podijeljenog ekrana s aplikacijom na desnoj strani"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Korištenje podijeljenog ekrana s aplikacijom na lijevoj strani"</string> - <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Upotreba prikaza na cijelom zaslonu"</string> - <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Upotreba prikaza na računalu"</string> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Korištenje prikaza preko cijelog ekrana"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Korištenje prikaza na računaru"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Prelazak u aplikaciju desno ili ispod uz podijeljeni ekran"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Pređite u aplikaciju lijevo ili iznad dok koristite podijeljeni ekran"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Za vrijeme podijeljenog ekrana: zamjena jedne aplikacije drugom"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavještenja niskog prioriteta"</string> <string name="other" msgid="429768510980739978">"Ostalo"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"promjenu veličine pločice"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodavanje kartice na posljednji položaj"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pomjeranje kartice"</string> @@ -1502,7 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Prikaži nedavne aplikacije"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Promijenite aplikaciju"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotovo"</string> - <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Dalje"</string> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Naprijed"</string> <string name="gesture_error_title" msgid="469064941635578511">"Pokušajte ponovo!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Nazad"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Prevucite ulijevo ili udesno s tri prsta na dodirnoj podlozi"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Da pregledate nedavne aplikacije, prevucite nagore i zadržite s tri prsta na dodirnoj podlozi"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Da pregledate sve aplikacije, pritisnite tipku radnji na tastaturi"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redigovano"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Otključajte za prikaz"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Otključajte za prikaz koda"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno obrazovanje"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Koristite dodirnu podlogu da se vratite"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Prevucite ulijevo ili udesno s tri prsta. Dodirnite da naučite više pokreta."</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 8e4da1db7327..01d769249d9f 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connectat."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icona de dispositiu Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Fes clic per configurar els detalls del dispositiu"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configura els detalls del dispositiu"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Mostra tots els dispositius"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Vincula un dispositiu nou"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Es desconeix el percentatge de bateria."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"S\'ha connectat a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Està connectat amb <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Desplega el grup."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Obre l\'aplicació."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Sense connexió."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Itinerància"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audiòfons"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"S\'està activant…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"No es pot ajustar la brillantor perquè està controlada per l\'aplicació superior"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Gira automàticament"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Gira la pantalla automàticament"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicació"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasca"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Utilitzar la pantalla dividida amb l\'aplicació a la dreta"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Utilitzar la pantalla dividida amb l\'aplicació a l\'esquerra"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Utilitza la pantalla completa"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Utilitza la visualització per a ordinadors"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Canvia a l\'aplicació de la dreta o de sota amb la pantalla dividida"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Canvia a l\'aplicació de l\'esquerra o de dalt amb la pantalla dividida"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Durant el mode de pantalla dividida: substitueix una app per una altra"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostra les icones de notificació amb prioritat baixa"</string> <string name="other" msgid="429768510980739978">"Altres"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"commutar la mida de la icona"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"suprimir el mosaic"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"afegir una icona a la darrera posició"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mou el mosaic"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Mostra les aplicacions recents"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Canviar d\'aplicació"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fet"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Següent"</string> <string name="gesture_error_title" msgid="469064941635578511">"Torna-ho a provar"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Torna"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Llisca cap a l\'esquerra o cap a la dreta amb tres dits al ratolí tàctil"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Per veure les aplicacions recents, llisca cap amunt amb tres dits i mantén premut al ratolí tàctil"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Per veure totes les aplicacions, prem la tecla d\'acció al teclat"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Emmascarat"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Desbloqueja per veure"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Desbloqueja per veure el codi"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educació contextual"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Utilitza el ratolí tàctil per tornar enrere"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Fes lliscar tres dits cap a l\'esquerra o cap a la dreta. Toca per aprendre més gestos."</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 6d38055c0f86..15e4703cb702 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Rozhraní Bluetooth je připojeno."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona zařízení Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknutím nakonfigurujete podrobnosti o zařízení"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurovat podrobnosti o zařízení"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Zobrazit všechna zařízení"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Spárovat nové zařízení"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procento baterie není známé."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Připojeno k zařízení <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Jste připojeni k zařízení <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Rozbalit skupinu."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Otevřít aplikaci."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nepřipojeno."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vstup"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Naslouchátka"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Zapínání…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Jas nelze upravit, protože ho řídí hlavní aplikace"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autom. otáčení"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatické otáčení obrazovky"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Poloha"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Použít rozdělenou obrazovku s aplikací vpravo"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Použít rozdělenou obrazovku s aplikací vlevo"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Použít celou obrazovku"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Použít zobrazení na počítači"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Přepnout na aplikaci vpravo nebo dole v režimu rozdělené obrazovky"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Přepnout na aplikaci vlevo nebo nahoře v režimu rozdělené obrazovky"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"V režimu rozdělené obrazovky: nahradit jednu aplikaci druhou"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobrazit nedávné aplikace"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Přepnout aplikace"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Další"</string> <string name="gesture_error_title" msgid="469064941635578511">"Zkuste to znovu."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Zpět"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Přejeďte po touchpadu třemi prsty doleva nebo doprava"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index a5801cb24e4b..ab87c4672797 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth tilsluttet."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon for Bluetooth-enhed"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik for at konfigurere enhedsoplysninger"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurer enhedsoplysninger"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Se alle enheder"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Par ny enhed"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batteriniveauet er ukendt."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Forbundet med <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Forbundet til <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Udvid gruppe."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Åbn app."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Ikke tilsluttet."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Høreapparater"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktiverer…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Lysstyrken kan ikke justeres, fordi den styres af den øverste app"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Roter automatisk"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Roter skærmen automatisk"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokation"</string> @@ -586,7 +588,7 @@ <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"Når du caster hele din skærm, er alt på skærmen synligt. Vær derfor forsigtig med ting såsom adgangskoder, betalingsoplysninger, beskeder, billeder, lyd og video."</string> <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"Når du caster en app, er alt, der vises eller afspilles i appen, synligt. Vær derfor forsigtig med ting såsom adgangskoder, betalingsoplysninger, beskeder, billeder, lyd og video."</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"Cast skærm"</string> - <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"Vælg den app, du vil caste fra"</string> + <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"Vælg den app, du caste"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"Vil du begynde at dele?"</string> <string name="media_projection_entry_generic_permission_dialog_warning_entire_screen" msgid="5407906851409410209">"Når du deler, optager eller caster, har Android adgang til alt, der er synligt på din skærm eller afspilles på din enhed. Vær derfor forsigtig med ting såsom adgangskoder, betalingsoplysninger, beskeder, billeder, lyd og video."</string> <string name="media_projection_entry_generic_permission_dialog_warning_single_app" msgid="3454859977888159495">"Når du deler, optager eller caster en app, har Android adgang til alt, der vises eller afspilles i den pågældende app. Vær derfor forsigtig med ting såsom adgangskoder, betalingsoplysninger, beskeder, billeder, lyd og video."</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Brug opdelt skærm med appen til højre"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Brug opdelt skærm med appen til venstre"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Brug fuld skærm"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Brug computervenlig visning"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Skift til en app til højre eller nedenfor, når du bruger opdelt skærm"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Skift til en app til venstre eller ovenfor, når du bruger opdelt skærm"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Ved opdelt skærm: Udskift én app med en anden"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se seneste apps"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Skift mellem apps"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Udfør"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Næste"</string> <string name="gesture_error_title" msgid="469064941635578511">"Prøv igen!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gå tilbage"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Stryg til venstre eller højre med tre fingre på touchpladen"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 132de74dcca9..99e32ecd3d52 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Mit Bluetooth verbunden"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Symbol des Bluetooth-Geräts"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klicke, um das Gerätedetail zu konfigurieren"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Gerätedetail konfigurieren."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Alle Geräte anzeigen"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Neues Gerät koppeln"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akkustand unbekannt."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Mit <xliff:g id="BLUETOOTH">%s</xliff:g> verbunden"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Verbunden mit <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Gruppe erweitern."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Anwendung öffnen."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nicht verbunden"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Eingabe"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hörgerät"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Wird aktiviert…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Die Helligkeit kann nicht angepasst werden, weil sie von der obersten App gesteuert wird"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autom. drehen"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Bildschirm automatisch drehen"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Standort"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Splitscreen mit der App auf der rechten Seite nutzen"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Splitscreen mit der App auf der linken Seite nutzen"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Vollbildmodus verwenden"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Desktop-Ansicht verwenden"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Im Splitscreen-Modus zu einer App rechts oder unten wechseln"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Im Splitscreen-Modus zu einer App links oder oben wechseln"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Im Splitscreen: eine App durch eine andere ersetzen"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Letzte Apps aufrufen"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Zwischen Apps wechseln"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Fertig"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Weiter"</string> <string name="gesture_error_title" msgid="469064941635578511">"Noch einmal versuchen"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Zurück"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Wische mit drei Fingern auf dem Touchpad nach links oder rechts"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index a628e214cd9f..d3bfc99bea7a 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Το Bluetooth είναι συνδεδεμένο."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Εικονίδιο συσκευής Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Κάντε κλικ για να διαμορφώσετε τις λεπτομέρειες συσκευής"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Διαμόρφωση λεπτομερειών συσκευής"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Εμφάνιση όλων των συσκευών"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Σύζευξη νέας συσκευής"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Άγνωστο ποσοστό μπαταρίας."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Συνδέθηκε στο <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Συνδέθηκε σε <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Αναπτύξτε την ομάδα."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Ανοίξτε την εφαρμογή."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Μη συνδεδεμένο"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Περιαγωγή"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Είσοδος"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Βοηθήματα ακοής"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ενεργοποίηση…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Δεν είναι δυνατή η προσαρμογή της φωτεινότητας, επειδή ελέγχεται από την εφαρμογή στην κορυφή"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Αυτόματη περιστροφή"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Αυτόματη περιστροφή οθόνης"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Τοποθεσία"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Πολυδιεργασία"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Χρήση διαχωρισμού οθόνης με την εφαρμογή στα δεξιά"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Χρήση διαχωρισμού οθόνης με την εφαρμογή στα αριστερά"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Χρήση πλήρους οθόνης"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Χρήση προβολής για υπολογιστές"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Εναλλαγή στην εφαρμογή δεξιά ή κάτω κατά τη χρήση διαχωρισμού οθόνης"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Εναλλαγή σε εφαρμογή αριστερά ή επάνω κατά τη χρήση διαχωρισμού οθόνης"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Κατά τον διαχωρισμό οθόνης: αντικατάσταση μιας εφαρμογής με άλλη"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Εμφάνιση εικονιδίων ειδοποιήσεων χαμηλής προτεραιότητας"</string> <string name="other" msgid="429768510980739978">"Άλλο"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"εναλλαγή μεγέθους για το πλακάκι"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"κατάργηση πλακιδίου"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"προσθήκη πλακιδίου στην τελευταία θέση"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Μετακίνηση πλακιδίου"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Προβολή πρόσφατων εφαρμογών"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Εναλλαγή μεταξύ εφαρμογών"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Τέλος"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Επόμενο"</string> <string name="gesture_error_title" msgid="469064941635578511">"Δοκιμάστε ξανά!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Επιστροφή"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Σύρετε προς τα αριστερά ή τα δεξιά με τρία δάχτυλα στην επιφάνεια αφής"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Για πρόσφατες εφαρμογές, σαρώστε προς τα πάνω με τρία δάχτυλα και κρατήστε τα στην επιφάνεια αφής"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Για να δείτε όλες τις εφαρμογές, πιέστε το πλήκτρο ενέργειας στο πληκτρολόγιό σας"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Αποκρύφτηκε"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Ξεκλειδώστε για προβολή"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Ξεκλειδώστε για προβολή κωδικού"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Εκπαίδευση με βάση τα συμφραζόμενα"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Χρήση της επιφάνειας αφής για επιστροφή"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Σύρετε προς τα αριστερά ή τα δεξιά με τρία δάχτυλα. Πατήστε για να μάθετε περισσότερες κινήσεις."</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 1b36a7cc4826..c2537110ba58 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configure device detail"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"See all devices"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Pair new device"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expand group."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Open application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-tasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Use fullscreen"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Use desktop view"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to the app on the right or below while using split screen"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to the app on the left or above while using split screen"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: Replace an app from one to another"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Next"</string> <string name="gesture_error_title" msgid="469064941635578511">"Try again."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe left or right using three fingers on your touchpad"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index c6ba039c676d..92e9d8d00b9d 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -252,6 +252,8 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expand group."</string> + <string name="accessibility_add_device_to_group" msgid="5446422960697860806">"Add device to group."</string> + <string name="accessibility_remove_device_from_group" msgid="3114694270949142228">"Remove device from group."</string> <string name="accessibility_open_application" msgid="1749126077501259712">"Open application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -329,7 +331,7 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string> + <string name="quick_settings_brightness_unable_adjust_msg" msgid="4124028416057617517">"Can\'t adjust brightness because it\'s being controlled by the top app"</string> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 1b36a7cc4826..c2537110ba58 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configure device detail"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"See all devices"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Pair new device"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expand group."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Open application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-tasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Use fullscreen"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Use desktop view"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to the app on the right or below while using split screen"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to the app on the left or above while using split screen"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: Replace an app from one to another"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Next"</string> <string name="gesture_error_title" msgid="469064941635578511">"Try again."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe left or right using three fingers on your touchpad"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 1b36a7cc4826..c2537110ba58 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connected."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth device icon"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Click to configure device detail"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configure device detail"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"See all devices"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Pair new device"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Battery percentage unknown."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connected to <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connected to <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expand group."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Open application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Not connected."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hearing aids"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Turning on…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Can\'t adjust brightness because it\'s being controlled by the top app"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Auto-rotate"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Auto-rotate screen"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Location"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-tasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Use split screen with app on the right"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Use split screen with app on the left"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Use fullscreen"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Use desktop view"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Switch to the app on the right or below while using split screen"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Switch to the app on the left or above while using split screen"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"During split screen: Replace an app from one to another"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"View recent apps"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Switch apps"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Done"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Next"</string> <string name="gesture_error_title" msgid="469064941635578511">"Try again."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Go back"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe left or right using three fingers on your touchpad"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index fbf01b8a8a2a..7f096712c6b8 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícono de dispositivo Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Haz clic para configurar los detalles del dispositivo"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>; configura los detalles del dispositivo"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Ver todos los dispositivos"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Vincular dispositivo nuevo"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Se desconoce el porcentaje de la batería."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expandir grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicación."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"No conectado"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audífonos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activando…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"La app superior controla el brillo,por lo que no se puede ajustar"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Girar la pantalla automáticamente"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicación"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Tareas múltiples"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar la pantalla dividida con la app a la derecha"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar la pantalla dividida con la app a la izquierda"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Usar la pantalla completa"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Usar la vista para computadoras de escritorio"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Ubicar la app a la derecha o abajo cuando usas la pantalla dividida"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Ubicar la app a la izquierda o arriba cuando usas la pantalla dividida"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Durante pantalla dividida: Reemplaza una app con otra"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar íconos de notificaciones con prioridad baja"</string> <string name="other" msgid="429768510980739978">"Otros"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"alternar el tamaño del mosaico"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarjeta"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"agregar tarjeta a la última posición"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover la tarjeta"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver apps recientes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambiar de app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Listo"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Siguiente"</string> <string name="gesture_error_title" msgid="469064941635578511">"Vuelve a intentarlo"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atrás"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Desliza hacia la izquierda o la derecha con tres dedos en el panel táctil"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver las apps recientes, desliza hacia arriba con tres dedos y mantén presionado el panel táctil"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas las apps, presiona la tecla de acción en el teclado"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Oculto"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Desbloquea el dispositivo para ver"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Desbloquea el dispositivo para ver el código"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educación contextual"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Usa el panel táctil para ir hacia atrás"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Desliza hacia la izquierda o la derecha con tres dedos. Presiona para aprender más gestos."</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 0af9fbf98bfd..531d1df02532 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icono de dispositivo Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Haz clic para configurar la información del dispositivo"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configura los detalles del dispositivo."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Consultar todos los dispositivos"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Emparejar nuevo dispositivo"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentaje de batería desconocido."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Mostrar grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicación."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"No conectado."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audífonos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activando…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"No se puede ajustar el brillo porque la aplicación superior lo está controlando"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Girar pantalla automáticamente"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Ubicación"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarea"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar la pantalla dividida con la aplicación a la derecha"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar la pantalla dividida con la aplicación a la izquierda"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Usar pantalla completa"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Usar vista para ordenador"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Cambiar a la aplicación de la derecha o de abajo en pantalla dividida"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Cambiar a la app de la izquierda o de arriba en pantalla dividida"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Con pantalla dividida: reemplazar una aplicación por otra"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver aplicaciones recientes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambiar de aplicación"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hecho"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Siguiente"</string> <string name="gesture_error_title" msgid="469064941635578511">"Vuelve a intentarlo."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atrás"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Desliza hacia la izquierda o la derecha con tres dedos en el panel táctil"</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index bb77e967c1a5..30b93b0dc578 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth on ühendatud."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-seadme ikoon"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klõpsake seadme üksikasjade konfigureerimiseks"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Seadme üksikasjade seadistamine"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Kõigi seadmete kuvamine"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Uue seadme sidumine"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Aku laetuse protsent on teadmata."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ühendatud: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Ühendatud ülekandega <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Grupi laiendamine."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Rakenduse avamine."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Ühendus puudub."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Rändlus"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Sisend"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Kuuldeaparaadid"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Sisselülitamine …"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Heledust ei saa reguleerida, kuna seda juhib ülemine rakendus"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autom. pööramine"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Kuva automaatne pööramine"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Asukoht"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitegumtöö"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Jagatud ekraanikuva kasutamine, rakendus kuvatakse paremal"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Jagatud ekraanikuva kasutamine, rakendus kuvatakse vasakul"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Lülita täisekraanile"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Kasuta arvutivaadet"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Paremale või alumisele rakendusele lülitamine jagatud ekraani ajal"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Vasakule või ülemisele rakendusele lülitamine jagatud ekraani ajal"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Ekraanikuva jagamise ajal: ühe rakenduse asendamine teisega"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Hiljutiste rakenduste vaatamine"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Rakenduste vahetamine"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Järgmine"</string> <string name="gesture_error_title" msgid="469064941635578511">"Proovige uuesti!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Tagasi"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pühkige puuteplaadil kolme sõrmega vasakule või paremale"</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index cb8e034d2828..50f875013255 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetootha konektatuta."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth bidezko gailuaren ikonoa"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Gailuaren xehetasuna konfiguratzeko, sakatu hau"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfiguratu gailuaren xehetasunak."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Ikusi gailu guztiak"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Parekatu beste gailu bat"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Bateriaren ehunekoa ezezaguna da."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> gailura konektatuta."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Hona konektatuta: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Zabaldu taldea."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Ireki aplikazioa."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Konektatu gabe."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Ibiltaritza"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Sarrera"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audifonoak"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktibatzen…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ezin da doitu argitasuna,gaineko aplikazioak kontrolatzen duelako"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Biratze automatikoa"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Biratu pantaila automatikoki"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Kokapena"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Zeregin bat baino gehiago aldi berean exekutatzea"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Erabili pantaila zatitua eta ezarri aplikazio hau eskuinean"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Erabili pantaila zatitua eta ezarri aplikazio hau ezkerrean"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Erabili pantaila osoa"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Erabili ordenagailuetarako ikuspegia"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Aldatu eskuineko edo beheko aplikaziora pantaila zatitua erabiltzean"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Aldatu ezkerreko edo goiko aplikaziora pantaila zatitua erabiltzean"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Pantaila zatituan zaudela, ordeztu aplikazio bat beste batekin"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ikusi azkenaldiko aplikazioak"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Aldatu aplikazioa"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Eginda"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Hurrengoa"</string> <string name="gesture_error_title" msgid="469064941635578511">"Saiatu berriro!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Egin atzera"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pasatu 3 hatz ezkerrera edo eskuinera ukipen-panelean"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 7fd5551a1e2a..d53805d5b376 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"بلوتوث متصل است."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"نماد دستگاه بلوتوث"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"برای پیکربندی جزئیات دستگاه کلیک کنید"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. پیکربندی جزئیات دستگاه"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"دیدن تمام دستگاهها"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"جفت کردن دستگاه جدید"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"درصد شارژ باتری مشخص نیست."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"به <xliff:g id="BLUETOOTH">%s</xliff:g> متصل شد."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"به <xliff:g id="CAST">%s</xliff:g> متصل شد."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"گروه را از هم باز میکند."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"برنامه را باز میکند."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"متصل نیست."</string> <string name="data_connection_roaming" msgid="375650836665414797">"فراگردی"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ورودی"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"سمعک"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"روشن کردن…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"نمیتوان روشنایی را تنظیم کرد زیرا برنامه بالایی آن را کنترل میکند"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"چرخش خودکار"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"چرخش خودکار صفحهنمایش"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"مکان"</string> @@ -614,7 +616,7 @@ <string name="media_projection_action_text" msgid="3634906766918186440">"اکنون شروع کنید"</string> <string name="empty_shade_text" msgid="8935967157319717412">"اعلانی موجود نیست"</string> <string name="no_unseen_notif_text" msgid="395512586119868682">"اعلان جدیدی وجود ندارد"</string> - <string name="adaptive_notification_edu_hun_title" msgid="2594042455998795122">"«استراحت اعلانها» اکنون روشن است"</string> + <string name="adaptive_notification_edu_hun_title" msgid="2594042455998795122">"«آرامسازی اعلانها» اکنون روشن است"</string> <string name="adaptive_notification_edu_hun_text" msgid="7743367744129536610">"وقتی بهطور همزمان تعداد بسیار زیادی اعلان دریافت کنید، میزان صدای دستگاه و هشدارها بهطور خودکار تا ۲ دقیقه کاهش مییابد."</string> <string name="go_to_adaptive_notification_settings" msgid="2423690125178298479">"خاموش کردن"</string> <string name="unlock_to_see_notif_text" msgid="7439033907167561227">"برای دیدن اعلانهای قبلی قفل را باز کنید"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"چندوظیفگی"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"استفاده از صفحهٔ دونیمه با قرار گرفتن برنامه در سمت راست"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"استفاده از صفحهٔ دونیمه با قرار گرفتن برنامه در سمت چپ"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"استفاده از حالت تمامصفحه"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"استفاده از نمای ویژه رایانه رومیزی"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"رفتن به برنامه سمت راست یا پایین درحین استفاده از صفحهٔ دونیمه"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"رفتن به برنامه سمت چپ یا بالا درحین استفاده از صفحهٔ دونیمه"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"درحین صفحهٔ دونیمه: برنامهای را با دیگری جابهجا میکند"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"نمایش نمادهای اعلان کماهمیت"</string> <string name="other" msgid="429768510980739978">"موارد دیگر"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"تغییر اندازه کاشی"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"برداشتن کاشی"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"افزودن کاشی به آخرین جایگاه"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"انتقال کاشی"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"مشاهده برنامههای اخیر"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"جابهجایی بین برنامهها"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"تمام"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"بعدی"</string> <string name="gesture_error_title" msgid="469064941635578511">"دوباره امتحان کنید!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"برگشتن"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"با سه انگشت روی صفحه لمسی تند به چپ یا راست بکشید."</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"برای مشاهده برنامههای اخیر، در صفحه لمسی با سه انگشت تند بهبالا بکشید و نگه دارید"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"برای مشاهده همه برنامهها، دکمه کنش در صفحهکلید را فشار دهید"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"محوشده"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"برای مشاهده، قفل دستگاه را باز کنید"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"برای مشاهده کد، قفل دستگاه را باز کنید"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"آموزش زمینهای"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"برای برگشتن از صفحه لمسی استفاده کنید"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"با سه انگشت تند بهچپ یا راست بکشید. برای آشنایی با اشارههای بیشتر، تکضرب بزنید."</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 647134f59028..fa9468df5fa0 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -247,16 +247,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth yhdistetty."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-laitekuvake"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Määritä laitteen asetukset klikkaamalla"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Määritä laitteen tiedot"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Katso kaikki laitteet"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Muodosta uusi laitepari"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akun varaustaso ei tiedossa."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Yhteys: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Yhdistetty kohteeseen <xliff:g id="CAST">%s</xliff:g>"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Laajenna ryhmä."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Avaa sovellus."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Ei yhteyttä."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -334,7 +335,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Syöttölaite"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Kuulolaitteet"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Otetaan käyttöön…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kirkkautta ei voi säätää, koska ensisijainen sovellus ohjaa sitä"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automaattinen kääntö"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Käännä näyttöä automaattisesti."</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Sijainti"</string> @@ -903,10 +905,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitaskaus"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Käytä jaettua näyttöä niin, että sovellus on oikealla"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Käytä jaettua näyttöä niin, että sovellus on vasemmalla"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Käytä koko näytön tilaa"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Käytä tietokonenäkymää"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Vaihda sovellukseen oikealla tai alapuolella jaetussa näytössä"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Vaihda sovellukseen vasemmalla tai yläpuolella jaetussa näytössä"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Jaetun näytön aikana: korvaa sovellus toisella"</string> @@ -1509,8 +1509,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Katso viimeisimmät sovellukset"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Vaihda sovellusta"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Valmis"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Seuraava"</string> <string name="gesture_error_title" msgid="469064941635578511">"Yritä uudelleen."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Takaisin"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pyyhkäise kosketuslevyllä vasemmalle tai oikealle kolmella sormella"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 299f5a513fb9..97702f0847e9 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth connecté"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icône de l\'appareil Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cliquez pour configurer les détails de l\'appareil"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configurer les détails de l\'appareil"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Voir tous les appareils"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Associer un nouvel appareil"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pourcentage de la pile inconnu."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Développer le groupe."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Ouvrir l\'appli."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Non connecté"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Itinérance"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrée"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Prothèses auditives"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activation en cours…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossible de régler la luminosité, car elle est contrôlée par l\'appli principale"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotation auto"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotation automatique de l\'écran"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Localisation"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitâche"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Utiliser l\'Écran divisé avec l\'appli à droite"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Utiliser l\'Écran divisé avec l\'appli à gauche"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Utiliser le mode plein écran"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Utiliser l\'affichage sur ordinateur de bureau"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Passer à l\'appli à droite ou en dessous avec l\'Écran divisé"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Passer à l\'appli à gauche ou au-dessus avec l\'Écran divisé"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"En mode d\'écran divisé : remplacer une appli par une autre"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Afficher les applis récentes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Changer d\'appli"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"OK"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Suivant"</string> <string name="gesture_error_title" msgid="469064941635578511">"Réessayez!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Retour"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Balayez votre pavé tactile vers la gauche ou vers la droite avec trois doigts"</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index a4fa4d0caf27..1fefa2df4793 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connecté à : <xliff:g id="BLUETOOTH">%s</xliff:g>"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connecté à <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Développer le groupe."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Ouvrir l\'application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Non connecté"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Itinérance"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrée"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Appareils auditifs"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activation…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossible d\'ajuster la luminosité, car celle-ci est contrôlée par l\'appli principale"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotation auto"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotation automatique de l\'écran"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Localisation"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Afficher les icônes de notification à faible priorité"</string> <string name="other" msgid="429768510980739978">"Autre"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"activer/désactiver la taille du bloc"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"supprimer le bloc"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ajouter le bloc à la dernière position"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Déplacer le bloc"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Pour afficher les applis récentes, balayez vers le haut avec trois doigts sur le pavé tactile et maintenez-les."</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Pour afficher toutes vos applis, appuyez sur la touche d\'action de votre clavier"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Masqué"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Déverrouiller pour afficher"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Déverrouiller pour afficher le code"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Éducation contextuelle"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Utilisez votre pavé tactile pour revenir en arrière"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Balayez vers la gauche ou la droite en utilisant trois doigts. Appuyez pour apprendre d\'autres gestes."</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 82ba5dcff44a..d9a991e29698 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icona do dispositivo Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Facer clic para configurar os detalles do dispositivo"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configura o detalle do dispositivo"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Mira todos os dispositivos"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Vincula un dispositivo novo"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Descoñécese a porcentaxe da batería."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Dispositivo conectado: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Despregar o grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir a aplicación."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Non conectada"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Itinerancia"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Audiófonos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Activando…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Non se pode axustar o brillo porque o controla a aplicación principal"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Xirar automaticamente"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Xirar pantalla automaticamente"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Localización"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarefa"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar pantalla dividida coa aplicación na dereita"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar pantalla dividida coa aplicación na esquerda"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Usar a pantalla completa"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Usar a vista para ordenadores"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Cambiar á aplicación da dereita ou de abaixo coa pantalla dividida"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Cambiar á aplicación da esquerda ou de arriba coa pantalla dividida"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"En modo de pantalla dividida: Substituír unha aplicación por outra"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar iconas das notificacións que teñan baixa prioridade"</string> <string name="other" msgid="429768510980739978">"Outros"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"activar/desactivar o tamaño do recadro"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarxeta"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"engadir o atallo á última posición"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover tarxeta"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Consultar aplicacións recentes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Cambiar de aplicación"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Feito"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Seguinte"</string> <string name="gesture_error_title" msgid="469064941635578511">"Téntao de novo."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Volver"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Pasa tres dedos cara á esquerda ou cara á dereita no panel táctil"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver as aplicacións recentes, pasa tres dedos cara arriba no panel táctil e mantenos premidos"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas as aplicacións, preme a tecla de acción do teclado"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Contido ocultado"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Desbloquea para ver a información"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Desbloquea para ver o código"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Información contextual"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Usa o panel táctil para volver"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Pasa tres dedos cara á esquerda ou cara á dereita. Toca para obter máis información sobre os xestos."</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 1fa46e658e36..55f6e947197e 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"બ્લૂટૂથ કનેક્ટ થયું."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"બ્લૂટૂથ ડિવાઇસનું આઇકન"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ડિવાઇસની વિગત ગોઠવવા માટે ક્લિક કરો"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. ડિવાઇસની વિગત ગોઠવો"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"બધા ડિવાઇસ જુઓ"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"નવા ડિવાઇસ સાથે જોડાણ કરો"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"બૅટરીની ટકાવારી અજાણ છે."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> થી કનેક્ટ થયાં."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> થી કનેક્ટ કરેલ."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ગ્રૂપને મોટું કરો."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ઍપ્લિકેશન ખોલો."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"કનેક્ટ થયેલું નથી."</string> <string name="data_connection_roaming" msgid="375650836665414797">"રોમિંગ"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ઇનપુટ"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"સાંભળવામાં મદદ આપતા યંત્રો"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ચાલુ કરી રહ્યાં છીએ…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"બ્રાઇટનેસ ગોઠવી શકતા નથી કારણ કે તે લોકપ્રિય ઍપ દ્વારા નિયંત્રિત કરવામાં આવી રહી છે"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ઑટો રોટેટ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ઑટો રોટેટ સ્ક્રીન"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"લોકેશન"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"એકસાથે એકથી વધુ કાર્યો કરવા"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"હાલની ઍપને જમણી બાજુએ રાખીને વિભાજિત સ્ક્રીનનો ઉપયોગ કરો"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"હાલની ઍપને ડાબી બાજુએ રાખીને વિભાજિત સ્ક્રીનનો ઉપયોગ કરો"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"પૂર્ણ સ્ક્રીનનો ઉપયોગ કરો"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ડેસ્કટૉપ વ્યૂનો ઉપયોગ કરો"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"વિભાજિત સ્ક્રીનનો ઉપયોગ કરતી વખતે જમણી બાજુ કે નીચેની ઍપ પર સ્વિચ કરો"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"વિભાજિત સ્ક્રીનનો ઉપયોગ કરતી વખતે ડાબી બાજુની કે ઉપરની ઍપ પર સ્વિચ કરો"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"વિભાજિત સ્ક્રીન દરમિયાન: એક ઍપને બીજી ઍપમાં બદલો"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"તાજેતરની ઍપ જુઓ"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ઍપ સ્વિચ કરો"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"થઈ ગયું"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"આગળ"</string> <string name="gesture_error_title" msgid="469064941635578511">"ફરી પ્રયાસ કરો!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"પાછા જાઓ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"તમારા ટચપૅડ પર ત્રણ આંગળીનો ઉપયોગ કરીને ડાબે કે જમણે સ્વાઇપ કરો"</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index be1ca7d5498b..8878c1448abf 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -155,7 +155,7 @@ <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"फ़िलहाल, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> पर कास्ट किया जा रहा है"</string> <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"फ़िलहाल, आस-पास मौजूद किसी डिवाइस पर कास्ट किया जा रहा है"</string> <string name="cast_to_other_device_stop_dialog_button" msgid="6420183747435521834">"कास्ट करना बंद करें"</string> - <string name="close_dialog_button" msgid="4749497706540104133">"बंद करें"</string> + <string name="close_dialog_button" msgid="4749497706540104133">"अभी नहीं"</string> <string name="issuerecord_title" msgid="286627115110121849">"समस्या रिकॉर्ड करने वाला टूल"</string> <string name="issuerecord_background_processing_label" msgid="1666840264959336876">"समस्या का डेटा प्रोसेस हो रहा"</string> <string name="issuerecord_channel_description" msgid="6142326363431474632">"समस्या का डेटा इकट्ठा करने के लिए बैकग्राउंड में जारी गतिविधि की सूचना"</string> @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> से कनेक्ट किया गया."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> से कनेक्ट है."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ग्रुप को बड़ा करें."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ऐप्लिकेशन खोलें."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"कनेक्ट नहीं है."</string> <string name="data_connection_roaming" msgid="375650836665414797">"रोमिंग"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"कान की मशीनें"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ब्लूटूथ चालू हो रहा है…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"स्क्रीन की रोशनी को एडजस्ट नहीं किया जा सकता, क्योंकि इसे टॉप ऐप्लिकेशन कंट्रोल कर रहा है"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ऑटो-रोटेट"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"स्क्रीन का अपने-आप दिशा बदलना (ऑटो-रोटेट)"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"जगह की जानकारी"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 5c7ee2468043..054f3947ff4d 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Spojen na <xliff:g id="BLUETOOTH">%s</xliff:g> ."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Povezani ste sa sljedećim uređajem: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Proširite grupu."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Otvorite aplikaciju."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nije povezano."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Unos"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušna pomagala"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Uključivanje…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Svjetlina se ne može prilagoditi jer njome upravlja aplikacija pri vrhu"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatsko zakretanje"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatsko zakretanje zaslona"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavijesti niskog prioriteta"</string> <string name="other" msgid="429768510980739978">"Ostalo"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"promjenu veličine pločice"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"dodavanje kartice na posljednji položaj"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premještanje kartice"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Za prikaz nedavnih aplikacija prijeđite prema gore trima prstima i zadržite pritisak na dodirnoj podlozi"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Za prikaz svojih svih aplikacija pritisnite tipku za radnju na tipkovnici"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Redaktirano"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Otključajte za prikaz"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Otključajte za prikaz koda"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstualno obrazovanje"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Upotrijebite dodirnu podlogu za povratak"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Prijeđite ulijevo ili udesno trima prstima. Dodirnite da biste naučili više pokreta."</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 421570cf8bca..03f1bc6407d8 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth csatlakoztatva."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth-eszköz ikon"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kattintson az eszköz beállításainak megadásához"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Eszközadatok konfigurálása"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Az összes eszköz megjelenítése"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Új eszköz párosítása"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Az akkumulátor töltöttségi szintje ismeretlen."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Csatlakoztatva a következőhöz: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Csatlakozva a következőhöz: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Csoport kibontása."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Alkalmazás megnyitása."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nincs csatlakozva."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Bevitel"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hallókészülék"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Bekapcsolás…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nem lehet módosítani a fényerőt, mert a felső alkalmazás vezérli"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatikus elforgatás"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatikus képernyőforgatás"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Tartózkodási hely"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Osztott képernyő használata, az alkalmazás a jobb oldalon van"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Osztott képernyő használata, az alkalmazás a bal oldalon van"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Teljes képernyő használata"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Asztali nézet használata"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Váltás a jobb oldalt, illetve lent lévő appra osztott képernyő esetén"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Váltás a bal oldalt, illetve fent lévő appra osztott képernyő esetén"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Osztott képernyőn: az egyik alkalmazás lecserélése egy másikra"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Legutóbbi alkalmazások megtekintése"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Váltás az alkalmazások között"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kész"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Következő"</string> <string name="gesture_error_title" msgid="469064941635578511">"Próbálja újra"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Vissza"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Csúsztassa gyorsan három ujját balra vagy jobbra az érintőpadon."</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index aaedf56148c2..e1b6639b2889 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-ը միացված է:"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth սարքի պատկերակ"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Սեղմեք՝ սարքի մանրամասները կազմաձևելու համար"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>։ Կարգավորեք սարքի տվյալները"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Տեսնել բոլոր սարքերը"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Նոր սարքի զուգակցում"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Մարտկոցի լիցքի մակարդակն անհայտ է։"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Միացված է <xliff:g id="BLUETOOTH">%s</xliff:g>-ին:"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Միացված է <xliff:g id="CAST">%s</xliff:g>-ին:"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Ծավալել խումբը։"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Բացել հավելվածը։"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Միացված չէ:"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Ռոումինգ"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Մուտքագրում"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Լսողական սարք"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Միացում…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Հնարավոր չէ կարգավորել պայծառությունը, քանի որ այն կառավարվում է գլխավոր հավելվածի կողմից"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Ինքնապտտում"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ավտոմատ պտտել էկրանը"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Տեղորոշում"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Բազմախնդրություն"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Տրոհել էկրանը և տեղավորել այս հավելվածը աջ կողմում"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Տրոհել էկրանը և տեղավորել այս հավելվածը ձախ կողմում"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Օգտագործեք լիաէկրան ռեժիմը"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Օգտագործեք համակարգչային տարբերակը"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Անցեք աջ կողմի կամ ներքևի հավելվածին տրոհված էկրանի միջոցով"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Անցեք աջ կողմի կամ վերևի հավելվածին տրոհված էկրանի միջոցով"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Տրոհված էկրանի ռեժիմում մեկ հավելվածը փոխարինել մյուսով"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Ցուցադրել ցածր առաջնահերթության ծանուցումների պատկերակները"</string> <string name="other" msgid="429768510980739978">"Այլ"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"փոխեք սալիկի չափը"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"հեռացնել սալիկը"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ավելացնել սալիկը վերջին դիրքում"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Տեղափոխել սալիկը"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Դիտել վերջին հավելվածները"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Անցում մեկ հավելվածից մյուսին"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Պատրաստ է"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Հաջորդը"</string> <string name="gesture_error_title" msgid="469064941635578511">"Նորից փորձեք։"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Հետ գնալ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Հպահարթակի վրա երեք մատով սահեցրեք ձախ կամ աջ"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Վերջերս օգտագործված հավելվածները դիտելու համար երեք մատը սահեցրեք վերև և սեղմած պահեք"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Բոլոր հավելվածները դիտելու համար սեղմեք գործողության ստեղնը ստեղնաշարի վրա"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Կոդավորված"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Ապակողպել դիտելու համար"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Ապակողպել կոդը դիտելու համար"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Համատեքստային ուսուցում"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Օգտագործեք ձեր հպահարթակը՝ վերադառնալու համար"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Երեք մատը սահեցրեք ձախ կամ աջ։ Հպեք՝ ավելի շատ ժեստերի ծանոթանալու համար։"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 4990774886a8..6ef3cdc65e69 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth terhubung."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon perangkat Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik untuk mengonfigurasi detail perangkat"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurasi detail perangkat"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Lihat semua perangkat"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Sambungkan perangkat baru"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Persentase baterai tidak diketahui."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Terhubung ke <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Terhubung ke <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Luaskan grup."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Buka aplikasi."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Tidak terhubung."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Alat bantu dengar"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Mengaktifkan…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Tidak dapat menyesuaikan kecerahan karena sedang dikontrol oleh aplikasi atas"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Putar Otomatis"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Putar layar otomatis"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokasi"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Gunakan layar terpisah dengan aplikasi di sebelah kanan"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Gunakan layar terpisah dengan aplikasi di sebelah kiri"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Gunakan layar penuh"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Gunakan tampilan desktop"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Beralih ke aplikasi di bagian kanan atau bawah saat menggunakan layar terpisah"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Beralih ke aplikasi di bagian kiri atau atas saat menggunakan layar terpisah"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Dalam layar terpisah: ganti salah satu aplikasi dengan yang lain"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Lihat aplikasi terbaru"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Beralih aplikasi"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Berikutnya"</string> <string name="gesture_error_title" msgid="469064941635578511">"Coba lagi"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kembali"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Geser ke kiri atau kanan menggunakan tiga jari di touchpad"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 3f8492a40a40..2b8a5cc51e87 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth tengt."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Tákn Bluetooth-tækis"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Smelltu til að stilla tækjaupplýsingar"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Upplýsingar um grunnstillingu tækis."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Sjá öll tæki"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Para nýtt tæki"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Staða rafhlöðu óþekkt."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Tengt við <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Tengt við <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Stækka hóp."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Opna forrit."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Engin tenging."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Reiki"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Inntak"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Heyrnartæki"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Kveikir…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ekki er hægt að breyta birtustiginu vegna þess að efsta forritið stjórnar því"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Sjálfvirkur snúningur"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Snúa skjá sjálfkrafa"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Staðsetning"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Fjölvinnsla"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Notaðu skjáskiptingu fyrir forritið til hægri"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Notaðu skjáskiptingu fyrir forritið til vinstri"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Nota allan skjáinn"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Nota tölvuútgáfu"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Skiptu í forrit til hægri eða fyrir neðan þegar skjáskipting er notuð"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Skiptu í forrit til vinstri eða fyrir ofan þegar skjáskipting er notuð"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Í skjáskiptingu: Skipta forriti út fyrir annað forrit"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Sýna tákn fyrir tilkynningar með litlum forgangi"</string> <string name="other" msgid="429768510980739978">"Annað"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"breyta stærð reitsins"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjarlægja flís"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"bæta reit við síðustu stöðu"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Færa flís"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Sjá nýleg forrit"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Að skipta á milli forrita"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Lokið"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Áfram"</string> <string name="gesture_error_title" msgid="469064941635578511">"Reyndu aftur!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Til baka"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Strjúktu til hægri eða vinstri á snertifletinum með þremur fingrum"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Strjúktu upp og haltu með þremur fingrum á snertifletinum til að sjá nýleg forrit"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Ýttu á aðgerðalykilinn á lyklaborðinu til að sjá öll forritin þín"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Ritskoðað"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Taktu úr lás til að skoða"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Taka úr lás til að sjá kóða"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Samhengismiðuð menntun"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Notaðu snertiflötinn til að fara til baka"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Strjúktu til vinstri eða hægri með þremur fingrum. Ýttu til að læra fleiri bendingar."</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index bb7202bd665b..87507d6297e5 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Connesso a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Connesso a: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Espandi il gruppo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Apri l\'applicazione."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Non connesso."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ingresso"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Apparecchi acustici"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Attivazione…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Impossibile regolare la luminosità perché è controllata dall\'app in primo piano"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotazione automatica"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotazione automatica dello schermo"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Posizione"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostra icone di notifiche con priorità bassa"</string> <string name="other" msgid="429768510980739978">"Altro"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"attivare/disattivare le dimensioni del riquadro"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"rimuovere il riquadro"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"aggiungere il riquadro all\'ultima posizione"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Sposta riquadro"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Per visualizzare le app recenti, scorri verso l\'alto e tieni premuto con tre dita sul touchpad"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Per visualizzare tutte le tue app, premi il tasto azione sulla tastiera"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Oscurata"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Sblocca per visualizzare"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Sblocca per visualizzare il codice"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Istruzione contestuale"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Usa il touchpad per tornare indietro"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Scorri verso sinistra o destra con tre dita. Tocca per scoprire altri gesti."</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 92fc2034d667..8a687af124e0 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -255,6 +255,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"התבצע חיבור אל <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"מחובר אל <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"הרחבת הקבוצה."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"פתיחת האפליקציה."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"אין חיבור."</string> <string name="data_connection_roaming" msgid="375650836665414797">"נדידה"</string> @@ -332,7 +336,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"קלט"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"מכשירי שמיעה"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ההפעלה מתבצעת…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"לא ניתן להתאים את הבהירות כי היא נשלטת על ידי האפליקציה העליונה"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"סיבוב אוטומטי"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"סיבוב אוטומטי של המסך"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"מיקום"</string> diff --git a/packages/SystemUI/res/values-iw/tiles_states_strings.xml b/packages/SystemUI/res/values-iw/tiles_states_strings.xml index 2f8ec0adda5f..d1bd612a0e0f 100644 --- a/packages/SystemUI/res/values-iw/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-iw/tiles_states_strings.xml @@ -196,7 +196,9 @@ <item msgid="6419996398343291862">"מושבת"</item> <item msgid="5908720590832378783">"מצב פעיל"</item> </string-array> - <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) --> - <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) --> - <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) --> + <string-array name="tile_states_desktopeffects"> + <item msgid="6253480000354287321">"לא זמין"</item> + <item msgid="6641673879029894995">"מושבת"</item> + <item msgid="5806682401126108403">"מופעל"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 3512271577cc..29f93cc8c361 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>に接続しました。"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>に接続されています。"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"グループを開きます。"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"アプリを開きます。"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"接続されていません。"</string> <string name="data_connection_roaming" msgid="375650836665414797">"ローミング"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"入力"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"補聴器"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ON にしています…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"明るさはトップ アプリによって制御されているため、調整できません"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自動回転"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"画面を自動回転します"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"位置情報"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"優先度の低い通知アイコンを表示"</string> <string name="other" msgid="429768510980739978">"その他"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"タイルのサイズを切り替えます"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"タイルを削除"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"タイルを最後の位置に追加する"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"タイルを移動"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"最近使ったアプリを表示するには、3 本の指でタッチパッドを上にスワイプして長押しします"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"すべてのアプリを表示するには、キーボードのアクションキーを押してください"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"削除済み"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"表示するにはロックを解除してください"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"コードを表示するにはロックを解除してください"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"コンテキスト メニューに関する説明"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"タッチパッドを使用して、前の画面に戻る"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"3 本の指で左または右にスワイプします。ジェスチャーの詳細を確認するにはタップしてください。"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 3877fe76ad21..d9a5824653c1 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"დაკავშირებულია <xliff:g id="BLUETOOTH">%s</xliff:g>-თან."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"დაკავშირებულია მოწყობილობასთან: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ჯგუფის გაფართოება."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"აპლიკაციის გახსნა."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"არ არის დაკავშირებული."</string> <string name="data_connection_roaming" msgid="375650836665414797">"როუმინგი"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"შეყვანა"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"სმენის მოწყობილობები"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ირთვება…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"სიკაშკაშის კორექტირება ვერ ხერხდება, რადგან ის\n იმართება გახსნილი აპის მიერ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ავტოროტაცია"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ეკრანის ავტომატური შეტრიალება"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"მდებარეობა"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"დაბალი პრიორიტეტის მქონე შეტყობინებების ხატულების ჩვენება"</string> <string name="other" msgid="429768510980739978">"სხვა"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"მოზაიკის ფილის ზომის გადასართავად"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"მოზაიკის ფილის წაშლა"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"მოზაიკის ფილის ბოლო პოზიციაზე დამატება"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"მოზაიკის გადატანა"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"ბოლო აპების სანახავად სენსორულ პანელზე სამი თითით გადაფურცლეთ ზემოთ და მოიცადეთ"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ყველა აპის სანახავად დააჭირეთ მოქმედების კლავიშს თქვენს კლავიატურაზე"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"ტექსტს ადევს ცენზურა"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"განბლოკვა სანახავად"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"განბლოკვა კოდის სანახავად"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"კონტექსტური განათლება"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"უკან დასაბრუნებლად გამოიყენეთ სენსორული პანელი"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"გადაფურცლეთ მარცხნივ ან მარჯვნივ სამი თითით. შეეხეთ მეტი ჟესტის შესასწავლად."</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 506ce8b32905..141e99c10854 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth қосылған."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth құрылғысы белгішесі"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Құрылғы деректерін конфигурациялау үшін басыңыз."</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Құрылғы мәліметтерін конфигурациялау"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Барлық құрылғыны көру"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Жаңа құрылғыны жұптау"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батарея зарядының мөлшері белгісіз."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> қосылған."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> трансляциясына қосылды."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Топты жайыңыз."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Қолданбаны ашыңыз."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Жалғанбаған."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Кіріс"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Есту аппараттары"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Қосылып жатыр…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Жарықтықты реттеу мүмкін емес, себебі ол жетекші қолданба арқылы басқарылады."</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоматты түрде бұру"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматты айналатын экран"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Локация"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Мультитаскинг"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Қолданбаны бөлінген экранның оң жағынан пайдалану"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Қолданбаны бөлінген экранның сол жағынан пайдалану"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Толық экранды пайдалану"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Компьютерлік нұсқаны пайдалану"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Бөлінген экранда оң не төмен жақтағы қолданбаға ауысу"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Бөлінген экранда сол не жоғары жақтағы қолданбаға ауысу"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Экранды бөлу кезінде: бір қолданбаны басқасымен алмастыру"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Соңғы қолданбаларды көру"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Қолданба ауыстыру"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Дайын"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Келесі"</string> <string name="gesture_error_title" msgid="469064941635578511">"Қайталап көріңіз"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Артқа"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Сенсорлық тақтада үш саусақпен оңға немесе солға сырғытыңыз."</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 1fa0acbe418d..9323308b67b6 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"បានតភ្ជាប់ប៊្លូធូស។"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"រូបឧបករណ៍ប៊្លូធូស"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ចុចដើម្បីកំណត់រចនាសម្ព័ន្ធព័ត៌មានលម្អិតអំពីឧបករណ៍"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. កំណត់រចនាសម្ព័ន្ធព័ត៌មានលម្អិតឧបករណ៍"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"មើលឧបករណ៍ទាំងអស់"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"ផ្គូផ្គងឧបករណ៍ថ្មី"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"មិនដឹងអំពីភាគរយថ្មទេ។"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"បានភ្ជាប់ទៅ <xliff:g id="BLUETOOTH">%s</xliff:g> ។"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"បានភ្ជាប់ទៅ <xliff:g id="CAST">%s</xliff:g>"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ពង្រីកក្រុម។"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"បើកកម្មវិធី។"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"មិនបានតភ្ជាប់។"</string> <string name="data_connection_roaming" msgid="375650836665414797">"រ៉ូមីង"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"បញ្ចូល"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ឧបករណ៍ជំនួយការស្ដាប់"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"កំពុងបើក..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"មិនអាចកែតម្រូវកម្រិតពន្លឺបានទេ ដោយសារវាកំពុងស្ថិតក្រោមការគ្រប់គ្រងរបស់កម្មវិធីខាងលើគេ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"បង្វិលស្វ័យប្រវត្តិ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"បង្វិលអេក្រង់ស្វ័យប្រវត្តិ"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ទីតាំង"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"ការដំណើរការបានច្រើន"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"ប្រើមុខងារបំបែកអេក្រង់ជាមួយកម្មវិធីនៅខាងស្ដាំ"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ប្រើមុខងារបំបែកអេក្រង់ជាមួយកម្មវិធីនៅខាងឆ្វេង"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ប្រើអេក្រង់ពេញ"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ប្រើទិដ្ឋភាពលើកុំព្យូទ័រ"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"ប្ដូរទៅកម្មវិធីនៅខាងស្ដាំ ឬខាងក្រោម ពេលកំពុងប្រើមុខងារបំបែកអេក្រង់"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"ប្ដូរទៅកម្មវិធីនៅខាងឆ្វេង ឬខាងលើ ពេលកំពុងប្រើមុខងារបំបែកអេក្រង់"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"ក្នុងអំឡុងពេលប្រើមុខងារបំបែកអេក្រង់៖ ជំនួសកម្មវិធីពីមួយទៅមួយទៀត"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"បង្ហាញរូបការជូនដំណឹងដែលមានអាទិភាពទាប"</string> <string name="other" msgid="429768510980739978">"ផ្សេងៗ"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"បិទ/បើកទំហំរបស់ប្រអប់"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ដកប្រអប់ចេញ"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"បញ្ចូលប្រអប់ទៅទីតាំងចុងក្រោយ"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ផ្លាស់ទីប្រអប់"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"មើលកម្មវិធីថ្មីៗ"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ប្ដូរកម្មវិធី"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"រួចរាល់"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"បន្ទាប់"</string> <string name="gesture_error_title" msgid="469064941635578511">"សូមព្យាយាមម្ដងទៀត!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ថយក្រោយ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"អូសទៅឆ្វេង ឬស្ដាំដោយប្រើម្រាមដៃបីនៅលើផ្ទាំងប៉ះរបស់អ្នក"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"ដើម្បីមើលកម្មវិធីថ្មីៗ សូមអូសឡើងលើ ហើយសង្កត់ឱ្យជាប់ដោយប្រើម្រាមដៃបីនៅលើផ្ទាំងប៉ះ"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ដើម្បីមើលកម្មវិធីទាំងអស់របស់អ្នក សូមចុចគ្រាប់ចុចសកម្មភាពនៅលើក្ដារចុចរបស់អ្នក"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"បានកែលម្អពាក្យពេចន៍"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"ដោះសោដើម្បីមើល"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"ដោះសោដើម្បីមើលកូដ"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"ការអប់រំតាមបរិបទ"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"ប្រើផ្ទាំងប៉ះរបស់អ្នក ដើម្បីថយក្រោយ"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"អូសទៅឆ្វេង ឬស្ដាំដោយប្រើម្រាមដៃបី។ ចុច ដើម្បីស្វែងយល់បន្ថែមអំពីចលនា។"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 5363c62a644a..d7f8b89878f9 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ಬ್ಲೂಟೂತ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ಬ್ಲೂಟೂತ್ ಸಾಧನ ಐಕಾನ್"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ಸಾಧನದ ವಿವರಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. ಸಾಧನದ ವಿವರಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ಎಲ್ಲಾ ಸಾಧನಗಳನ್ನು ನೋಡಿ"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"ಹೊಸ ಸಾಧನವನ್ನು ಪೇರ್ ಮಾಡಿ"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ಬ್ಯಾಟರಿ ಶೇಕಡಾವಾರು ತಿಳಿದಿಲ್ಲ."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ಗುಂಪು ವಿಸ್ತರಿಸಿ."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಿರಿ."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ."</string> <string name="data_connection_roaming" msgid="375650836665414797">"ರೋಮಿಂಗ್"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ಇನ್ಪುಟ್"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ಶ್ರವಣ ಸಾಧನಗಳು"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ಆನ್ ಮಾಡಲಾಗುತ್ತಿದೆ..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ಬ್ರೈಟ್ನೆಸ್ ಅನ್ನು ಅಡ್ಜಸ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಅದನ್ನು ಟಾಪ್ ಆ್ಯಪ್ ನಿಯಂತ್ರಿಸುತ್ತಿದೆ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ಸ್ವಯಂ-ತಿರುಗುವಿಕೆ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ಪರದೆಯನ್ನು ಸ್ವಯಂ-ತಿರುಗಿಸಿ"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ಸ್ಥಳ"</string> @@ -580,11 +582,11 @@ <string name="media_projection_entry_app_permission_dialog_continue_entire_screen" msgid="1850848182344377579">"ಸ್ಕ್ರೀನ್ ಹಂಚಿಕೊಳ್ಳಿ"</string> <string name="media_projection_entry_app_permission_dialog_single_app_disabled" msgid="8999903044874669995">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಈ ಆಯ್ಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದೆ"</string> <string name="media_projection_entry_share_app_selector_title" msgid="1419515119767501822">"ಹಂಚಿಕೊಳ್ಳಲು ಆ್ಯಪ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> - <string name="media_projection_entry_cast_permission_dialog_title" msgid="752756942658159416">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಕಾಸ್ಟ್ ಮಾಡಬೇಕೆ?"</string> - <string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"ಒಂದು ಆ್ಯಪ್ ಅನ್ನು ಕಾಸ್ಟ್ ಮಾಡಿ"</string> + <string name="media_projection_entry_cast_permission_dialog_title" msgid="752756942658159416">"ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಬಿತ್ತರಿಸಬೇಕೇ?"</string> + <string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"ಒಂದು ಆ್ಯಪ್ ಅನ್ನು ಬಿತ್ತರಿಸಿ"</string> <string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಕ್ಯಾಸ್ಟ್ ಮಾಡಿ"</string> <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"ನಿಮ್ಮ ಸಂಪೂರ್ಣ ಸ್ಕ್ರೀನ್ ಅನ್ನು ನೀವು ಕ್ಯಾಸ್ಟ್ ಮಾಡುವಾಗ, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಏನಾದರೂ ಗೋಚರಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ಪಾಸ್ವರ್ಡ್ಗಳು, ಪಾವತಿ ವಿವರಗಳು, ಸಂದೇಶಗಳು, ಫೋಟೋಗಳು ಹಾಗೂ ಆಡಿಯೊ ಮತ್ತು ವೀಡಿಯೊದಂತಹ ವಿಷಯಗಳ ಕುರಿತು ಜಾಗರೂಕರಾಗಿರಿ."</string> - <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಕ್ಯಾಸ್ಟ್ ಮಾಡುತ್ತಿರುವಾಗ, ಆ ಆ್ಯಪ್ನಲ್ಲಿ ತೋರಿಸಿರುವ ಅಥವಾ ಪ್ಲೇ ಮಾಡಿರುವುದು ಗೋಚರಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ಪಾಸ್ವರ್ಡ್ಗಳು, ಪಾವತಿ ವಿವರಗಳು, ಸಂದೇಶಗಳು, ಫೋಟೋಗಳು ಹಾಗೂ ಆಡಿಯೊ ಮತ್ತು ವೀಡಿಯೊದಂತಹ ವಿಷಯಗಳ ಕುರಿತು ಜಾಗರೂಕರಾಗಿರಿ."</string> + <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"ನೀವು ಆ್ಯಪ್ ಅನ್ನು ಬಿತ್ತರಿಸುತ್ತಿರುವಾಗ, ಆ ಆ್ಯಪ್ನಲ್ಲಿ ತೋರಿಸಿರುವ ಅಥವಾ ಪ್ಲೇ ಮಾಡಿರುವುದು ಗೋಚರಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ಪಾಸ್ವರ್ಡ್ಗಳು, ಪಾವತಿ ವಿವರಗಳು, ಸಂದೇಶಗಳು, ಫೋಟೋಗಳು ಹಾಗೂ ಆಡಿಯೊ ಮತ್ತು ವೀಡಿಯೊದಂತಹ ವಿಷಯಗಳ ಕುರಿತು ಜಾಗರೂಕರಾಗಿರಿ."</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಬಿತ್ತರಿಸಿ"</string> <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"ಬಿತ್ತರಿಸಲು ಆ್ಯಪ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"ಹಂಚಿಕೊಳ್ಳಲು ಪ್ರಾರಂಭಿಸಬೇಕೇ?"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"ಮಲ್ಟಿಟಾಸ್ಕಿಂಗ್"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"ಬಲಭಾಗದಲ್ಲಿ ಆ್ಯಪ್ ಮೂಲಕ ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಬಳಸಿ"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ಎಡಭಾಗದಲ್ಲಿ ಆ್ಯಪ್ ಮೂಲಕ ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್ ಬಳಸಿ"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ಫುಲ್ಸ್ಕ್ರೀನ್ ಅನ್ನು ಬಳಸಿ"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ಡೆಸ್ಕ್ಟಾಪ್ ವೀಕ್ಷಣೆಯನ್ನು ಬಳಸಿ"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"ಸ್ಕ್ರೀನ್ ಬೇರ್ಪಡಿಸಿ ಮೋಡ್ ಬಳಸುವಾಗ ಬಲಭಾಗ ಅಥವಾ ಕೆಳಭಾಗದಲ್ಲಿರುವ ಆ್ಯಪ್ಗೆ ಬದಲಿಸಿ"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"ಸ್ಕ್ರೀನ್ ಬೇರ್ಪಡಿಸಿ ಮೋಡ್ ಬಳಸುವಾಗ ಎಡಭಾಗ ಅಥವಾ ಮೇಲ್ಭಾಗದಲ್ಲಿರುವ ಆ್ಯಪ್ಗೆ ಬದಲಿಸಿ"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"ಸ್ಕ್ರೀನ್ ಬೇರ್ಪಡಿಸುವ ಸಮಯದಲ್ಲಿ: ಒಂದು ಆ್ಯಪ್ನಿಂದ ಮತ್ತೊಂದು ಆ್ಯಪ್ಗೆ ಬದಲಿಸಿ"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ಕಡಿಮೆ-ಆದ್ಯತೆ ಸೂಚನೆಯ ಐಕಾನ್ಗಳನ್ನು ತೋರಿಸಿ"</string> <string name="other" msgid="429768510980739978">"ಇತರ"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"ಟೈಲ್ ನ ಗಾತ್ರವನ್ನು ಟಾಗಲ್ ಮಾಡಿ"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ಟೈಲ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ಕೊನೆಯ ಸ್ಥಾನಕ್ಕೆ ಟೈಲ್ ಅನ್ನು ಸೇರಿಸಿ"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ಟೈಲ್ ಸರಿಸಿ"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ಆ್ಯಪ್ಗಳನ್ನು ಬದಲಿಸಿ"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ಮುಗಿದಿದೆ"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ಮುಂದಿನದು"</string> <string name="gesture_error_title" msgid="469064941635578511">"ಪುನಃ ಪ್ರಯತ್ನಿಸಿ!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ಹಿಂತಿರುಗಿ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳನ್ನು ಬಳಸಿ ಎಡ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"ಇತ್ತೀಚಿನ ಆ್ಯಪ್ಗಳನ್ನು ನೋಡಲು, ಟಚ್ಪ್ಯಾಡ್ನಲ್ಲಿ ಮೂರು ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಹಾಗೂ ಹೋಲ್ಡ್ ಮಾಡಿ"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ನಿಮ್ಮ ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳನ್ನು ವೀಕ್ಷಿಸಲು, ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ನಲ್ಲಿರುವ ಆ್ಯಕ್ಷನ್ ಕೀಯನ್ನು ಒತ್ತಿರಿ"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"ಅರ್ಥಬದ್ಧವಾಗಿಸಲಾಗಿದೆ"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"ನೋಡಲು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"ಕೋಡ್ ವೀಕ್ಷಿಸಲು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"ಸಂದರ್ಭೋಚಿತ ಶಿಕ್ಷಣ"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"ಹಿಂತಿರುಗಲು ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ ಅನ್ನು ಬಳಸಿ"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"ಮೂರು ಬೆರಳುಗಳಿಂದ ಎಡಕ್ಕೆ ಅಥವಾ ಬಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ. ಇನ್ನಷ್ಟು ಗೆಸ್ಚರ್ಗಳನ್ನು ತಿಳಿಯಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 931daa09699b..0c43ea1de5c2 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"블루투스가 연결되었습니다."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"블루투스 기기 아이콘"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"기기 세부정보를 구성하려면 클릭하세요."</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. 기기 세부정보 구성"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"모든 기기 보기"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"새 기기와 페어링"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"배터리 잔량을 알 수 없습니다."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>에 연결되었습니다."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>에 연결됨"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"그룹을 펼칩니다."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"애플리케이션을 엽니다."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"연결되지 않았습니다."</string> <string name="data_connection_roaming" msgid="375650836665414797">"로밍"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"입력"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"보청기"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"켜는 중..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"상위 앱에서 밝기를 제어하고 있으므로 밝기를 조절할 수 없습니다."</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"자동 회전"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"화면 자동 회전"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"위치"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"멀티태스킹"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"앱이 오른쪽에 오도록 화면 분할 사용"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"앱이 왼쪽에 오도록 화면 분할 사용"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"전체 화면 사용"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"데스크톱 뷰 사용"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"화면 분할을 사용하는 중에 오른쪽 또는 아래쪽에 있는 앱으로 전환"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"화면 분할을 사용하는 중에 왼쪽 또는 위쪽에 있는 앱으로 전환하기"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"화면 분할 중: 다른 앱으로 바꾸기"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"최근 앱 보기"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"앱 전환"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"완료"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"다음"</string> <string name="gesture_error_title" msgid="469064941635578511">"다시 시도해 보세요"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"뒤로"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"세 손가락을 사용해 터치패드에서 왼쪽 또는 오른쪽으로 스와이프하세요."</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index f1c4eef878b8..b411bdcaf466 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth байланышта"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth түзмөгүнүн сүрөтчөсү"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Түзмөктүн чоо-жайын конфигурациялоо үчүн чыкылдатыңыз"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Түзмөктүн чоо-жайын конфигурациялаңыз"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Бардык түзмөктөрдү көрүү"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Жаңы түзмөк кошуу"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батареянын деңгээли белгисиз."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> менен туташкан."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> менен туташты."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Топту жайып көрсөтүү."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Колдонмону ачуу."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Интернет жок."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Киргизүү"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Угуу аппараттары"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Күйгүзүлүүдө…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Жарыктыкты тууралоого болбойт, анткени аны жогорку колдонмо көзөмөлдөйт"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Авто буруу"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Экранды авто буруу"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Жайгашкан жер"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Бир нече тапшырма аткаруу"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Колдонмону оңго жылдырып, экранды бөлүү"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Колдонмону солго жылдырып, экранды бөлүү"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Толук экранды колдонуу"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Компьютердик версияны колдонуу"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Бөлүнгөн экранда сол же төмөн жактагы колдонмого которулуу"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Бөлүнгөн экранды колдонуп жатканда сол же жогору жактагы колдонмого которулуңуз"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Экранды бөлүү режиминде бир колдонмону экинчисине алмаштыруу"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Акыркы колдонмолорду көрүү"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Колдонмолорду которуштуруу"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Бүттү"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Кийинки"</string> <string name="gesture_error_title" msgid="469064941635578511">"Кайталап көрүңүз!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Артка кайтуу"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Сенсордук тактаны үч манжаңыз менен солго же оңго сүрүңүз"</string> diff --git a/packages/SystemUI/res/values-land/bools.xml b/packages/SystemUI/res/values-land/bools.xml index c112edcf22bf..00e3e93f6ef4 100644 --- a/packages/SystemUI/res/values-land/bools.xml +++ b/packages/SystemUI/res/values-land/bools.xml @@ -22,4 +22,6 @@ <!-- True when small screen (<sw600dp) is landscape. --> <bool name="is_small_screen_landscape">true</bool> + + <bool name="volume_dialog_ringer_drawer_should_open_to_the_side">true</bool> </resources> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index de9694af818d..e9e585eda056 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ເຊື່ອມຕໍ່ Bluetooth ແລ້ວ."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ໄອຄອນອຸປະກອນ Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ຄລິກເພື່ອຕັ້ງຄ່າລາຍລະອຽດອຸປະກອນ"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. ຕັ້ງຄ່າລາຍລະອຽດອຸປະກອນ"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ເບິ່ງອຸປະກອນທັງໝົດ"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"ຈັບຄູ່ອຸປະກອນໃໝ່"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ບໍ່ຮູ້ເປີເຊັນແບັດເຕີຣີ."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"ເຊື່ອມຕໍ່ຫາ <xliff:g id="BLUETOOTH">%s</xliff:g> ແລ້ວ."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"ເຊື່ອມຕໍ່ຫາ <xliff:g id="CAST">%s</xliff:g> ແລ້ວ."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ຂະຫຍາຍກຸ່ມ."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ເປີດແອັບພລິເຄຊັນ."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"ບໍ່ໄດ້ເຊື່ອມຕໍ່."</string> <string name="data_connection_roaming" msgid="375650836665414797">"ໂຣມມິງ"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ການປ້ອນຂໍ້ມູນ"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ເຄື່ອງຊ່ວຍຟັງ"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ກຳລັງເປີດ..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ບໍ່ສາມາດປັບຄວາມແຈ້ງເນື່ອງຈາກມັນ ຖືກຄວບຄຸມໂດຍແອັບຍອດນິຍົມ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ໝຸນອັດຕະໂນມັດ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ໝຸນໜ້າຈໍອັດຕະໂນມັດ"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ສະຖານທີ່"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"ການເຮັດຫຼາຍໜ້າວຽກພ້ອມກັນ"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"ໃຊ້ໂໝດແບ່ງໜ້າຈໍໂດຍໃຫ້ແອັບຢູ່ເບື້ອງຂວາ"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ໃຊ້ໂໝດແບ່ງໜ້າຈໍໂດຍໃຫ້ແອັບຢູ່ເບື້ອງຊ້າຍ"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ໃຊ້ແບບເຕັມຈໍ"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ໃຊ້ມຸມມອງເດັສທັອບ"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"ສະຫຼັບໄປໃຊ້ແອັບຢູ່ຂວາ ຫຼື ທາງລຸ່ມໃນຂະນະທີ່ໃຊ້ແບ່ງໜ້າຈໍ"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"ສະຫຼັບໄປໃຊ້ແອັບຢູ່ຊ້າຍ ຫຼື ທາງເທິງໃນຂະນະທີ່ໃຊ້ແບ່ງໜ້າຈໍ"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"ໃນລະຫວ່າງແບ່ງໜ້າຈໍ: ໃຫ້ປ່ຽນຈາກແອັບໜຶ່ງເປັນອີກແອັບໜຶ່ງ"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ສະແດງໄອຄອນການແຈ້ງເຕືອນຄວາມສຳຄັນຕ່ຳ"</string> <string name="other" msgid="429768510980739978">"ອື່ນໆ"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"ສະຫຼັບຂະໜາດຂອງແຜ່ນ"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ລຶບແຜ່ນອອກ"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ເພີ່ມແຜ່ນໃສ່ຕຳແໜ່ງສຸດທ້າຍ"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ຍ້າຍແຜ່ນ"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ເບິ່ງແອັບຫຼ້າສຸດ"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ສະຫຼັບແອັບ"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ແລ້ວໆ"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ຕໍ່ໄປ"</string> <string name="gesture_error_title" msgid="469064941635578511">"ກະລຸນາລອງໃໝ່!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ກັບຄືນ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ປັດຊ້າຍ ຫຼື ຂວາໂດຍໃຊ້ມືສາມນິ້ວຢູ່ແຜ່ນສໍາຜັດຂອງທ່ານ"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"ເພື່ອເບິ່ງແອັບຫຼ້າສຸດ, ໃຫ້ໃຊ້ 3 ນິ້ວປັດຂຶ້ນ ແລ້ວຄ້າງໄວ້ເທິງແຜ່ນສໍາຜັດ"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ເພື່ອເບິ່ງແອັບທັງໝົດຂອງທ່ານ, ໃຫ້ກົດປຸ່ມຄຳສັ່ງຢູ່ແປ້ນພິມຂອງທ່ານ"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"ປົກປິດໄວ້ແລ້ວ"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"ປົດລັອກເພື່ອເບິ່ງ"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"ປົດລັອກເພື່ອເບິ່ງລະຫັດ"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"ການສຶກສາຕາມບໍລິບົດ"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"ໃຊ້ແຜ່ນສໍາຜັດຂອງທ່ານເພື່ອກັບຄືນ"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"ໃຊ້ 3 ນິ້ວປັດຊ້າຍ ຫຼື ຂວາ. ແຕະເພື່ອສຶກສາທ່າທາງເພີ່ມເຕີມ."</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 59f0ad34295d..0d4398eb97bc 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -150,7 +150,7 @@ <string name="cast_to_other_device_stop_dialog_title" msgid="7836517190930357326">"Sustabdyti perdavimą?"</string> <string name="cast_to_other_device_stop_dialog_message_entire_screen_with_device" msgid="1474703115926205251">"Šiuo metu perduodate visą ekraną į šį įrenginį: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="cast_to_other_device_stop_dialog_message_entire_screen" msgid="8419219169553867625">"Šiuo metu perduodate visą ekraną į įrenginį netoliese"</string> - <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Šiuo metu perduodate programą (<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>) į šį įrenginį: <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string> + <string name="cast_to_other_device_stop_dialog_message_specific_app_with_device" msgid="2715934698604085519">"Šiuo metu perduodate programą „<xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>“ į šį įrenginį: <xliff:g id="DEVICE_NAME">%2$s</xliff:g>"</string> <string name="cast_to_other_device_stop_dialog_message_specific_app" msgid="8616103075630934513">"Šiuo metu į įrenginį netoliese perduodate šią programą: <xliff:g id="APP_BEING_SHARED_NAME">%1$s</xliff:g>"</string> <string name="cast_to_other_device_stop_dialog_message_generic_with_device" msgid="9213582497852420203">"Šiuo metu perduodate į šį įrenginį: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="cast_to_other_device_stop_dialog_message_generic" msgid="4100272100480415076">"Šiuo metu perduodate į įrenginį netoliese"</string> @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Prisijungta prie „<xliff:g id="BLUETOOTH">%s</xliff:g>“."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Prisijungta prie <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Išskleisti grupę."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Atidaryti programą."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Neprijungta."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Tarptinklinis ryšys"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Įvestis"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Klausos aparatai"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Įjungiama…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Negalima koreguoti ryškumo, nes jį valdo viršuje esanti programa"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatinis pasukimas"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatiškai sukti ekraną"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Vietovė"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Rodyti mažo prioriteto pranešimų piktogramas"</string> <string name="other" msgid="429768510980739978">"Kita"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"perjungti išklotinės elemento dydį"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"pašalintumėte išklotinės elementą"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"pridėti išklotinės elementą paskutinėje pozicijoje"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Perkelti išklotinės elementą"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Peržiūrėkite naujausias programas, jutiklinėje dalyje perbraukę aukštyn trimis pirštais ir palaikę"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Jei norite peržiūrėti visas programas, paspauskite klaviatūros veiksmų klavišą"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Paslėpta"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Atrakinkite ir peržiūrėkite"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Atrakinkite ir peržiūrėkite kodą"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstinis švietimas"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Naudokite klaviatūrą, kad grįžtumėte atgal"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Perbraukite į kairę ar dešinę trimis pirštais. Palieskite, kad sužinotumėte daugiau gestų."</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 9962226de520..60e1e6f67c42 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth savienojums ir izveidots."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth ierīces ikona"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Lai konfigurētu ierīces informāciju, noklikšķiniet"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurējiet ierīces informāciju."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Skatiet visas ierīces."</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Savienojiet pārī jaunu ierīci."</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Akumulatora uzlādes līmenis procentos nav zināms."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ir izveidots savienojum ar <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Savienots ar ierīci <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Izvērst grupu."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Atvērt lietojumprogrammu."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Savienojums nav izveidots."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Viesabonēšana"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ievade"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Dzirdes aparāti"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Notiek ieslēgšana…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nevar mainīt spilgtumu, jo to kontrolē aktīvā lietotne."</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automātiska pagriešana"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automātiska ekrāna pagriešana"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Atrašanās vieta"</string> @@ -586,7 +588,7 @@ <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"Apraidot visu ekrānu, ir redzams viss ekrāna saturs. Tāpēc piesardzīgi apejieties ar parolēm, maksājumu informāciju, ziņojumiem, fotoattēliem un audio un video saturu."</string> <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"Apraidot lietotni, ir redzams viss attiecīgajā lietotnē rādītais vai atskaņotais. Tāpēc piesardzīgi apejieties ar parolēm, maksājumu informāciju, ziņojumiem, fotoattēliem un audio un video saturu."</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"Apraidīt ekrānu"</string> - <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"Lietotnes izvēlēšanās apraide"</string> + <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"Lietotnes izvēle apraidei"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"Vai sākt kopīgošanu?"</string> <string name="media_projection_entry_generic_permission_dialog_warning_entire_screen" msgid="5407906851409410209">"Kopīgošanas, ierakstīšanas vai apraides laikā Android var piekļūt visam, kas tiek rādīts jūsu ekrānā vai atskaņots jūsu ierīcē. Tāpēc piesardzīgi apejieties ar parolēm, maksājumu informāciju, ziņojumiem, fotoattēliem un audio un video saturu."</string> <string name="media_projection_entry_generic_permission_dialog_warning_single_app" msgid="3454859977888159495">"Lietotnes kopīgošanas, ierakstīšanas vai apraides laikā Android var piekļūt visam, kas tiek rādīts vai atskaņots attiecīgajā lietotnē. Tāpēc piesardzīgi apejieties ar parolēm, maksājumu informāciju, ziņojumiem, fotoattēliem un audio un video saturu."</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Vairākuzdevumu režīms"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Izmantot ekrāna sadalīšanu ar lietotni labajā pusē"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Izmantot ekrāna sadalīšanu ar lietotni kreisajā pusē"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Izmantot pilnekrāna režīmu"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Izmantot skatu datorā"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Pāriet uz lietotni pa labi/lejā, kamēr izmantojat sadalīto ekrānu."</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Pāriet uz lietotni pa kreisi/augšā, kamēr izmantojat sadalīto ekrānu."</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Ekrāna sadalīšanas režīmā: pārvietot lietotni no viena ekrāna uz otru"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Rādīt zemas prioritātes paziņojumu ikonas"</string> <string name="other" msgid="429768510980739978">"Citi"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"pārslēgt elementa lielumu"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"noņemt elementu"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"pievienotu elementu pēdējā pozīcijā"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pārvietot elementu"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Skatīt nesen izmantotās lietotnes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Pārslēgties starp lietotnēm"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gatavs"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Tālāk"</string> <string name="gesture_error_title" msgid="469064941635578511">"Mēģiniet vēlreiz."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Atpakaļ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Skārienpaliktnī ar trīs pirkstiem velciet pa kreisi vai pa labi."</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Lai skatītu nesenās lietotnes, ar trīs pirkstiem uz skārienpaliktņa velciet augšup un turiet."</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Lai skatītu visas savas lietotnes, tastatūrā nospiediet darbību taustiņu."</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Rediģēts"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Atbloķējiet, lai skatītu"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Atbloķējiet, lai skatītu kodu"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontekstuāla pamācība"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Atgriešanās, izmantojot skārienpaliktni"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Ar trīs pirkstiem velciet pa kreisi vai pa labi. Lai apgūtu citus žestus, pieskarieties šeit."</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 9d9c0743a67f..761eac1acae9 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth е поврзан."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Икона за уред со Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Кликнете за да ги конфигурирате деталите за уредот"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Конфигурирајте ги деталите за уредот"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Погледнете ги сите уреди"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Спарете нов уред"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Процентот на батеријата е непознат."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Поврзано со <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Поврзано со <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Проширете ја групата."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Отворете ја апликацијата."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Не е поврзана"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роаминг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Влез"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слушни помагала"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Се вклучува…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не може да се приспособи осветленоста бидејќи е контролирана од горната апликација"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоматско ротирање"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматско ротирање на екранот"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Локација"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Мултитаскинг"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Користете поделен екран со апликацијата оддесно"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Користете поделен екран со апликацијата одлево"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Користете цел екран"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Користете приказ на компјутер"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Префрлете се на апликацијата десно или долу при користењето поделен екран"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Префрлете се на апликацијата лево или горе при користењето поделен екран"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"При поделен екран: префрлете ги аплик. од едната на другата страна"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Прикажи ги неодамнешните апликации"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Сменете ги апликациите"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Следно"</string> <string name="gesture_error_title" msgid="469064941635578511">"Обидете се повторно!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Повлечете налево или надесно со три прста на допирната подлога"</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 301c3da380d8..aae5ac48f64c 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ബ്ലൂടൂത്ത് കണക്റ്റുചെയ്തു."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth ഉപകരണ ഐക്കൺ"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ഉപകരണത്തിന്റെ വിശദാംശങ്ങൾ കോൺഫിഗർ ചെയ്യാൻ ക്ലിക്ക് ചെയ്യുക"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. ഉപകരണ വിശദാംശങ്ങൾ കോൺഫിഗർ ചെയ്യുക"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"എല്ലാ ഉപകരണങ്ങളും കാണുക"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"പുതിയ ഉപകരണം ജോടിയാക്കുക"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ബാറ്ററി ശതമാനം അജ്ഞാതമാണ്."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> എന്നതിലേക്ക് കണക്റ്റുചെയ്തു."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ഗ്രൂപ്പ് വികസിപ്പിക്കുക."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ആപ്പ് തുറക്കുക."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"കണക്റ്റുചെയ്തിട്ടില്ല."</string> <string name="data_connection_roaming" msgid="375650836665414797">"റോമിംഗ്"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ഇൻപുട്ട്"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ശ്രവണ സഹായികൾ"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ഓണാക്കുന്നു…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"തെളിച്ചം അഡ്ജസ്റ്റ് ചെയ്യാനാകില്ല, അത് നിയന്ത്രിക്കുന്നത് ഏറ്റവും മുകളിലുള്ള ആപ്പാണ്"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"സ്ക്രീൻ സ്വയമേവ തിരിയൽ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"സ്ക്രീൻ സ്വയമേവ തിരിക്കുക"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ലൊക്കേഷൻ"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"മൾട്ടിടാസ്കിംഗ്"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"വലതുവശത്തുള്ള ആപ്പിനൊപ്പം സ്ക്രീൻ വിഭജന മോഡ് ഉപയോഗിക്കുക"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ഇടതുവശത്തുള്ള ആപ്പിനൊപ്പം സ്ക്രീൻ വിഭജന മോഡ് ഉപയോഗിക്കുക"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"പൂർണ സ്ക്രീൻ ഉപയോഗിക്കുക"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ഡെസ്ക്ടോപ്പ് വ്യൂ ഉപയോഗിക്കുക"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"സ്ക്രീൻ വിഭജന മോഡ് ഉപയോഗിക്കുമ്പോൾ വലതുവശത്തെ/താഴത്തെ ആപ്പിലേക്ക് മാറുക"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"സ്ക്രീൻ വിഭജന മോഡ് ഉപയോഗിക്കുമ്പോൾ ഇടതുവശത്തെ/മുകളിലെ ആപ്പിലേക്ക് മാറൂ"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"സ്ക്രീൻ വിഭജന മോഡിൽ: ഒരു ആപ്പിൽ നിന്ന് മറ്റൊന്നിലേക്ക് മാറുക"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"പ്രാധാന്യം കുറഞ്ഞ അറിയിപ്പ് ചിഹ്നങ്ങൾ"</string> <string name="other" msgid="429768510980739978">"മറ്റുള്ളവ"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"ടൈലിന്റെ വലുപ്പം മാറ്റുക"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ടൈൽ നീക്കം ചെയ്യുക"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"അവസാന ഭാഗത്ത് ടൈൽ ചേർക്കുക"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ടൈൽ നീക്കുക"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"അടുത്തിടെയുള്ള ആപ്പുകൾ കാണുക"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ആപ്പുകൾ മാറുക"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"പൂർത്തിയായി"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"അടുത്തത്"</string> <string name="gesture_error_title" msgid="469064941635578511">"വീണ്ടും ശ്രമിക്കുക!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"മടങ്ങുക"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ടച്ച്പാഡിൽ മൂന്ന് വിരലുകൾ കൊണ്ട് ഇടത്തേക്കോ വലത്തേക്കോ സ്വൈപ്പ് ചെയ്യുക"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"അടുത്തിടെ ഉപയോഗിച്ച ആപ്പുകൾ കാണാൻ, മൂന്ന് വിരലുകൾ ഉപയോഗിച്ച് ടച്ച്പാഡിൽ സ്വൈപ്പ് ചെയ്ത് പിടിക്കുക"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"എല്ലാ ആപ്പുകളും കാണാൻ, നിങ്ങളുടെ കീബോർഡിലെ ആക്ഷൻ കീ അമർത്തുക"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"മറച്ചത്"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"കാണാൻ, അൺലോക്ക് ചെയ്യുക"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"കോഡ് കാണാൻ അൺലോക്ക് ചെയ്യുക"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"സന്ദർഭോചിത വിദ്യാഭ്യാസം"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"തിരികെ പോകാൻ നിങ്ങളുടെ ടച്ച്പാഡ് ഉപയോഗിക്കുക"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"മൂന്ന് വിരലുകൾ കൊണ്ട് ഇടത്തേക്കോ വലത്തേക്കോ സ്വൈപ്പ് ചെയ്യൂ. കൂടുതൽ ജെസ്ച്ചറുകളറിയാൻ ടാപ്പ് ചെയ്യൂ."</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 7c2e69c17df1..59388935394c 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth холбогдсон."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth төхөөрөмжийн дүрс тэмдэг"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Төхөөрөмжийн дэлгэрэнгүйг тохируулахын тулд товшино уу"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Төхөөрөмжийн дэлгэрэнгүйг тохируулна уу"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Бүх төхөөрөмжийг харах"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Шинэ төхөөрөмж хослуулах"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Батарейн хувь тодорхойгүй байна."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>-тай холбогдсон."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>-д холбогдсон."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Бүлгийг дэлгэнэ үү."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Аппликейшныг нээнэ үү."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Холбогдоогүй."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Оролт"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Сонсголын төхөөрөмж"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Асааж байна…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Гэрэлтүүлгийгдавуу эрхтэй аппаас хянаж байгаа тул тохируулах боломжгүй"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоматаар эргэх"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Дэлгэцийг автоматаар эргүүлэх"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Байршил"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Олон ажил зэрэг хийх"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Аппыг баруун талд байгаагаар дэлгэцийг хуваахыг ашиглах"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Аппыг зүүн талд байгаагаар дэлгэцийг хуваахыг ашиглах"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Бүтэн дэлгэцийг ашиглах"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Дэлгэц дээр харагдах байдлыг ашиглах"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Дэлгэц хуваахыг ашиглаж байхдаа баруун талд эсвэл доор байх апп руу сэлгэ"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Дэлгэц хуваахыг ашиглаж байхдаа зүүн талд эсвэл дээр байх апп руу сэлгэ"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Дэлгэц хуваах үеэр: аппыг нэгээс нөгөөгөөр солих"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Саяхны аппуудыг харах"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Апп сэлгэх"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Болсон"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Дараах"</string> <string name="gesture_error_title" msgid="469064941635578511">"Дахин оролдоно уу!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Буцах"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Мэдрэгч самбар дээрээ гурван хуруугаа ашиглан зүүн эсвэл баруун тийш шударна уу"</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 68891791ac3f..c3c716055bb0 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> शी कनेक्ट केले."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> शी कनेक्ट केले."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"गटाचा विस्तार करा."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"अॅप उघडा."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"कनेक्ट केले नाही."</string> <string name="data_connection_roaming" msgid="375650836665414797">"रोमिंग"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"श्रवणयंत्रे"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"सुरू करत आहे…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ब्राइटनेस ॲडजस्ट करू शकत नाही, कारण तो टॉप ॲपद्वारे नियंत्रित केला जात आहे"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ऑटो-रोटेट"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ऑटो-रोटेट स्क्रीन"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"स्थान"</string> @@ -581,7 +586,7 @@ <string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"एक अॅप कास्ट करा"</string> <string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"संपूर्ण स्क्रीन कास्ट करा"</string> <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"तुम्ही तुमची संपूर्ण स्क्रीन कास्ट करता, तेव्हा तुमच्या स्क्रीनवरील सर्व गोष्टी दृश्यमान असतात. त्यामुळे पासवर्ड, पेमेंट तपशील, मेसेज, फोटो आणि ऑडिओ व व्हिडिओ यांसारख्या गोष्टींबाबत सावधगिरी बाळगा."</string> - <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"तुम्ही अॅप कास्ट करता, तेव्हा त्या अॅपमध्ये दाखवल्या किंवा प्ले होणाऱ्या सर्व गोष्टी दृश्यमान असतात. त्यामुळे पासवर्ड, पेमेंट तपशील, मेसेज, फोटो आणि ऑडिओ व व्हिडिओ यांसारख्या गोष्टींबाबत सावधगिरी बाळगा."</string> + <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"तुम्ही अॅप कास्ट करता, तेव्हा त्या अॅपमध्ये दाखवलेल्या किंवा प्ले होणाऱ्या सर्व गोष्टी दृश्यमान असतात. त्यामुळे पासवर्ड, पेमेंट तपशील, मेसेज, फोटो आणि ऑडिओ व व्हिडिओ यांसारख्या गोष्टींबाबत सावधगिरी बाळगा."</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"स्क्रीन कास्ट करा"</string> <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"कास्ट करण्यासाठी ॲप निवडा"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"शेअर करणे सुरू करायचे आहे का?"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"कमी प्राधान्य सूचना आयकन दर्शवा"</string> <string name="other" msgid="429768510980739978">"अन्य"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"टाइलचा आकार टॉगल करा"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल काढून टाका"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"टाइल शेवटच्या स्थानावर जोडा"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल हलवा"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"अलीकडील ॲप्स पाहण्यासाठी, टचपॅडवर तीन बोटांनी वरती स्वाइप करा आणि धरून ठेवा"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"तुमची सर्व ॲप्स पाहण्यासाठी, तुमच्या कीबोर्डवरील अॅक्शन की प्रेस करा"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"रिडॅक्ट केलेले"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"पाहण्यासाठी अनलॉक करा"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"कोड पाहण्यासाठी अनलॉक करा"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"संदर्भीय शिक्षण"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"मागे जाण्यासाठी तुमचा टचपॅड वापरा"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"तीन बोटांनी डावीकडे किंवा उजवीकडे स्वाइप करा. आणखी जेश्चर जाणून घेण्यासाठी टॅप करा."</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index b7e3153027ff..3c96d0a502a8 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth disambungkan."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon peranti Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik untuk mengkonfigurasi butiran peranti"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurasikan butiran peranti"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Lihat semua peranti"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Gandingkan peranti baharu"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Peratusan kuasa bateri tidak diketahui."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Disambungkan kepada <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Disambungkan ke <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Kembangkan kumpulan."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Buka aplikasi."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Tidak disambungkan."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Perayauan"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Alat bantu pendengaran"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Menghidupkan…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Tidak dapat melaraskan kecerahan kerana peranti dikawal oleh apl popular"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autoputar"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Autoputar skrin"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokasi"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Berbilang tugas"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Gunakan skrin pisah dengan apl pada sebelah kanan"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Gunakan skrin pisah dengan apl pada sebelah kiri"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Gunakan skrin penuh"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Gunakan paparan desktop"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Tukar kepada apl di sebelah kanan/bawah semasa menggunakan skrin pisah"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Tukar kepada apl di sebelah kiri/atas semasa menggunakan skrin pisah"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Semasa skrin pisah: gantikan apl daripada satu apl kepada apl lain"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Tunjukkan ikon pemberitahuan keutamaan rendah"</string> <string name="other" msgid="429768510980739978">"Lain-lain"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"togol saiz jubin"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alih keluar jubin"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"tambahkan jubin pada kedudukan terakhir"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Alihkan jubin"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Lihat apl terbaharu"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Tukar apl"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Selesai"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Seterusnya"</string> <string name="gesture_error_title" msgid="469064941635578511">"Cuba lagi!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kembali"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Leret ke kiri atau ke kanan menggunakan tiga jari pada pad sentuh"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Untuk melihat apl terbaharu, leret ke atas dan tahan dengan tiga jari pada pad sentuh"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Untuk melihat semua apl, tekan kekunci tindakan pada papan kekunci"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Disunting"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Buka kunci untuk lihat"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Buka kunci untuk melihat kod"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Pendidikan kontekstual"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Gunakan pad sentuh anda untuk kembali"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Leret ke kiri atau ke kanan dengan tiga jari. Ketik dan ketahui lebih lanjut tentang gerak isyarat."</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 72f0369de1fd..b259e3996220 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ဘလူးတုသ်ချိတ်ဆက်ထားမှု"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ဘလူးတုသ်သုံးစက် သင်္ကေတ"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"စက်အသေးစိတ်ကို စီစဉ်သတ်မှတ်ရန် နှိပ်ပါ"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>။ စက်အသေးစိတ်ကို စီစဉ်သတ်မှတ်နိုင်သည်"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"စက်အားလုံးကြည့်ရန်"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"စက်အသစ် တွဲချိတ်ရန်"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ဘက်ထရီရာခိုင်နှုန်းကို မသိပါ။"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>သို့ ချိတ်ဆက်ထား"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> သို့ချိတ်ဆက်ထားပါသည်။"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"အုပ်စုကို ပိုပြသည်။"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"အပလီကေးရှင်းကို ဖွင့်သည်။"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"ချိတ်ဆက်မထားပါ"</string> <string name="data_connection_roaming" msgid="375650836665414797">"ပြင်ပကွန်ရက်သုံးခြင်း"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"အဝင်"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"နားကြားကိရိယာ"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ဖွင့်နေသည်…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"၎င်းကို ထိပ်ဆုံးရှိအက်ပ်က ထိန်းချုပ်နေသဖြင့် တောက်ပမှုကို ပြင်ဆင်၍မရပါ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"အော်တို-လည်"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"မျက်နှာပြင်အား အလိုအလျောက်လှည့်ခြင်း"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"တည်နေရာ"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"တစ်ပြိုင်နက် များစွာလုပ်ခြင်း"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"အက်ပ်ကို ညာ၌ထားကာ မျက်နှာပြင် ခွဲ၍ပြသခြင်း သုံးရန်"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"အက်ပ်ကို ဘယ်၌ထားကာ မျက်နှာပြင် ခွဲ၍ပြသခြင်း သုံးရန်"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ဖန်သားပြင်အပြည့် သုံးရန်"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ဒက်စ်တော့မြင်ကွင်း သုံးရန်"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"မျက်နှာပြင်ခွဲ၍ပြသခြင်း သုံးစဉ် ညာ (သို့) အောက်ရှိအက်ပ်သို့ ပြောင်းရန်"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"မျက်နှာပြင် ခွဲ၍ပြသခြင်းသုံးစဉ် ဘယ် (သို့) အထက်ရှိအက်ပ်သို့ ပြောင်းရန်"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"မျက်နှာပြင် ခွဲ၍ပြသစဉ်- အက်ပ်တစ်ခုကို နောက်တစ်ခုနှင့် အစားထိုးရန်"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"မကြာသေးမီကအက်ပ်များကို ကြည့်ရန်"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"အက်ပ်များကူးပြောင်းခြင်း"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ပြီးပြီ"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ရှေ့သို့"</string> <string name="gesture_error_title" msgid="469064941635578511">"ထပ်စမ်းကြည့်ပါ။"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ပြန်သွားရန်"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"သင့်တာ့ချ်ပက်တွင် လက်သုံးချောင်းဖြင့် ဘယ် (သို့) ညာသို့ ပွတ်ဆွဲပါ"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 72d79569353b..1c655f1859ad 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth er tilkoblet."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikon for Bluetooth-enheter"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klikk for å konfigurere enhetsdetaljer"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurer enhetsdetaljer"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Se alle enheter"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Koble til en ny enhet"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batteriprosenten er ukjent."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Koblet til <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Koblet til <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Utvid gruppen."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Åpne appen."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Ikke tilkoblet."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Innenhet"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Høreapparater"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Slår på …"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan ikke justere lysstyrken, fordi den kontrolleres av appen på toppen"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotér automatisk"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotér skjermen automatisk"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Sted"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Bruk delt skjerm med appen til høyre"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Bruk delt skjerm med appen til venstre"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Bruk fullskjerm"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Bruk datamaskinvisning"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Bytt til appen til høyre eller under mens du bruker delt skjerm"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Bytt til appen til venstre eller over mens du bruker delt skjerm"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"I delt skjerm: Bytt ut en app"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se nylige apper"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Bytt app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Ferdig"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Neste"</string> <string name="gesture_error_title" msgid="469064941635578511">"Prøv på nytt."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Gå tilbake"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Sveip til venstre eller høyre med tre fingre på styreflaten"</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 8e0ee778113d..133003eb71c1 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ब्लुटुथ जडान भयो।"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ब्लुटुथ डिभाइस जनाउने आइकन"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"डिभाइसको विवरण कन्फिगर गर्न क्लिक गर्नुहोस्"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>। डिभाइसको विवरण कन्फिगर गर्नुहोस्"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"सबै डिभाइस हेर्नुहोस्"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"नयाँ डिभाइस कनेक्ट गर्नुहोस्"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ब्याट्रीमा कति प्रतिशत चार्ज छ भन्ने कुराको जानाकरी छैन।"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> मा जडित।"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> मा कनेक्ट गरियो।"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"समूह एक्स्पान्ड गर्नुहोस्।"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"एप खोल्नुहोस्।"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"जडान नगरिएको।"</string> <string name="data_connection_roaming" msgid="375650836665414797">"रोमिङ"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"हियरिङ डिभाइसहरू"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"सक्रिय गर्दै…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"टप एपले चमक नियन्त्रण गरिरहेकाले चमक मिलाउन मिल्दैन"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"अटो रोटेट"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"स्क्रिन स्वतःघुम्ने"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"लोकेसन"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"मल्टिटास्किङ"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"हालको एप दायाँ भागमा पारेर स्प्लिट स्क्रिन प्रयोग गर्नुहोस्"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"हालको एप बायाँ भागमा पारेर स्प्लिट स्क्रिन प्रयोग गर्नुहोस्"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"फुल स्क्रिन प्रयोग गर्नुहोस्"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"डेस्कटप भ्यू प्रयोग गर्नुहोस्"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"स्प्लिट स्क्रिन प्रयोग गर्दै गर्दा दायाँ वा तलको एप चलाउनुहोस्"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"स्प्लिट स्क्रिन प्रयोग गर्दै गर्दा बायाँ वा माथिको एप चलाउनुहोस्"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"स्प्लिट स्क्रिन प्रयोग गरिएका बेला: एउटा स्क्रिनमा भएको एप अर्कोमा लैजानुहोस्"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"हालसालै चलाइएका एपहरू हेर्नुहोस्"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"एपहरू बदल्नुहोस्"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"सम्पन्न भयो"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"अर्को"</string> <string name="gesture_error_title" msgid="469064941635578511">"फेरि प्रयास गर्नुहोस्!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"पछाडि जानुहोस्"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"तीन वटा औँला प्रयोग गरी टचप्याडमा बायाँ वा दायाँतिर स्वाइप गर्नुहोस्"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index e78979853cbd..388190702462 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-verbinding ingesteld."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icoon voor bluetooth-apparaat"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klik om de apparaatgegevens in te stellen"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Apparaatgegevens instellen"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Alle apparaten bekijken"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Nieuw apparaat koppelen"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batterijpercentage onbekend."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Verbonden met <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Verbonden met <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Groep uitvouwen."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"App openen."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Niet verbonden."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Invoer"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hoortoestellen"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aanzetten…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Kan de helderheid niet aanpassen omdat deze wordt beheerd door de bovenste app"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatisch draaien"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Scherm automatisch draaien"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Locatie"</string> @@ -421,7 +423,7 @@ <string name="hearing_devices_presets_error" msgid="350363093458408536">"Kan voorinstelling niet updaten"</string> <string name="hearing_devices_preset_label" msgid="7878267405046232358">"Voorinstelling"</string> <string name="hearing_devices_spinner_item_selected" msgid="3137083889662762383">"Geselecteerd"</string> - <string name="hearing_devices_ambient_label" msgid="629440938614895797">"Omgeving"</string> + <string name="hearing_devices_ambient_label" msgid="629440938614895797">"Omgevingsgeluid"</string> <string name="hearing_devices_ambient_control_left" msgid="3586965448230412600">"Links"</string> <string name="hearing_devices_ambient_control_right" msgid="6192137602448918383">"Rechts"</string> <string name="hearing_devices_ambient_expand_controls" msgid="2131816068187709200">"Uitvouwen naar gescheiden bediening voor links en rechts"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasken"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Gesplitst scherm gebruiken met de app aan de rechterkant"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Gesplitst scherm gebruiken met de app aan de linkerkant"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Volledig scherm gebruiken"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Desktopweergave gebruiken"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Naar de app rechts of onderaan gaan als je een gesplitst scherm gebruikt"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Naar de app links of bovenaan gaan als je een gesplitst scherm gebruikt"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Tijdens gesplitst scherm: een app vervangen door een andere"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Recente apps bekijken"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Wisselen tussen apps"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klaar"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Volgende"</string> <string name="gesture_error_title" msgid="469064941635578511">"Probeer het nog eens."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Terug"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swipe met 3 vingers naar links of rechts op de touchpad"</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 469ae2803f29..9c561c92d2ff 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"ବ୍ଲୁଟୂଥ୍ ସଂଯୋଗ କରାଯାଇଛି।"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"ବ୍ଲୁଟୁଥ ଡିଭାଇସ ଆଇକନ"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"ଡିଭାଇସ ବିବରଣୀକୁ କନଫିଗର କରିବା ପାଇଁ କ୍ଲିକ କରନ୍ତୁ"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>। ଡିଭାଇସ ବିବରଣୀ କନଫିଗର କରନ୍ତୁ"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"ସମସ୍ତ ଡିଭାଇସ ଦେଖନ୍ତୁ"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"ନୂଆ ଡିଭାଇସ ପେୟାର କରନ୍ତୁ"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"ବ୍ୟାଟେରୀ ଶତକଡ଼ା ଅଜଣା ଅଟେ।"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ସହ ସଂଯୁକ୍ତ"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ସହିତ ସଂଯୁକ୍ତ।"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ଗ୍ରୁପକୁ ବିସ୍ତାର କରନ୍ତୁ।"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ଆପ୍ଲିକେସନ ଖୋଲନ୍ତୁ।"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"କନେକ୍ଟ ହୋଇନାହିଁ।"</string> <string name="data_connection_roaming" msgid="375650836665414797">"ରୋମିଙ୍ଗ"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ଇନପୁଟ୍"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ଶ୍ରବଣ ଯନ୍ତ୍ର"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ଅନ୍ ହେଉଛି…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ଟପ ଆପ ଦ୍ୱାରା ଉଜ୍ଜ୍ୱଳତା ନିୟନ୍ତ୍ରିତହେଉଥିବା ଯୋଗୁଁ ଏହାକୁ ଆଡଜଷ୍ଟ କରିପାରିବେ ନାହିଁ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ଅଟୋ-ରୋଟେଟ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ଅଟୋ-ରୋଟେଟ ସ୍କ୍ରିନ"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ଲୋକେସନ"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"ମଲ୍ଟିଟାସ୍କିଂ"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"ଡାହାଣରେ ଆପ ସହିତ ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନକୁ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ବାମରେ ଆପ ସହିତ ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନକୁ ବ୍ୟବହାର କରନ୍ତୁ"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ ବ୍ୟବହାର କରନ୍ତୁ"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ଡେସ୍କଟପ ଭ୍ୟୁ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ ବ୍ୟବହାର କରିବା ସମୟରେ ଡାହାଣପଟର ବା ତଳର ଆପକୁ ସୁଇଚ କରନ୍ତୁ"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ ବ୍ୟବହାର କରିବା ସମୟରେ ବାମପଟର ବା ଉପରର ଆପକୁ ସୁଇଚ କରନ୍ତୁ"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ ସମୟରେ: କୌଣସି ଆପକୁ ଗୋଟିଏରୁ ଅନ୍ୟ ଏକ ଆପରେ ବଦଳାନ୍ତୁ"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ବର୍ତ୍ତମାନର ଆପ୍ସ ଭ୍ୟୁ କରନ୍ତୁ"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ଆପ୍ସକୁ ସୁଇଚ କରନ୍ତୁ"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"ହୋଇଗଲା"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"ପରବର୍ତ୍ତୀ"</string> <string name="gesture_error_title" msgid="469064941635578511">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ପଛକୁ ଫେରନ୍ତୁ"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ଆପଣଙ୍କ ଟଚପେଡରେ ତିନୋଟି ଆଙ୍ଗୁଠି ବ୍ୟବହାର କରି ବାମ କିମ୍ବା ଡାହାଣକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 70d249759cb8..60275382cabe 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ।"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ਗਰੁੱਪ ਦਾ ਵਿਸਤਾਰ ਕਰੋ।"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ਐਪਲੀਕੇਸ਼ਨ ਖੋਲ੍ਹੋ।"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ।"</string> <string name="data_connection_roaming" msgid="375650836665414797">"ਰੋਮਿੰਗ"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ਇਨਪੁੱਟ"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ਸੁਣਨ ਦੇ ਸਾਧਨ"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ਚਮਕ ਨੂੰ ਵਿਵਸਥਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਕਿਉਂਕਿ ਇਹ ਪਹਿਲਾਂ ਚੱਲ ਰਹੀ ਐਪ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕਰਨ ਕਰਕੇ ਹੋ ਰਿਹਾ ਹੈ"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ਸਵੈ-ਘੁਮਾਓ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ਸਕ੍ਰੀਨ ਨੂੰ ਆਪਣੇ ਆਪ ਘੁੰਮਾਓ"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ਟਿਕਾਣਾ"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ਘੱਟ ਤਰਜੀਹ ਵਾਲੇ ਸੂਚਨਾ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਦਿਖਾਓ"</string> <string name="other" msgid="429768510980739978">"ਹੋਰ"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"ਟਾਇਲ ਦੇ ਆਕਾਰ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ਟਾਇਲ ਹਟਾਓ"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ਪਿਛਲੀ ਸਥਿਤੀ \'ਤੇ ਟਾਇਲ ਸ਼ਾਮਲ ਕਰੋ"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ਟਾਇਲ ਨੂੰ ਲਿਜਾਓ"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"ਹਾਲੀਆ ਐਪਾਂ ਨੂੰ ਦੇਖਣ ਲਈ, ਟੱਚਪੈਡ \'ਤੇ ਤਿੰਨ ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਦਬਾਈ ਰੱਖੋ"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"ਆਪਣੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਨੂੰ ਦੇਖਣ ਲਈ, ਆਪਣੇ ਕੀ-ਬੋਰਡ \'ਤੇ ਕਾਰਵਾਈ ਕੁੰਜੀ ਨੂੰ ਦਬਾਓ"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"ਅਸਪਸ਼ਟ ਬਣਾਇਆ ਗਿਆ"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"ਦੇਖਣ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"ਕੋਡ ਦੇਖਣ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"ਸੰਦਰਭੀ ਸਿੱਖਿਆ"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"ਪਿੱਛੇ ਜਾਣ ਲਈ ਆਪਣੇ ਟੱਚਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"ਤਿੰਨ ਉਂਗਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਪਾਸੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ। ਹੋਰ ਇਸ਼ਾਰਿਆਂ ਨੂੰ ਜਾਣਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 6a4b3d5627bb..35ff6c941b07 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth połączony."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona urządzenia Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknij, aby skonfigurować szczegóły urządzenia"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Skonfiguruj szczegóły urządzenia"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Zobacz wszystkie urządzenia"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Sparuj nowe urządzenie"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Poziom naładowania baterii jest nieznany."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Połączono z <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Połączono z urządzeniem <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Rozwiń grupę."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Otwórz aplikację."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nie połączono."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Wejście"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparaty słuchowe"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Włączam…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nie można dostosować jasności, ponieważ jest onakontrolowana przez aplikację na pierwszym planie"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Autoobracanie"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Autoobracanie ekranu"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokalizacja"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Wielozadaniowość"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Podziel ekran z aplikacją widoczną po prawej"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Podziel ekran z aplikacją widoczną po lewej"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Użyj trybu pełnoekranowego"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Użyj wersji na komputery"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Przełącz się na aplikację po prawej lub poniżej na podzielonym ekranie"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Przełącz się na aplikację po lewej lub powyżej na podzielonym ekranie"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Podczas podzielonego ekranu: zastępowanie aplikacji"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Wyświetlanie ostatnich aplikacji"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Przełączanie aplikacji"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gotowe"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Dalej"</string> <string name="gesture_error_title" msgid="469064941635578511">"Spróbuj jeszcze raz"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Wróć"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Przesuń 3 palcami w prawo lub w lewo na touchpadzie"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 42ce3f436a54..fc7e2afd5a2a 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícone de dispositivo Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Clique para configurar os detalhes do dispositivo"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configurar detalhes do dispositivo"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Ver todos os dispositivos"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Parear novo dispositivo"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentagem da bateria desconhecida."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expandir grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicativo."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Sem conexão."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparelhos auditivos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ativando…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho, porque ele está sendo controlado pelo app principal"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Giro automático da tela"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarefas"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar a tela dividida com o app à direita"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar a tela dividida com o app à esquerda"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Usar tela cheia"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Usar a versão para computadores"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para o app à direita ou abaixo ao usar a tela dividida"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mudar para o app à esquerda ou acima ao usar a tela dividida"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Com a tela dividida: substituir um app por outro"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver os apps recentes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Mudar de app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Avançar"</string> <string name="gesture_error_title" msgid="469064941635578511">"Tente de novo"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Deslize para a esquerda ou direita com 3 dedos no touchpad"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml index b16d6f2b94e9..0233a36b176e 100644 --- a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml @@ -58,8 +58,8 @@ </string-array> <string-array name="tile_states_flashlight"> <item msgid="3465257127433353857">"Indisponível"</item> - <item msgid="5044688398303285224">"Desativada"</item> - <item msgid="8527389108867454098">"Ativada"</item> + <item msgid="5044688398303285224">"Apagada"</item> + <item msgid="8527389108867454098">"Acesa"</item> </string-array> <string-array name="tile_states_rotation"> <item msgid="4578491772376121579">"Indisponível"</item> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 37ec3da877fe..14b85b7e9e3e 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ligado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Ligado a <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expanda o grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Abra a aplicação."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Sem ligação."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparelhos auditivos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"A ativar..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho porque está a ser controlado pela app principal"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotação auto."</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rodar o ecrã automaticamente"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de prioridade baixa"</string> <string name="other" msgid="429768510980739978">"Outro"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"ativar/desativar o tamanho do mosaico"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o cartão"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"adicionar o mosaico à última posição"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover cartão"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Para ver as apps recentes, deslize rapidamente para cima e mantenha premido com 3 dedos no touchpad"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para ver todas as suas apps, prima a tecla de ação no teclado"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Revisto"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Desbloqueie para ver"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Desbloqueie para ver o código"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Educação contextual"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Use o touchpad para retroceder"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Deslize rapidamente para a esquerda ou direita com 3 dedos. Toque para aprender mais gestos."</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 42ce3f436a54..fc7e2afd5a2a 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth conectado."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ícone de dispositivo Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Clique para configurar os detalhes do dispositivo"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configurar detalhes do dispositivo"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Ver todos os dispositivos"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Parear novo dispositivo"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Porcentagem da bateria desconhecida."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectado a <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Conectado a <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Expandir grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Abrir aplicativo."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Sem conexão."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Entrada"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparelhos auditivos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ativando…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Não é possível ajustar o brilho, porque ele está sendo controlado pelo app principal"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Giro automático"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Giro automático da tela"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Localização"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitarefas"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Usar a tela dividida com o app à direita"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Usar a tela dividida com o app à esquerda"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Usar tela cheia"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Usar a versão para computadores"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Mudar para o app à direita ou abaixo ao usar a tela dividida"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Mudar para o app à esquerda ou acima ao usar a tela dividida"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Com a tela dividida: substituir um app por outro"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Ver os apps recentes"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Mudar de app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Concluído"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Avançar"</string> <string name="gesture_error_title" msgid="469064941635578511">"Tente de novo"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Voltar"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Deslize para a esquerda ou direita com 3 dedos no touchpad"</string> diff --git a/packages/SystemUI/res/values-pt/tiles_states_strings.xml b/packages/SystemUI/res/values-pt/tiles_states_strings.xml index b16d6f2b94e9..0233a36b176e 100644 --- a/packages/SystemUI/res/values-pt/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pt/tiles_states_strings.xml @@ -58,8 +58,8 @@ </string-array> <string-array name="tile_states_flashlight"> <item msgid="3465257127433353857">"Indisponível"</item> - <item msgid="5044688398303285224">"Desativada"</item> - <item msgid="8527389108867454098">"Ativada"</item> + <item msgid="5044688398303285224">"Apagada"</item> + <item msgid="8527389108867454098">"Acesa"</item> </string-array> <string-array name="tile_states_rotation"> <item msgid="4578491772376121579">"Indisponível"</item> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index a23f95eaaefb..b577be53ac08 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Conectat prin Bluetooth."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Pictograma de dispozitiv Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Dă clic pentru a configura detaliile dispozitivului"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Configurează detaliile dispozitivului"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Vezi toate dispozitivele"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Asociază un nou dispozitiv"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Procentajul bateriei este necunoscut."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Conectat la <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"S-a stabilit conexiunea la <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Extinde grupul."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Deschide aplicația."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Neconectat."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Intrare"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparate auditive"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Se activează..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Nu se poate ajusta luminozitatea deoarece este controlată de aplicația de top"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotire automată"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotirea automată a ecranului"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Locație"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Folosește ecranul împărțit cu aplicația în dreapta"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Folosește ecranul împărțit cu aplicația în stânga"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Folosește ecranul complet"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Folosește afișarea pe desktop"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Treci la aplicația din dreapta sau de mai jos cu ecranul împărțit"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Treci la aplicația din stânga sau de mai sus cu ecranul împărțit"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"În modul ecran împărțit: înlocuiește o aplicație cu alta"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Vezi aplicațiile recente"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Comută între aplicații"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Gata"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Înainte"</string> <string name="gesture_error_title" msgid="469064941635578511">"Încearcă din nou!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Înapoi"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Glisează la stânga sau la dreapta cu trei degete pe touchpad"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 1d40a6c30239..03b5423d59b6 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth-соединение установлено."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Значок устройства Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Нажмите, чтобы изменить информацию об устройстве"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"Настройка устройства \"<xliff:g id="DEVICE_NAME">%s</xliff:g>\""</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Показать все устройства"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Подключить устройство"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Уровень заряда батареи в процентах неизвестен."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>: подключено."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Подключено к: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Развернуть группу."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Открыть приложение."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Не подключено"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роуминг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Устройство ввода"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слуховые аппараты"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Включение…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Невозможно изменить яркость,так как она регулируется общими настройками."</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автоповорот"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоповорот экрана"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Геолокация"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Многозадачность"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Разделить экран и поместить открытое приложение справа"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Разделить экран и поместить открытое приложение слева"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Полноэкранный режим"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Версия для ПК"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Перейти к приложению справа или внизу на разделенном экране"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Перейти к приложению слева или вверху на разделенном экране"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"В режиме разделения экрана заменить одно приложение другим"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Показывать значки уведомлений с низким приоритетом"</string> <string name="other" msgid="429768510980739978">"Другое"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"изменить размер параметра"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"удалить панель"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"добавить параметр в конец"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Переместить панель"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Просмотр недавних приложений"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Переход в другое приложение"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Далее"</string> <string name="gesture_error_title" msgid="469064941635578511">"Попробуйте ещё раз"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Проведите тремя пальцами влево или вправо по сенсорной панели."</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Чтобы увидеть недавние приложения, проведите по сенсорной панели тремя пальцами вверх и удерживайте."</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Чтобы открыть список всех своих приложений, нажмите клавишу действия."</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Скрыто"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Разблокируйте экран, чтобы посмотреть."</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Разблокируйте экран, чтобы посмотреть код."</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстные подсказки"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Используйте сенсорную панель, чтобы возвращаться назад"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Для этого проведите тремя пальцами влево или вправо. Чтобы посмотреть другие жесты, нажмите здесь."</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 440b3209e49e..15441b57e7d2 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"බ්ලූටූත් සම්බන්ධිතයි."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"බ්ලූටූත් උපාංග නිරූපකය"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"උපාංග විස්තර වින්යාස කිරීමට ක්ලික් කරන්න"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. උපාංග විස්තර වින්යාස කරන්න"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"සියලු උපාංග බලන්න"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"නව උපාංගය යුගල කරන්න"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"බැටරි ප්රතිශතය නොදනී."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> වෙත සම්බන්ධ කරන ලදි."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> වෙත සම්බන්ධ විය."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"සමූහය දිගහැරීම"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"යෙදුම විවෘත කරන්න."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"සම්බන්ධ වී නැත."</string> <string name="data_connection_roaming" msgid="375650836665414797">"රෝමිං"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ආදානය"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"ශ්රවණාධාරක"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ක්රියාත්මක කරමින්…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ඉහළ යෙදුම මඟින් එය පාලනය වන නිසාදීප්තිය ගැළපුම් කළ නොහැක"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ස්වයංක්රීය කරකැවීම"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"ස්වයංක්රීයව-භ්රමණය වන තිරය"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ස්ථානය"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"බහුකාර්ය"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"දකුණේ යෙදුම සමග බෙදීම් තිරය භාවිතා කරන්න"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"වම් පැත්තේ යෙදුම සමග බෙදීම් තිරය භාවිතා කරන්න"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"පූර්ණ තිරය භාවිතා කරන්න"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"ඩෙස්ක්ටොප් දසුන භාවිතා කරන්න"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"බෙදුම් තිරය භාවිත කරන අතරතුර දකුණේ හෝ පහළින් ඇති යෙදුමට මාරු වන්න"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"බෙදුම් තිරය භාවිත කරන අතරතුර වමේ හෝ ඉහළ ඇති යෙදුමට මාරු වන්න"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"බෙදුම් තිරය අතරතුර: යෙදුමක් එකකින් තවත් එකක් ප්රතිස්ථාපනය කරන්න"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"මෑත යෙදුම් බලන්න"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"යෙදුම් මාරු කරන්න"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"නිමයි"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"මීළඟ"</string> <string name="gesture_error_title" msgid="469064941635578511">"නැවත උත්සාහ කරන්න!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"ආපස්සට යන්න"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"ඔබේ ස්පර්ශ පුවරුව මත ඇඟිලි තුනක් භාවිතයෙන් වමට හෝ දකුණට ස්වයිප් කරන්න"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 274c46e7a3de..868e9390e5ef 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth pripojené."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona zariadenia s rozhraním Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliknutím nakonfigurujte podrobnosti o zariadení"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Nakonfigurujte podrobnosti o zariadení."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Zobraziť všetky zariadenia"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Spárovať nové zariadenie"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Percento batérie nie je známe."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Pripojené k zariadeniu <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Pripojené k zariadeniu <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Rozbaliť skupinu"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Otvoriť aplikáciu"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nepripojené."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vstup"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Načúvadlá"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Zapína sa…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Jas sa nedá upraviť, pretože ho ovláda horná aplikácia"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatické otáčanie"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatické otáčanie obrazovky"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Poloha"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Rozdelenie obrazovky, aktuálna aplikácia vpravo"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Rozdelenie obrazovky, aktuálna aplikácia vľavo"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Používať celú obrazovku"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Používať zobrazenie v počítači"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Prechod na aplikáciu vpravo alebo dole pri rozdelenej obrazovke"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Prechod na aplikáciu vľavo alebo hore pri rozdelenej obrazovke"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Počas rozdelenej obrazovky: nahradenie aplikácie inou"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Zobraziť nedávne aplikácie"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Prepínanie aplikácií"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Hotovo"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Ďalej"</string> <string name="gesture_error_title" msgid="469064941635578511">"Skúste to znova."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Späť"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Potiahnite troma prstami na touchpade doľava alebo doprava"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index eb1219a06305..e6d133ef61f5 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Povezava vzpostavljena z: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Vzpostavljena povezava: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Razširitev skupine."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Odpiranje aplikacije."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Ni povezan."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Gostovanje"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vhodna naprava"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Slušni aparati"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Vklapljanje …"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Svetlosti ni mogoče prilagoditi, ker jo nadzoruje aplikacija na vrhu"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Samodejno sukanje"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Samodejno sukanje zaslona"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokacija"</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index ea1f3aaf0538..724c6c0d9a41 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Pajisja është lidhur me \"bluetooth\"."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Ikona e pajisjes me Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Kliko për të konfiguruar detajet e pajisjes"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfiguro detajet e pajisjes"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Shiko të gjitha pajisjet"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Çifto pajisje të re"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Përqindja e baterisë e panjohur."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Lidhur me <xliff:g id="BLUETOOTH">%s</xliff:g>"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Është lidhur me <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Zgjero grupin."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Hap aplikacionin."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Nuk është i lidhur."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Hyrja"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Aparatet e dëgjimit"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Po aktivizohet…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ndriçimi nuk mund të rregullohet pasi po kontrollohet nga aplikacioni i sipërm"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rrotullim automatik"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rrotullimi automatik i ekranit"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Vendndodhja"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Kryerja e shumë detyrave"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Përdor ekranin e ndarë me aplikacionin në të djathtë"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Përdor ekranin e ndarë me aplikacionin në të majtë"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Përdor ekranin e plotë"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Përdor pamjen e desktopit"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Kalo tek aplikacioni djathtas ose poshtë kur përdor ekranin e ndarë"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Kalo tek aplikacioni në të majtë ose sipër kur përdor ekranin e ndarë"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Gjatë ekranit të ndarë: zëvendëso një aplikacion me një tjetër"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Shiko aplikacionet e fundit"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Ndërro aplikacionet"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"U krye"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Para"</string> <string name="gesture_error_title" msgid="469064941635578511">"Provo përsëri!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Kthehu prapa"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Rrëshqit shpejt majtas ose djathtas duke përdorur tre gishta në bllokun me prekje"</string> diff --git a/packages/SystemUI/res/values-sq/tiles_states_strings.xml b/packages/SystemUI/res/values-sq/tiles_states_strings.xml index 1b1a62f203aa..7ee56318d749 100644 --- a/packages/SystemUI/res/values-sq/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sq/tiles_states_strings.xml @@ -196,7 +196,9 @@ <item msgid="6419996398343291862">"Joaktive"</item> <item msgid="5908720590832378783">"Aktive"</item> </string-array> - <!-- no translation found for tile_states_desktopeffects:0 (6253480000354287321) --> - <!-- no translation found for tile_states_desktopeffects:1 (6641673879029894995) --> - <!-- no translation found for tile_states_desktopeffects:2 (5806682401126108403) --> + <string-array name="tile_states_desktopeffects"> + <item msgid="6253480000354287321">"Nuk ofrohet"</item> + <item msgid="6641673879029894995">"Joaktiv"</item> + <item msgid="5806682401126108403">"Aktiv"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index eac07123e911..e6471eba854d 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Повезани сте са <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Повезани смо са уређајем <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Проширите групу."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Отворите апликацију."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Није повезано."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роминг"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Унос"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слушни апарати"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Укључује се..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не можете да прилагодите осветљеност јер је контролише апликација у врху"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Аутоматска ротација"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Аутоматско ротирање екрана"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Локација"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Прикажи иконе обавештења ниског приоритета"</string> <string name="other" msgid="429768510980739978">"Друго"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"укључивање или искључивање величине плочице"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"уклонили плочицу"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"додали плочицу на последњу позицију"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместите плочицу"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Да бисте прегледали недавне апликације, превуците нагоре и задржите са три прста на тачпеду"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Да бисте погледали све апликације, притисните тастер радњи на тастатури"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Редиговано"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Откључајте за приказ"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Откључајте да бисте видели кôд"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Контекстуално образовање"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Користите тачпед за враћање назад"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Превуците улево или удесно са три прста. Додирните да бисте видели више покрета."</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index dfb4e00508c1..9f2a2083175b 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ansluten."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Enhetsikon för Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Klicka för att konfigurera enhetsinformation"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Konfigurera enhetsinformation"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Se alla enheter"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Parkoppla en ny enhet"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Okänd batterinivå."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ansluten till <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Ansluten till <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Utöka gruppen."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Öppna appen."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Inte ansluten."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Ingång"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Hörapparater"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Aktiverar …"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Det går inte att justera ljusstyrkan eftersom den styrs av den översta appen"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Rotera automatiskt"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Rotera skärmen automatiskt"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Plats"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multikörning"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Använd delad skärm med appen till höger"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Använd delad skärm med appen till vänster"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Använd helskärm"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Använd datorvyn"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Byt till appen till höger eller nedanför när du använder delad skärm"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Byt till appen till vänster eller ovanför när du använder delad skärm"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Med delad skärm: ersätt en app med en annan"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Visa ikoner för aviseringar med låg prioritet"</string> <string name="other" msgid="429768510980739978">"Annat"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"växla rutstorlek"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ta bort ruta"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"lägg till en ruta på den sista platsen"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flytta ruta"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Se de senaste apparna"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Byta app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Klar"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Nästa"</string> <string name="gesture_error_title" msgid="469064941635578511">"Försök igen!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Tillbaka"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Svep åt vänster eller höger med tre fingrar på styrplattan"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Svep uppåt på styrplattan med tre fingrar och håll kvar för att se nyligen använda appar"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Tryck på åtgärdstangenten på tangentbordet för att se alla appar"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Anonymiserad"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"Lås upp för att visa"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"Lås upp för att visa koden"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Kontextuell utbildning"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Använd styrplattan för att gå tillbaka"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Svep åt vänster eller höger med tre fingrar. Tryck för att lära dig fler rörelser."</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index c096e4177a81..6222a7631fa6 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth imeunganishwa."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Aikoni ya Kifaa chenye Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Bofya ili uweke mipangilio ya maelezo ya kifaa"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Weka mipangilio ya maelezo kwenye kifaa"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Ona vifaa vyote"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Unganisha kifaa kipya"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Asilimia ya betri haijulikani."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Imeunganishwa kwenye <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Imeunganishwa kwenye <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Panua kikundi."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Fungua programu."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Haijaunganishwa."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Mitandao ya ng\'ambo"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Vifaa vya kuingiza sauti"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Visaidizi vya kusikia"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Inawasha..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Imeshindwa kurekebisha mwangaza kwa sababu inadhibitiwa na programu inayotumika"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Zungusha kiotomatiki"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Skrini ijizungushe kiotomatiki"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Mahali"</string> @@ -586,7 +588,7 @@ <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"Unapotuma maudhui katika skrini yako nzima, chochote kilicho kwenye skrini yako kitaonekana. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha, sauti na video."</string> <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"Unapotuma maudhui ya programu moja, chochote kinachoonekana au kucheza katika programu hiyo kitaonekana. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha, sauti na video."</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"Tuma maudhui yaliyo kwenye skrini"</string> - <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"Kuchagua programu utakayotumia kutuma maudhui"</string> + <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"Chagua programu ya kutuma"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"Ungependa kuanza kushiriki?"</string> <string name="media_projection_entry_generic_permission_dialog_warning_entire_screen" msgid="5407906851409410209">"Unaposhiriki, kurekodi au kutuma, Android inaweza kufikia kitu chochote kitakachoonekana kwenye skrini yako au kuchezwa kwenye kifaa chako. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha na sauti na video."</string> <string name="media_projection_entry_generic_permission_dialog_warning_single_app" msgid="3454859977888159495">"Unaposhiriki, kurekodi au kutuma programu, Android inaweza kufikia kitu chochote kitakachoonekana au kuchezwa kwenye programu hiyo. Kwa hivyo kuwa mwangalifu na vitu kama vile manenosiri, maelezo ya malipo, ujumbe, picha na sauti na video."</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Majukumu mengi"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Tumia hali ya kugawa skrini na programu ya sasa iwe upande wa kulia"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Tumia hali ya kugawa skrini na programu ya sasa iwe upande wa kushoto"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Tumia skrini nzima"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Tumia mwonekano wa kompyuta"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Badilisha ili uende kwenye programu iliyo kulia au chini unapotumia hali ya kugawa skrini"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Badilisha uende kwenye programu iliyo kushoto au juu unapotumia hali ya kugawa skrini"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Ukigawanya skrini: badilisha kutoka programu moja hadi nyingine"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Angalia programu za hivi majuzi"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Badilisha programu"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Nimemaliza"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Endelea"</string> <string name="gesture_error_title" msgid="469064941635578511">"Jaribu tena!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Rudi nyuma"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Telezesha vidole vitatu kushoto au kulia kwenye padi yako ya kugusa"</string> diff --git a/packages/SystemUI/res/values-sw/tiles_states_strings.xml b/packages/SystemUI/res/values-sw/tiles_states_strings.xml index 4070260456fe..fb6e38f5b58c 100644 --- a/packages/SystemUI/res/values-sw/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sw/tiles_states_strings.xml @@ -58,7 +58,7 @@ </string-array> <string-array name="tile_states_flashlight"> <item msgid="3465257127433353857">"Hakipatikani"</item> - <item msgid="5044688398303285224">"Kimezimwa"</item> + <item msgid="5044688398303285224">"Imezimwa"</item> <item msgid="8527389108867454098">"Kimewashwa"</item> </string-array> <string-array name="tile_states_rotation"> @@ -73,7 +73,7 @@ </string-array> <string-array name="tile_states_airplane"> <item msgid="1985366811411407764">"Hakipatikani"</item> - <item msgid="4801037224991420996">"Kimezimwa"</item> + <item msgid="4801037224991420996">"Imezimwa"</item> <item msgid="1982293347302546665">"Kimewashwa"</item> </string-array> <string-array name="tile_states_location"> diff --git a/packages/SystemUI/res/values-sw600dp-land/bools.xml b/packages/SystemUI/res/values-sw600dp-land/bools.xml index 36926a2b4813..6d314497c056 100644 --- a/packages/SystemUI/res/values-sw600dp-land/bools.xml +++ b/packages/SystemUI/res/values-sw600dp-land/bools.xml @@ -22,4 +22,6 @@ <!-- True when small screen (<sw600dp) is landscape. --> <bool name="is_small_screen_landscape">false</bool> + + <bool name="volume_dialog_ringer_drawer_should_open_to_the_side">false</bool> </resources> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 342798f17055..0bf5f223d139 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"புளூடூத் இணைக்கப்பட்டது."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"புளூடூத் சாதன ஐகான்"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"சாதன விவரத்தை உள்ளமைக்க கிளிக் செய்யலாம்"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. சாதன விவரத்தை உள்ளமைக்கும்."</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"அனைத்துச் சாதனங்களையும் காட்டும்"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"புதிய சாதனத்தை இணைக்கும்"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"பேட்டரி சதவீதம் தெரியவில்லை."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>க்கு இணைக்கப்பட்டது."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> உடன் இணைக்கப்பட்டுள்ளது."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"குழுவை விரிவாக்கும்."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ஆப்ஸைத் திறக்கும்."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"இணைக்கப்படவில்லை."</string> <string name="data_connection_roaming" msgid="375650836665414797">"ரோமிங்"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"உள்ளீடு"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"செவித்துணைக் கருவி"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ஆன் செய்கிறது…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"சிறந்த ஆப்ஸால் ஒளிர்வு கட்டுப்படுத்தப்படுவதால் இதைச் சரிசெய்ய முடியவில்லை"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"தானாகச் சுழற்று"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"திரையைத் தானாகச் சுழற்று"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"இருப்பிடம்"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"பல வேலைகளைச் செய்தல்"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"ஆப்ஸ் வலதுபுறம் வரும்படி திரைப் பிரிப்பைப் பயன்படுத்துதல்"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ஆப்ஸ் இடதுபுறம் வரும்படி திரைப் பிரிப்பைப் பயன்படுத்துதல்"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"முழுத்திரையைப் பயன்படுத்து"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"டெஸ்க்டாப் காட்சியைப் பயன்படுத்து"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"திரைப் பிரிப்பைப் பயன்படுத்தும்போது வலது/கீழ் உள்ள ஆப்ஸுக்கு மாறுதல்"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"திரைப் பிரிப்பைப் பயன்படுத்தும்போது இடது/மேலே உள்ள ஆப்ஸுக்கு மாறுதல்"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"திரைப் பிரிப்பின்போது: ஓர் ஆப்ஸுக்குப் பதிலாக மற்றொன்றை மாற்றுதல்"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"சமீபத்திய ஆப்ஸைக் காட்டுதல்"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"ஆப்ஸுக்கிடையில் மாறுங்கள்"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"முடிந்தது"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"அடுத்து"</string> <string name="gesture_error_title" msgid="469064941635578511">"மீண்டும் முயலவும்!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"பின்செல்"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"உங்கள் டச்பேடில் மூன்று விரல்களால் இடது அல்லது வலதுபுறம் ஸ்வைப் செய்யவும்"</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 6f4619f7bada..2042ead675d6 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"బ్లూటూత్ కనెక్ట్ చేయబడింది."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"బ్లూటూత్ పరికర చిహ్నం"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"పరికర వివరాలను కాన్ఫిగర్ చేయడానికి క్లిక్ చేయండి"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. పరికర వివరాలను కాన్ఫిగర్ చేయండి"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"అన్ని పరికరాలను చూడండి"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"కొత్త పరికరాన్ని పెయిర్ చేయండి"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"బ్యాటరీ శాతం తెలియదు."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>కి కనెక్ట్ చేయబడింది."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"గ్రూప్ను విస్తరించండి."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"యాప్ను తెరవండి."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"కనెక్ట్ చేయబడలేదు."</string> <string name="data_connection_roaming" msgid="375650836665414797">"రోమింగ్"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ఇన్పుట్"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"వినికిడి పరికరాలు"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ఆన్ చేస్తోంది…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ఇది టాప్ యాప్ ద్వారా కంట్రోల్ చేయబడుతున్నందున బ్రైట్నెస్ను సర్దుబాటు చేయడం సాధ్యం కాదు"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ఆటో-రొటేట్"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"స్క్రీన్ ఆటో-రొటేట్"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"లొకేషన్"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"మల్టీ-టాస్కింగ్"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"కుడి వైపు ప్రస్తుత యాప్తో స్ప్లిట్ స్క్రీన్ను ఉపయోగించండి"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"ఎడమ వైపు ప్రస్తుత యాప్తో స్ప్లిట్ స్క్రీన్ను ఉపయోగించండి"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"ఫుల్ స్క్రీన్ను ఉపయోగించండి"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"డెస్క్టాప్ వీక్షణను ఉపయోగించండి"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"స్ప్లిట్ స్క్రీన్ ఉపయోగిస్తున్నప్పుడు కుడి లేదా కింద యాప్నకు మారండి"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"స్ప్లిట్ స్క్రీన్ ఉపయోగిస్తున్నప్పుడు ఎడమ లేదా పైన యాప్నకు మారండి"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"స్ప్లిట్ స్క్రీన్ సమయంలో: ఒక దాన్నుండి మరో దానికి యాప్ రీప్లేస్ చేయండి"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"ఇటీవలి యాప్లను చూడండి"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"యాప్ల మధ్య మారండి"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"పూర్తయింది"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"తర్వాత"</string> <string name="gesture_error_title" msgid="469064941635578511">"మళ్లీ ట్రై చేయండి!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"వెనుకకు"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"మీ టచ్ప్యాడ్లో మూడు వేళ్లను ఉపయోగించి ఎడమ వైపునకు లేదా కుడి వైపునకు స్వైప్ చేయండి"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 0b314f49c121..9ac9d01b8ee7 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"เชื่อมต่อกับ <xliff:g id="BLUETOOTH">%s</xliff:g> แล้ว"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"เชื่อมต่อกับ <xliff:g id="CAST">%s</xliff:g>"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"ขยายกลุ่ม"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"เปิดแอปพลิเคชัน"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"ไม่ได้เชื่อมต่อ"</string> <string name="data_connection_roaming" msgid="375650836665414797">"โรมมิ่ง"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"อินพุต"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"เครื่องช่วยฟัง"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"กำลังเปิด..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"ปรับความสว่างไม่ได้เนื่องจากควบคุมโดยแอปที่อยู่ด้านบน"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"หมุนอัตโนมัติ"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"หมุนหน้าจออัตโนมัติ"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"ตำแหน่ง"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index f5a7fde61ae8..516386bd3c9b 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Nakakonekta ang Bluetooth."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Icon ng Bluetooth device"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"I-click para i-configure ang detalye ng device"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. I-configure ang detalye ng device"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Tingnan ang lahat ng device"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Magpares ng bagong device"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Hindi alam ang porsyento ng baterya."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Nakakonekta sa <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Nakakonekta sa <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"I-expand ang grupo."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Buksan ang application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Hindi nakakonekta."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Roaming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Input"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Mga hearing aid"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Ino-on…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Hindi ma-adjust ang liwanag dahil kinokontrol ito ng nangingibabaw na app"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"I-auto rotate"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Awtomatikong i-rotate ang screen"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Lokasyon"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Pag-multitask"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Gumamit ng split screen nang nasa kanan ang app"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Gumamit ng split screen nang nasa kaliwa ang app"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Gamitin ang full screen"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Gamitin ang desktop view"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Lumipat sa app sa kanan o ibaba habang ginagamit ang split screen"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Lumipat sa app sa kaliwa o itaas habang ginagamit ang split screen"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Habang nasa split screen: magpalit-palit ng app"</string> @@ -991,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Ipakita ang mga icon ng notification na may mababang priority"</string> <string name="other" msgid="429768510980739978">"Iba pa"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"i-toggle ang laki ng tile"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alisin ang tile"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"magdagdag ng tile sa huling posisyon"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Ilipat ang tile"</string> @@ -1507,8 +1506,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Tingnan ang mga kamakailang app"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Lumipat ng app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tapos na"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Susunod"</string> <string name="gesture_error_title" msgid="469064941635578511">"Subukan ulit!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Bumalik"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Mag-swipe pakaliwa o pakanan gamit ang tatlong daliri sa iyong touchpad"</string> @@ -1546,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"Para tingnan ang kamakailang app, mag-swipe pataas at i-hold gamit ang tatlong daliri sa touchpad"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"Para tingnan ang lahat ng iyong app, pindutin ang action key sa keyboard mo"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"Na-redact"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"I-unlock para tingnan"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"I-unlock para tingnan ang code"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"Edukasyon ayon sa konteksto"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"Gamitin ang iyong touchpad para bumalik"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"Mag-swipe pakaliwa o pakanan gamit ang tatlong daliri. I-tap para matuto pa tungkol sa mga galaw."</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index dca7381944be..b6432030aa01 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth bağlandı."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth cihaz simgesi"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Cihaz ayrıntılarını yapılandırmak için tıklayın"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Cihaz ayrıntılarını yapılandırın"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Tüm cihazları görün"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Yeni cihaz eşleme"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Pil yüzdesi bilinmiyor."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> ile bağlı."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> bağlantısı kuruldu."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Grubu genişlet."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Uygulama aç."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Bağlanmadı."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Dolaşım"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Giriş"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"İşitme cihazları"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Açılıyor…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Parlaklık ayarlanamıyor, çünkü bu özellik en üstteki uygulama tarafından kontrol ediliyor"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Otomatik döndür"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ekranı otomatik döndür"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Konum"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Çoklu görev"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Sağdaki uygulamayla birlikte bölünmüş ekranı kullan"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Soldaki uygulamayla birlikte bölünmüş ekranı kullan"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Tam ekran kullanın"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Masaüstü görünümünü kullanın"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Bölünmüş ekran kullanırken sağdaki veya alttaki uygulamaya geçiş yap"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Bölünmüş ekran kullanırken soldaki veya üstteki uygulamaya geçiş yapın"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Bölünmüş ekran etkinken: Bir uygulamayı başkasıyla değiştir"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Son uygulamaları görüntüle"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Uygulamalar arasında geçiş yapma"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Bitti"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Sonraki"</string> <string name="gesture_error_title" msgid="469064941635578511">"Tekrar deneyin."</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Geri dön"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Dokunmatik alanda üç parmağınızla sola veya sağa kaydırın"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 4f5c181e947b..db3c02da8fcc 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth під’єднано."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Значок пристрою з Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Натисніть, щоб змінити налаштування пристрою"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Змінити налаштування пристрою"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Переглянути всі пристрої"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Підключити новий пристрій"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Відсоток заряду акумулятора невідомий."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Підключено до <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Під’єднано до пристрою <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Розгорнути групу"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Відкрити додаток"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Не з’єднано."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Роумінг"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Джерело сигналу"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Слухові апарати"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Увімкнення…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Не вдається змінити яскравість, оскільки нею керує основний додаток"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Автообертання"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматично обертати екран"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Геодані"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Багатозадачність"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Розділити екран і показувати додаток праворуч"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Розділити екран і показувати додаток ліворуч"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Використовувати повноекранний режим"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Використовувати версію для комп’ютера"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Перейти до додатка праворуч або внизу на розділеному екрані"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Під час розділення екрана перемикатися на додаток ліворуч або вгорі"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Під час розділення екрана: замінити додаток іншим"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Переглянути нещодавні додатки"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Перемикання між додатками"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Готово"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Далі"</string> <string name="gesture_error_title" msgid="469064941635578511">"Спробуйте ще"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Назад"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Проведіть трьома пальцями вліво чи вправо по сенсорній панелі"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 7cdb223bdfa8..ffc3f5e7c8aa 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g> سے منسلک ہیں۔"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g> سے منسلک ہے۔"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"گروپ کو پھیلائیں۔"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"ایپلیکیشن کھولیں۔"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"مربوط نہیں ہے۔"</string> <string name="data_connection_roaming" msgid="375650836665414797">"رومنگ"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"ان پٹ"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"سماعتی آلات"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"آن ہو رہا ہے…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"چمک کو ایڈجسٹ نہیں کیا جا سکتا کیونکہ اسے سرفہرست ایپ کے ذریعے کنٹرول کیا جا رہا ہے"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"خود کار طور پر گھمائیں"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"اسکرین کو خود کار طور پر گھمائیں"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"مقام"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"کم ترجیحی اطلاع کے آئیکنز دکھائیں"</string> <string name="other" msgid="429768510980739978">"دیگر"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"ٹائل کے سائز کو ٹوگل کریں"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ٹائل ہٹائیں"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"ٹائل کو آخری پوزیشن پر شامل کریں"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ٹائل منتقل کریں"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"حالیہ ایپس دیکھنے کے لیے، ٹچ پیڈ پر تین انگلیوں سے اوپر سوائپ کریں اور دبائے رکھیں"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"اپنی سبھی ایپس دیکھنے کے لیے، اپنے کی بورڈ پر ایکشن کلید دبائیں"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"چھپانے کیلئے تبدیل کردہ"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"دیکھنے کے لیے غیر مقفل کریں"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"کوڈ دیکھنے کے لیے غیر مقفل کریں"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"سیاق و سباق کی تعلیم"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"واپس جانے کے لیے اپنے ٹچ پیڈ کا استعمال کریں"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"تین انگلیوں سے دائیں یا بائیں طرف سوائپ کریں۔ مزید اشارے جاننے کے لیے تھپتھپائیں۔"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 037f83dc34f6..e325cf33adb3 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ulandi."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Bluetooth qurilma belgisi"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Qurilma haqida tafsilotlarni oʻzgartirish uchun bosing"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Qurilma tafsilotlarini sozlash"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Hamma qurilmalar"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Yangi qurilmani ulash"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Batareya quvvati foizi nomaʼlum."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Ulangan: <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Bunga ulangan: <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Guruhni yoying."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Ilovani oching."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Ulanmagan."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Rouming"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Kirish"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Eshitish moslamalari"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Yoqilmoqda…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Yorqinlik umumiy sozlamalar orqali boshqariladi.Uni moslash imkonsiz"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Avto-burilish"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Ekranning avtomatik burilishi"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Joylashuv"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multi-vazifalilik"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Ekranni ajratib, joriy ilovani oʻngga joylash"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Ekranni ajratib, joriy ilovani chapga joylash"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Butun ekrandan foydalanish"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Desktop versiyadan foydalanish"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Ajratilgan ekranda oʻngdagi yoki pastdagi ilovaga almashish"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Ajratilgan ekranda chapdagi yoki yuqoridagi ilovaga almashish"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Ajratilgan rejimda ilovalarni oʻzaro almashtirish"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Oxirgi ilovalarni koʻrish"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Ilovalarni almashtirish"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Tayyor"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Keyingisi"</string> <string name="gesture_error_title" msgid="469064941635578511">"Qayta urining!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Orqaga qaytish"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Sensorli panelda uchta barmoq bilan chapga yoki oʻngga suring"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 59e81bb6a458..f64f0843304b 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Đã kết nối bluetooth."</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Biểu tượng thiết bị Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Nhấp để định cấu hình thông tin thiết bị"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>. Thông tin chi tiết về định cấu hình thiết bị"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Xem tất cả thiết bị"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Ghép nối thiết bị mới"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Tỷ lệ phần trăm pin không xác định."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Đã kết nối với <xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Đã kết nối với <xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Mở rộng nhóm."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Mở ứng dụng."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Chưa được kết nối."</string> <string name="data_connection_roaming" msgid="375650836665414797">"Chuyển vùng"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Thiết bị đầu vào"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Thiết bị trợ thính"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Đang bật…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Không điều chỉnh được độ sáng vì độ sáng đang được ứng dụng trên cùng điều khiển"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Tự động xoay"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Tự động xoay màn hình"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Vị trí"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Đa nhiệm"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Dùng tính năng chia đôi màn hình với ứng dụng ở bên phải"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Dùng tính năng chia đôi màn hình với ứng dụng ở bên trái"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Dùng chế độ toàn màn hình"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Dùng chế độ xem trên máy tính để bàn"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Chuyển sang ứng dụng bên phải hoặc ở dưới khi đang chia đôi màn hình"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Chuyển sang ứng dụng bên trái hoặc ở trên khi đang chia đôi màn hình"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Trong chế độ chia đôi màn hình: thay một ứng dụng bằng ứng dụng khác"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Xem các ứng dụng gần đây"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Chuyển đổi ứng dụng"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Xong"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Tiếp theo"</string> <string name="gesture_error_title" msgid="469064941635578511">"Hãy thử lại!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Quay lại"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Dùng 3 ngón tay vuốt sang trái hoặc sang phải trên bàn di chuột"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 03c4cdf92174..a355a678cfc9 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -245,16 +245,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"蓝牙已连接。"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"蓝牙设备图标"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"点击以配置设备详情"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"<xliff:g id="DEVICE_NAME">%s</xliff:g>。请配置设备详情"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"查看所有设备"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"与新设备配对"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"电池电量百分比未知。"</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已连接到<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"已连接到 <xliff:g id="CAST">%s</xliff:g>。"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"展开群组。"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"打开应用。"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"未连接。"</string> <string name="data_connection_roaming" msgid="375650836665414797">"漫游"</string> @@ -332,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"输入"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"助听器"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"正在开启…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"亮度无法调整,因为它正在被顶层应用控制"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自动屏幕旋转"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"自动旋转屏幕"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"位置信息"</string> @@ -901,10 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"多任务处理"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"使用分屏模式,并将应用置于右侧"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"使用分屏模式,并将应用置于左侧"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"使用全屏"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"使用桌面版视图"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"使用分屏模式时,切换到右侧或下方的应用"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"使用分屏模式时,切换到左侧或上方的应用"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"在分屏期间:将一个应用替换为另一个应用"</string> @@ -1507,8 +1507,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"查看最近用过的应用"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"切换应用"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"完成"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"继续"</string> <string name="gesture_error_title" msgid="469064941635578511">"再试一次!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"返回"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"在触控板上用三根手指向左或向右滑动"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 472f531b5c69..c5a81fb25a9b 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"已連接至 <xliff:g id="CAST">%s</xliff:g>。"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"展開群組。"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"開啟應用程式。"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"未連線。"</string> <string name="data_connection_roaming" msgid="375650836665414797">"漫遊"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"輸入"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"助聽器"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"正在開啟…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"無法調整亮度,因為目前是由上層應用程式控制亮度"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自動旋轉"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"自動旋轉螢幕"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"位置"</string> @@ -337,7 +342,7 @@ <string name="quick_settings_camera_label" msgid="5612076679385269339">"相機存取權"</string> <string name="quick_settings_mic_label" msgid="8392773746295266375">"麥克風存取權"</string> <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"允許"</string> - <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"已禁用"</string> + <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"已封鎖"</string> <string name="quick_settings_media_device_label" msgid="8034019242363789941">"媒體裝置"</string> <string name="quick_settings_user_title" msgid="8673045967216204537">"使用者"</string> <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string> @@ -898,8 +903,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"多工處理"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"使用分割螢幕,並在右側顯示應用程式"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"使用分割螢幕,並在左側顯示應用程式"</string> - <string name="system_multitasking_full_screen" msgid="4221409316059910349">"使用全螢幕模式"</string> - <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"使用電腦檢視畫面"</string> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"使用全螢幕"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"使用桌面電腦檢視模式"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"使用分割螢幕時,切換至右邊或下方的應用程式"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"使用分割螢幕時,切換至左邊或上方的應用程式"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"使用分割螢幕期間:更換應用程式"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string> <string name="other" msgid="429768510980739978">"其他"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"切換圖塊大小"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"加圖塊去上一個位置"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"如要查看最近使用的應用程式,請用三隻手指在觸控板上向上滑動並按住"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"如要查看所有應用程式,請在鍵盤上按下快捷操作鍵"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"已剔除"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"解鎖即可查看"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"解鎖即可查看驗證碼"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"內容教學"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"使用觸控板返回"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"用三隻手指向左或向右滑動。輕按即可瞭解更多手勢。"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index a56fc03b4b90..24a15a14f1b3 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -252,6 +252,10 @@ <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"已連線至<xliff:g id="BLUETOOTH">%s</xliff:g>。"</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"已連線至 <xliff:g id="CAST">%s</xliff:g>。"</string> <string name="accessibility_expand_group" msgid="521237935987978624">"展開群組。"</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"開啟應用程式。"</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"尚未連線。"</string> <string name="data_connection_roaming" msgid="375650836665414797">"漫遊"</string> @@ -329,7 +333,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"輸入"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"助聽器"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"開啟中…"</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"無法調整亮度,因為目前是由上層應用程式控制亮度"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"自動旋轉"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"自動旋轉螢幕"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"定位"</string> @@ -581,7 +586,7 @@ <string name="media_projection_entry_cast_permission_dialog_option_text_single_app" msgid="6073353940838561981">"投放一個應用程式"</string> <string name="media_projection_entry_cast_permission_dialog_option_text_entire_screen" msgid="8389508187954155307">"投放整個畫面"</string> <string name="media_projection_entry_cast_permission_dialog_warning_entire_screen" msgid="4040447861037324017">"當你投放整個畫面時,畫面上的所有內容都會顯示出來。因此,請謹慎處理密碼、付款資料、訊息、相片和影音內容等資訊。"</string> - <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"當你投放應用程式畫面時,該應用程式呈現或播放的所有內容都會顯示出來。因此,請謹慎處理密碼、付款資料、訊息、相片和影音內容等資訊。"</string> + <string name="media_projection_entry_cast_permission_dialog_warning_single_app" msgid="7487834861348460736">"投放應用程式畫面時,該應用程式呈現或播放的所有內容都會投放出來。因此,請謹慎處理密碼、付款資料、訊息、相片和影音內容等資訊。"</string> <string name="media_projection_entry_cast_permission_dialog_continue_entire_screen" msgid="3261124185304676483">"投放螢幕"</string> <string name="media_projection_entry_cast_app_selector_title" msgid="6323062146661922387">"選擇要投放的應用程式"</string> <string name="media_projection_entry_generic_permission_dialog_title" msgid="4519802931547483628">"要開始分享嗎?"</string> @@ -986,8 +991,7 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string> <string name="other" msgid="429768510980739978">"其他"</string> - <!-- no translation found for accessibility_qs_edit_toggle_tile_size_action (1485194410119733586) --> - <skip /> + <string name="accessibility_qs_edit_toggle_tile_size_action" msgid="1485194410119733586">"切換設定方塊大小"</string> <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string> <string name="accessibility_qs_edit_tile_add_action" msgid="8311378984458545661">"將設定方塊新增到最後一個位置"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string> @@ -1540,10 +1544,8 @@ <string name="overview_edu_toast_content" msgid="5797030644017804518">"如要查看最近使用的應用程式,請在觸控板上向上滑動並按住"</string> <string name="all_apps_edu_toast_content" msgid="8807496014667211562">"如要查看所有應用程式,請按下鍵盤上的快捷操作鍵"</string> <string name="redacted_notification_single_line_title" msgid="212019960919261670">"已遮蓋"</string> - <!-- no translation found for public_notification_single_line_text (3576190291791654933) --> - <skip /> - <!-- no translation found for redacted_otp_notification_single_line_text (5179964116354454118) --> - <skip /> + <string name="public_notification_single_line_text" msgid="3576190291791654933">"解鎖即可查看"</string> + <string name="redacted_otp_notification_single_line_text" msgid="5179964116354454118">"解鎖即可查看驗證碼"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"內容教學"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"使用觸控板返回"</string> <string name="back_edu_notification_content" msgid="2497557451540954068">"用三指向左或向右滑動。輕觸即可進一步瞭解手勢。"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 20be43b95c66..918864886d21 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -247,16 +247,17 @@ <string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetooth ixhunyiwe"</string> <string name="accessibility_bluetooth_device_icon" msgid="9163840051642587982">"Isithonjana sedivayisi ye-Bluetooth"</string> <string name="accessibility_bluetooth_device_settings_gear" msgid="3314916468105272540">"Chofoza ukuze ulungiselele imininingwane yedivayisi"</string> - <!-- no translation found for accessibility_bluetooth_device_settings_gear_with_name (114373701123165491) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_see_all (5260390270128256620) --> - <skip /> - <!-- no translation found for accessibility_bluetooth_device_settings_pair_new_device (7988547106800504256) --> - <skip /> + <string name="accessibility_bluetooth_device_settings_gear_with_name" msgid="114373701123165491">"I-<xliff:g id="DEVICE_NAME">%s</xliff:g>. Lungiselela imininingwane yedivayisi"</string> + <string name="accessibility_bluetooth_device_settings_see_all" msgid="5260390270128256620">"Bona wonke amadivayisi"</string> + <string name="accessibility_bluetooth_device_settings_pair_new_device" msgid="7988547106800504256">"Bhangqa idivayisi entsha"</string> <string name="accessibility_battery_unknown" msgid="1807789554617976440">"Iphesenti lebhethri alaziwa."</string> <string name="accessibility_bluetooth_name" msgid="7300973230214067678">"Xhuma ku-<xliff:g id="BLUETOOTH">%s</xliff:g>."</string> <string name="accessibility_cast_name" msgid="7344437925388773685">"Ixhumeke ku-<xliff:g id="CAST">%s</xliff:g>."</string> <string name="accessibility_expand_group" msgid="521237935987978624">"Nweba iqembu."</string> + <!-- no translation found for accessibility_add_device_to_group (5446422960697860806) --> + <skip /> + <!-- no translation found for accessibility_remove_device_from_group (3114694270949142228) --> + <skip /> <string name="accessibility_open_application" msgid="1749126077501259712">"Vula i-application."</string> <string name="accessibility_not_connected" msgid="4061305616351042142">"Akuxhunyiwe"</string> <string name="data_connection_roaming" msgid="375650836665414797">"Iyazulazula"</string> @@ -334,7 +335,8 @@ <string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"Okokufaka"</string> <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="5553051568867097111">"Imishini yendlebe"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"Iyavula..."</string> - <string name="quick_settings_brightness_unable_adjust_msg" msgid="786478497970492300">"Ayikwazi ukulungisa ukukhanya ngoba ilawulwa yi-app ephezulu"</string> + <!-- no translation found for quick_settings_brightness_unable_adjust_msg (4124028416057617517) --> + <skip /> <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Ukuphenduka okuzenzakalelayo"</string> <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Phendula iskrini ngokuzenzakalela"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Indawo"</string> @@ -903,10 +905,8 @@ <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Ukwenza imisebenzi eminingi"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Sebenzisa ukuhlukanisa isikrini nge-app kwesokudla"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Sebenzisa ukuhlukanisa isikrini nge-app kwesokunxele"</string> - <!-- no translation found for system_multitasking_full_screen (4221409316059910349) --> - <skip /> - <!-- no translation found for system_multitasking_desktop_view (8829838918507805921) --> - <skip /> + <string name="system_multitasking_full_screen" msgid="4221409316059910349">"Sebenzisa isikrini esigcwele"</string> + <string name="system_multitasking_desktop_view" msgid="8829838918507805921">"Sebenzisa ukubuka kwedeskithophu"</string> <string name="system_multitasking_splitscreen_focus_rhs" msgid="3838578650313318508">"Shintshela ku-app ngakwesokudla noma ngezansi ngenkathi usebenzisa uhlukanisa isikrini"</string> <string name="system_multitasking_splitscreen_focus_lhs" msgid="3164261844398662518">"Shintshela ku-app ngakwesokunxele noma ngaphezulu ngenkathi usebenzisa ukuhlukanisa isikrini"</string> <string name="system_multitasking_replace" msgid="7410071959803642125">"Ngesikhathi sokuhlukaniswa kwesikrini: shintsha i-app ngenye"</string> @@ -1509,8 +1509,7 @@ <string name="touchpad_tutorial_recent_apps_gesture_button" msgid="8919227647650347359">"Buka ama-app akamuva"</string> <string name="touchpad_tutorial_switch_apps_gesture_button" msgid="7768255095423767779">"Shintsha ama-app"</string> <string name="touchpad_tutorial_done_button" msgid="176168488821755503">"Kwenziwe"</string> - <!-- no translation found for touchpad_tutorial_next_button (9169718126626806688) --> - <skip /> + <string name="touchpad_tutorial_next_button" msgid="9169718126626806688">"Okulandelayo"</string> <string name="gesture_error_title" msgid="469064941635578511">"Zama futhi!"</string> <string name="touchpad_back_gesture_action_title" msgid="7199067250654332735">"Buyela emuva"</string> <string name="touchpad_back_gesture_guidance" msgid="5352221087725906542">"Swayiphela kwesokunxele noma kwesokudla usebenzisa iminwe emithathu kuphedi yokuthinta"</string> diff --git a/packages/SystemUI/res/values/bools.xml b/packages/SystemUI/res/values/bools.xml index 234c6df69d0b..76e9e372ed7e 100644 --- a/packages/SystemUI/res/values/bools.xml +++ b/packages/SystemUI/res/values/bools.xml @@ -66,4 +66,6 @@ <!-- True when small screen (<sw600dp) is landscape. --> <bool name="is_small_screen_landscape">false</bool> + + <bool name="volume_dialog_ringer_drawer_should_open_to_the_side">false</bool> </resources> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 640e1fa79530..7c370d3bc064 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -390,6 +390,12 @@ <!-- Extra space for guts bundle feedback button --> <dimen name="notification_guts_bundle_feedback_size">48dp</dimen> + <!-- Size of icon buttons in notification info. --> + <!-- 24dp for the icon itself + 16dp * 2 for top and bottom padding --> + <dimen name="notification_2025_guts_button_size">56dp</dimen> + + <dimen name="notification_2025_min_tap_target_size">48dp</dimen> + <dimen name="notification_importance_toggle_size">48dp</dimen> <dimen name="notification_importance_button_separation">8dp</dimen> <dimen name="notification_importance_drawable_padding">8dp</dimen> @@ -402,6 +408,10 @@ <dimen name="notification_importance_button_description_top_margin">12dp</dimen> <dimen name="rect_button_radius">8dp</dimen> + <!-- Padding for importance selection buttons in notification info, 2025 redesign version --> + <dimen name="notification_2025_importance_button_padding_vertical">12dp</dimen> + <dimen name="notification_2025_importance_button_padding_horizontal">16dp</dimen> + <!-- The minimum height for the snackbar shown after the snooze option has been chosen. --> <dimen name="snooze_snackbar_min_height">56dp</dimen> diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml index 47a9bd638088..2d0f0f988341 100644 --- a/packages/SystemUI/res/values/ids.xml +++ b/packages/SystemUI/res/values/ids.xml @@ -294,4 +294,7 @@ <item type="id" name="brightness_dialog_slider" /> <item type="id" name="aod_promoted_notification_view_updater_tag" /> + + <!-- id for the composable battery meter (see UnifiedBattery.kt) --> + <item type="id" name="battery_meter_composable_view" /> </resources> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 6ade48fbf210..6ff1240c5e60 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -4178,4 +4178,7 @@ <string name="qs_edit_mode_reset_dialog_content"> All Quick Settings tiles will reset to the device’s original settings </string> + + <!-- Template that joins disabled message with the label for the voice over. [CHAR LIMIT=NONE] --> + <string name="volume_slider_disabled_message_template"><xliff:g example="Notification" id="stream_name">%1$s</xliff:g>, <xliff:g example="Disabled because ring is muted" id="disabled_message">%2$s</xliff:g></string> </resources> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 8a6b3af172d7..5b96e5085fd2 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -21,6 +21,13 @@ <item name="android:textSize">@dimen/status_bar_clock_size</item> <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item> <item name="android:textColor">@color/status_bar_clock_color</item> + <item name="android:fontFeatureSettings">tnum</item> + </style> + + <style name="TextAppearance.StatusBar.Carrier" parent="@*android:style/TextAppearance.StatusBar.Icon"> + <item name="android:textSize">@dimen/status_bar_clock_size</item> + <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item> + <item name="android:textColor">@color/status_bar_clock_color</item> </style> <style name="TextAppearance.StatusBar.UserChip" parent="@*android:style/TextAppearance.StatusBar.Icon"> @@ -557,7 +564,6 @@ <item name="android:backgroundDimEnabled">false</item> <item name="android:showWhenLocked">true</item> <item name="android:windowBackground">@color/transparent</item> - <item name="android:windowContentOverlay">@null</item> <item name="android:windowFullscreen">true</item> <item name="android:windowIsFloating">false</item> <item name="android:windowNoTitle">true</item> diff --git a/packages/SystemUI/shared/res/values/ids.xml b/packages/SystemUI/shared/res/values/ids.xml index 1ff2f0eff215..e1a525d1cf29 100644 --- a/packages/SystemUI/shared/res/values/ids.xml +++ b/packages/SystemUI/shared/res/values/ids.xml @@ -21,4 +21,8 @@ <item type="id" name="date_smartspace_view" /> <!-- ID of the smartspace weather view. --> <item type="id" name="weather_smartspace_view" /> + <!-- ID of the smartspace date view near the large clock. --> + <item type="id" name="date_smartspace_view_large" /> + <!-- ID of the smartspace weather view near the large clock. --> + <item type="id" name="weather_smartspace_view_large" /> </resources> diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java index 4a4cb7a232c5..8f8bcf273af1 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java @@ -239,7 +239,6 @@ public class KeyguardPatternView extends KeyguardInputView R.dimen.keyguard_pattern_activated_dot_size)); mLockPatternView.setPathWidth( getResources().getDimensionPixelSize(R.dimen.keyguard_pattern_stroke_width)); - mLockPatternView.setKeepDotActivated(true); } mEcaView = findViewById(R.id.keyguard_selector_fade_container); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java index 7fb66640b29f..f6df42575bbd 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java @@ -36,6 +36,7 @@ import com.android.internal.widget.LockPatternView.Cell; import com.android.internal.widget.LockscreenCredential; import com.android.keyguard.EmergencyButtonController.EmergencyButtonCallback; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; +import com.android.systemui.Flags; import com.android.systemui.bouncer.ui.helper.BouncerHapticPlayer; import com.android.systemui.classifier.FalsingClassifier; import com.android.systemui.classifier.FalsingCollector; @@ -237,8 +238,12 @@ public class KeyguardPatternViewController super.onViewAttached(); mLockPatternView.setOnPatternListener(new UnlockPatternListener()); mLockPatternView.setSaveEnabled(false); - mLockPatternView.setInStealthMode(!mLockPatternUtils.isVisiblePatternEnabled( - mSelectedUserInteractor.getSelectedUserId())); + boolean visiblePatternEnabled = mLockPatternUtils.isVisiblePatternEnabled( + mSelectedUserInteractor.getSelectedUserId()); + mLockPatternView.setInStealthMode(!visiblePatternEnabled); + if (Flags.bouncerUiRevamp2()) { + mLockPatternView.setKeepDotActivated(visiblePatternEnabled); + } mLockPatternView.setOnTouchListener((v, event) -> { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { mFalsingCollector.avoidGesture(); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 63101d430c6c..bd09e392c883 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -199,7 +199,7 @@ import javax.inject.Provider; * to be updated. */ @SysUISingleton -public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpable, CoreStartable { +public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreStartable { private static final String TAG = "KeyguardUpdateMonitor"; private static final int BIOMETRIC_LOCKOUT_RESET_DELAY_MS = 600; diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index e7253533aa42..19da5de6b531 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -112,7 +112,7 @@ import javax.inject.Inject; */ @SysUISingleton public class ScreenDecorations implements - CoreStartable, ConfigurationController.ConfigurationListener, Dumpable { + CoreStartable, ConfigurationController.ConfigurationListener { private static final boolean DEBUG_LOGGING = false; private static final String TAG = "ScreenDecorations"; diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java index 85f18800f20b..c78f75a334fd 100644 --- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java @@ -54,6 +54,7 @@ import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin; import com.android.systemui.res.R; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.notification.shared.NotificationContentAlphaOptimization; import com.android.wm.shell.animation.FlingAnimationUtils; import com.android.wm.shell.shared.animation.PhysicsAnimator; @@ -890,12 +891,16 @@ public class SwipeHelper implements Gefingerpoken, Dumpable { if (mFeatureFlags.isEnabled(Flags.NOTIFICATION_DRAG_TO_CONTENTS)) { if (v instanceof ExpandableNotificationRow) { ExpandableNotificationRow enr = (ExpandableNotificationRow) v; - boolean canBubble = enr.getEntry().canBubble(); - Notification notif = enr.getEntry().getSbn().getNotification(); - PendingIntent dragIntent = notif.contentIntent != null ? notif.contentIntent - : notif.fullScreenIntent; - if (dragIntent != null && dragIntent.isActivity() && !canBubble) { - return true; + if (NotificationBundleUi.isEnabled()) { + return enr.getEntryAdapter().canDragAndDrop(); + } else { + boolean canBubble = enr.getEntry().canBubble(); + Notification notif = enr.getEntry().getSbn().getNotification(); + PendingIntent dragIntent = notif.contentIntent != null ? notif.contentIntent + : notif.fullScreenIntent; + if (dragIntent != null && dragIntent.isActivity() && !canBubble) { + return true; + } } } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityRepository.kt b/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityRepository.kt index b33924ca0b70..a09e954d21b1 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityRepository.kt @@ -22,6 +22,8 @@ import com.android.app.tracing.FlowTracing.tracedAwaitClose import com.android.app.tracing.FlowTracing.tracedConflatedCallbackFlow import dagger.Module import dagger.Provides +import kotlin.time.Duration +import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.distinctUntilChanged @@ -32,6 +34,8 @@ interface AccessibilityRepository { /** @see [AccessibilityManager.isEnabled] */ val isEnabled: Flow<Boolean> + fun getRecommendedTimeout(originalTimeout: Duration, uiFlags: Int): Duration + companion object { operator fun invoke(a11yManager: AccessibilityManager): AccessibilityRepository = AccessibilityRepositoryImpl(a11yManager) @@ -40,9 +44,8 @@ interface AccessibilityRepository { private const val TAG = "AccessibilityRepository" -private class AccessibilityRepositoryImpl( - manager: AccessibilityManager, -) : AccessibilityRepository { +private class AccessibilityRepositoryImpl(private val manager: AccessibilityManager) : + AccessibilityRepository { override val isTouchExplorationEnabled: Flow<Boolean> = tracedConflatedCallbackFlow(TAG) { val listener = TouchExplorationStateChangeListener(::trySend) @@ -62,6 +65,12 @@ private class AccessibilityRepositoryImpl( tracedAwaitClose(TAG) { manager.removeAccessibilityStateChangeListener(listener) } } .distinctUntilChanged() + + override fun getRecommendedTimeout(originalTimeout: Duration, uiFlags: Int): Duration { + return manager + .getRecommendedTimeoutMillis(originalTimeout.inWholeMilliseconds.toInt(), uiFlags) + .milliseconds + } } @Module diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegate.java b/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegate.java index 786d27af3994..b730c931be8b 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/hearingaid/HearingDevicesDialogDelegate.java @@ -289,6 +289,8 @@ public class HearingDevicesDialogDelegate implements SystemUIDialog.Delegate, List<DeviceItem> hearingDeviceItemList = getHearingDeviceItemList(); CachedBluetoothDevice activeHearingDevice = getActiveHearingDevice( hearingDeviceItemList); + mLocalBluetoothManager.getEventManager().registerCallback(this); + mMainExecutor.execute(() -> { setupDeviceListView(dialog, hearingDeviceItemList); setupPairNewDeviceButton(dialog); @@ -302,21 +304,6 @@ public class HearingDevicesDialogDelegate implements SystemUIDialog.Delegate, } @Override - public void onStart(@NonNull SystemUIDialog dialog) { - mBgExecutor.execute(() -> { - if (mLocalBluetoothManager != null) { - mLocalBluetoothManager.getEventManager().registerCallback(this); - } - if (mPresetController != null) { - mPresetController.registerHapCallback(); - } - if (mAmbientController != null) { - mAmbientController.start(); - } - }); - } - - @Override public void onStop(@NonNull SystemUIDialog dialog) { mBgExecutor.execute(() -> { if (mLocalBluetoothManager != null) { @@ -378,6 +365,7 @@ public class HearingDevicesDialogDelegate implements SystemUIDialog.Delegate, mPresetLayout = dialog.requireViewById(R.id.preset_layout); mPresetLayout.setVisibility(mPresetController.isPresetControlAvailable() ? VISIBLE : GONE); + mBgExecutor.execute(() -> mPresetController.registerHapCallback()); } private void setupAmbientControls(CachedBluetoothDevice activeHearingDevice) { @@ -387,6 +375,7 @@ public class HearingDevicesDialogDelegate implements SystemUIDialog.Delegate, mDialog.getContext(), mLocalBluetoothManager, ambientLayout); mAmbientController.setShowUiWhenLocalDataExist(false); mAmbientController.loadDevice(activeHearingDevice); + mBgExecutor.execute(() -> mAmbientController.start()); } private void setupPairNewDeviceButton(SystemUIDialog dialog) { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt index 4dcf26808a9e..0902d19b6787 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt @@ -34,6 +34,7 @@ import android.util.Log import android.util.RotationUtils import android.view.HapticFeedbackConstants import android.view.MotionEvent +import android.view.accessibility.AccessibilityManager import com.android.app.tracing.coroutines.launchTraced as launch import com.android.keyguard.AuthInteractionProperties import com.android.launcher3.icons.IconProvider @@ -85,7 +86,17 @@ constructor( private val udfpsUtils: UdfpsUtils, private val iconProvider: IconProvider, private val activityTaskManager: ActivityTaskManager, + private val accessibilityManager: AccessibilityManager, ) { + // When a11y enabled, increase message delay to ensure messages get read + private val messageDelay = + accessibilityManager + .getRecommendedTimeoutMillis( + BiometricPrompt.HIDE_DIALOG_DELAY, + AccessibilityManager.FLAG_CONTENT_CONTROLS or AccessibilityManager.FLAG_CONTENT_TEXT, + ) + .toLong() + /** The set of modalities available for this prompt */ val modalities: Flow<BiometricModalities> = promptSelectorInteractor.prompt @@ -692,7 +703,7 @@ constructor( messageJob?.cancel() messageJob = launch { - delay(BiometricPrompt.HIDE_DIALOG_DELAY.toLong()) + delay(messageDelay) if (authenticateAfterError) { showAuthenticating(messageAfterError) } else { @@ -754,7 +765,7 @@ constructor( messageJob?.cancel() messageJob = launch { - delay(BiometricPrompt.HIDE_DIALOG_DELAY.toLong()) + delay(messageDelay) showAuthenticating(messageAfterHelp) } } diff --git a/packages/SystemUI/src/com/android/systemui/common/data/repository/PackageInstallerMonitor.kt b/packages/SystemUI/src/com/android/systemui/common/data/repository/PackageInstallerMonitor.kt index 208adc22a3e0..5f7dca8d649a 100644 --- a/packages/SystemUI/src/com/android/systemui/common/data/repository/PackageInstallerMonitor.kt +++ b/packages/SystemUI/src/com/android/systemui/common/data/repository/PackageInstallerMonitor.kt @@ -64,15 +64,14 @@ constructor( synchronized(sessions) { sessions.putAll( packageInstaller.allSessions - .filter { !TextUtils.isEmpty(it.appPackageName) } - .map { session -> session.toModel() } + .mapNotNull { session -> session.toModel() } .associateBy { it.sessionId } ) updateInstallerSessionsFlow() } packageInstaller.registerSessionCallback( this@PackageInstallerMonitor, - bgHandler + bgHandler, ) } else { synchronized(sessions) { @@ -130,7 +129,7 @@ constructor( if (session == null) { sessions.remove(sessionId) } else { - sessions[sessionId] = session.toModel() + session.toModel()?.apply { sessions[sessionId] = this } } updateInstallerSessionsFlow() } @@ -144,7 +143,11 @@ constructor( companion object { const val TAG = "PackageInstallerMonitor" - private fun PackageInstaller.SessionInfo.toModel(): PackageInstallSession { + private fun PackageInstaller.SessionInfo.toModel(): PackageInstallSession? { + if (TextUtils.isEmpty(this.appPackageName)) { + return null + } + return PackageInstallSession( sessionId = this.sessionId, packageName = this.appPackageName, diff --git a/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt b/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt index 5e8c21f9abf5..4451f07318ef 100644 --- a/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt +++ b/packages/SystemUI/src/com/android/systemui/common/shared/colors/SurfaceEffectColors.kt @@ -16,23 +16,27 @@ package com.android.systemui.common.shared.colors -import android.content.res.Resources +import android.content.Context object SurfaceEffectColors { @JvmStatic - fun surfaceEffect0(r: Resources): Int { - return r.getColor(com.android.internal.R.color.surface_effect_0) + fun surfaceEffect0(context: Context): Int { + return context.resources.getColor( + com.android.internal.R.color.surface_effect_0, context.theme) } @JvmStatic - fun surfaceEffect1(r: Resources): Int { - return r.getColor(com.android.internal.R.color.surface_effect_1) + fun surfaceEffect1(context: Context): Int { + return context.resources.getColor( + com.android.internal.R.color.surface_effect_1, context.theme) } @JvmStatic - fun surfaceEffect2(r: Resources): Int { - return r.getColor(com.android.internal.R.color.surface_effect_2) + fun surfaceEffect2(context: Context): Int { + return context.resources.getColor( + com.android.internal.R.color.surface_effect_2, context.theme) } @JvmStatic - fun surfaceEffect3(r: Resources): Int { - return r.getColor(com.android.internal.R.color.surface_effect_3) + fun surfaceEffect3(context: Context): Int { + return context.resources.getColor( + com.android.internal.R.color.surface_effect_3, context.theme) } } diff --git a/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayRepository.kt b/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayRepository.kt index d4642006e68d..721d116004f3 100644 --- a/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/display/data/repository/DisplayRepository.kt @@ -26,14 +26,16 @@ import android.hardware.display.DisplayManager.EVENT_TYPE_DISPLAY_REMOVED import android.os.Handler import android.util.Log import android.view.Display +import android.view.IWindowManager import com.android.app.tracing.FlowTracing.traceEach import com.android.app.tracing.traceSection -import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.data.DisplayEvent +import com.android.systemui.statusbar.CommandQueue import com.android.systemui.util.Compile import com.android.systemui.util.kotlin.pairwiseBy +import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope @@ -43,6 +45,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter @@ -50,12 +53,13 @@ import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.map +import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.scan import kotlinx.coroutines.flow.stateIn -/** Provides a [Flow] of [Display] as returned by [DisplayManager]. */ +/** Repository for providing access to display related information and events. */ interface DisplayRepository { /** Display change event indicating a change to the given displayId has occurred. */ val displayChangeEvent: Flow<Int> @@ -66,6 +70,9 @@ interface DisplayRepository { /** Display removal event indicating a display has been removed. */ val displayRemovalEvent: Flow<Int> + /** A [StateFlow] that maintains a set of display IDs that should have system decorations. */ + val displayIdsWithSystemDecorations: StateFlow<Set<Int>> + /** * Provides the current set of displays. * @@ -124,6 +131,8 @@ class DisplayRepositoryImpl @Inject constructor( private val displayManager: DisplayManager, + private val commandQueue: CommandQueue, + private val windowManager: IWindowManager, @Background backgroundHandler: Handler, @Background bgApplicationScope: CoroutineScope, @Background backgroundCoroutineDispatcher: CoroutineDispatcher, @@ -426,6 +435,56 @@ constructor( .map { it.resultSet } } + private val decorationEvents: Flow<Event> = callbackFlow { + val callback = + object : CommandQueue.Callbacks { + override fun onDisplayAddSystemDecorations(displayId: Int) { + trySend(Event.Add(displayId)) + } + + override fun onDisplayRemoveSystemDecorations(displayId: Int) { + trySend(Event.Remove(displayId)) + } + } + commandQueue.addCallback(callback) + awaitClose { commandQueue.removeCallback(callback) } + } + + private val initialDisplayIdsWithDecorations: Set<Int> = + displayIds.value.filter { windowManager.shouldShowSystemDecors(it) }.toSet() + + /** + * A [StateFlow] that maintains a set of display IDs that should have system decorations. + * + * Updates to the set are triggered by: + * - Adding displays via [CommandQueue.Callbacks.onDisplayAddSystemDecorations]. + * - Removing displays via [CommandQueue.Callbacks.onDisplayRemoveSystemDecorations]. + * - Removing displays via [displayRemovalEvent] emissions. + * + * The set is initialized with displays that qualify for system decorations based on + * [WindowManager.shouldShowSystemDecors]. + */ + override val displayIdsWithSystemDecorations: StateFlow<Set<Int>> = + merge(decorationEvents, displayRemovalEvent.map { Event.Remove(it) }) + .scan(initialDisplayIdsWithDecorations) { displayIds: Set<Int>, event: Event -> + when (event) { + is Event.Add -> displayIds + event.displayId + is Event.Remove -> displayIds - event.displayId + } + } + .distinctUntilChanged() + .stateIn( + scope = bgApplicationScope, + started = SharingStarted.WhileSubscribed(), + initialValue = initialDisplayIdsWithDecorations, + ) + + private sealed class Event(val displayId: Int) { + class Add(displayId: Int) : Event(displayId) + + class Remove(displayId: Int) : Event(displayId) + } + private companion object { const val TAG = "DisplayRepository" val DEBUG = Log.isLoggable(TAG, Log.DEBUG) || Compile.IS_DEBUG diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index d9d39953e99a..84bb23140ae7 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -160,9 +160,6 @@ object Flags { // TODO(b/291315866): Tracking Bug @JvmField val SIGNAL_CALLBACK_DEPRECATION = releasedFlag("signal_callback_deprecation") - // TODO(b/301610137): Tracking bug - @JvmField val NEW_NETWORK_SLICE_UI = releasedFlag("new_network_slice_ui") - // TODO(b/311222557): Tracking bug val ROAMING_INDICATOR_VIA_DISPLAY_INFO = releasedFlag("roaming_indicator_via_display_info") diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index efa9c21f96b4..cc0efbcf3e44 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -241,7 +241,7 @@ import java.util.function.Consumer; * directly to the keyguard UI is posted to a {@link android.os.Handler} to ensure it is taken on the UI * thread of the keyguard. */ -public class KeyguardViewMediator implements CoreStartable, Dumpable, +public class KeyguardViewMediator implements CoreStartable, StatusBarStateController.StateListener { private static final boolean ENABLE_NEW_KEYGUARD_SHELL_TRANSITIONS = diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt index 5c4e34e31d58..fc5914b02e05 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt @@ -22,6 +22,7 @@ import androidx.constraintlayout.widget.ConstraintSet import androidx.lifecycle.Lifecycle import androidx.lifecycle.repeatOnLifecycle import com.android.app.tracing.coroutines.launchTraced as launch +import com.android.systemui.Flags import com.android.systemui.customization.R as customR import com.android.systemui.keyguard.shared.model.KeyguardBlueprint import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition @@ -81,6 +82,12 @@ object KeyguardBlueprintViewBinder { logger.logConstraintSet(cs, clockViewModel) cs.applyTo(constraintLayout) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + manuallySetDateWeatherConstraintsOnConstraintLayout( + cs, + constraintLayout, + ) + } } } } @@ -104,6 +111,12 @@ object KeyguardBlueprintViewBinder { } logger.logConstraintSet(cs, clockViewModel) cs.applyTo(constraintLayout) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + manuallySetDateWeatherConstraintsOnConstraintLayout( + cs, + constraintLayout, + ) + } } } } @@ -111,6 +124,24 @@ object KeyguardBlueprintViewBinder { } } + private fun manuallySetDateWeatherConstraintsOnConstraintLayout( + cs: ConstraintSet, + constraintLayout: ConstraintLayout, + ) { + val ids = + listOf( + sharedR.id.date_smartspace_view, + sharedR.id.date_smartspace_view_large, + sharedR.id.weather_smartspace_view, + sharedR.id.weather_smartspace_view_large, + ) + + for (i in ids) { + constraintLayout.getViewById(i)?.visibility = cs.getVisibility(i) + constraintLayout.getViewById(i)?.alpha = cs.getConstraint(i).propertySet.alpha + } + } + private fun Logger.logConstraintSet(cs: ConstraintSet, viewModel: KeyguardClockViewModel) { val currentClock = viewModel.currentClock.value if (currentClock == null) return @@ -137,6 +168,24 @@ object KeyguardBlueprintViewBinder { int1 = cs.getVisibility(smartspaceDateId) str1 = "${cs.getConstraint(smartspaceDateId).propertySet.alpha}" } + + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + this.i({ "applyCsToSmartspaceWeather: vis=${getVisText(int1)}; alpha=$str1" }) { + val smartspaceDateId = sharedR.id.weather_smartspace_view + int1 = cs.getVisibility(smartspaceDateId) + str1 = "${cs.getConstraint(smartspaceDateId).propertySet.alpha}" + } + this.i({ "applyCsToSmartspaceDateLarge: vis=${getVisText(int1)}; alpha=$str1" }) { + val smartspaceDateId = sharedR.id.date_smartspace_view_large + int1 = cs.getVisibility(smartspaceDateId) + str1 = "${cs.getConstraint(smartspaceDateId).propertySet.alpha}" + } + this.i({ "applyCsToSmartspaceWeatherLarge: vis=${getVisText(int1)}; alpha=$str1" }) { + val smartspaceDateId = sharedR.id.weather_smartspace_view_large + int1 = cs.getVisibility(smartspaceDateId) + str1 = "${cs.getConstraint(smartspaceDateId).propertySet.alpha}" + } + } } private val TAG = "KeyguardBlueprintViewBinder" diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt index 0a958e9d06a4..a5b303ab4bcb 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt @@ -72,25 +72,25 @@ object KeyguardClockViewBinder { // When changing to new clock, we need to remove old views from burnInLayer var lastClock: ClockController? = null launch { - viewModel.currentClock.collect { currentClock -> - if (lastClock != currentClock) { - cleanupClockViews( - lastClock, - keyguardRootView, - viewModel.burnInLayer, - ) - lastClock = currentClock - } - - addClockViews(currentClock, keyguardRootView) - updateBurnInLayer( + viewModel.currentClock.collect { currentClock -> + if (lastClock != currentClock) { + cleanupClockViews( + lastClock, keyguardRootView, - viewModel, - viewModel.clockSize.value, + viewModel.burnInLayer, ) - applyConstraints(clockSection, keyguardRootView, true) + lastClock = currentClock } + + addClockViews(currentClock, keyguardRootView) + updateBurnInLayer( + keyguardRootView, + viewModel, + viewModel.clockSize.value, + ) + applyConstraints(clockSection, keyguardRootView, true) } + } .invokeOnCompletion { cleanupClockViews(lastClock, keyguardRootView, viewModel.burnInLayer) lastClock = null @@ -106,12 +106,7 @@ object KeyguardClockViewBinder { launch { viewModel.clockShouldBeCentered.collect { viewModel.currentClock.value?.let { - // TODO(b/301502635): remove "!it.config.useCustomClockScene" when - // migrate clocks to blueprint is fully rolled out - if ( - it.largeClock.config.hasCustomPositionUpdatedAnimation && - !it.config.useCustomClockScene - ) { + if (it.largeClock.config.hasCustomPositionUpdatedAnimation) { blueprintInteractor.refreshBlueprint(Type.DefaultClockStepping) } else { blueprintInteractor.refreshBlueprint(Type.DefaultTransition) @@ -122,11 +117,11 @@ object KeyguardClockViewBinder { launch { combine( - viewModel.hasAodIcons, - rootViewModel.isNotifIconContainerVisible.map { it.value }, - ) { hasIcon, isVisible -> - hasIcon && isVisible - } + viewModel.hasAodIcons, + rootViewModel.isNotifIconContainerVisible.map { it.value }, + ) { hasIcon, isVisible -> + hasIcon && isVisible + } .distinctUntilChanged() .collect { _ -> viewModel.currentClock.value?.let { diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt index c7791cda7046..45801ba3517a 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt @@ -69,6 +69,7 @@ import com.android.systemui.plugins.FalsingManager import com.android.systemui.res.R import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.domain.interactor.ShadeInteractor +import com.android.systemui.shared.R as sharedR import com.android.systemui.statusbar.CrossFadeHelper import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.phone.ScreenOffAnimationController @@ -88,7 +89,6 @@ import kotlin.math.min import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update @@ -188,6 +188,10 @@ object KeyguardRootViewBinder { viewModel.translationY.collect { y -> childViews[burnInLayerId]?.translationY = y childViews[largeClockId]?.translationY = y + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + childViews[largeClockDateId]?.translationY = y + childViews[largeClockWeatherId]?.translationY = y + } childViews[aodPromotedNotificationId]?.translationY = y childViews[aodNotificationIconContainerId]?.translationY = y } @@ -203,6 +207,7 @@ object KeyguardRootViewBinder { childViews[aodPromotedNotificationId]?.translationX = px childViews[aodNotificationIconContainerId]?.translationX = px } + state.isToOrFrom(KeyguardState.GLANCEABLE_HUB) -> { for ((key, childView) in childViews.entries) { when (key) { @@ -212,6 +217,7 @@ object KeyguardRootViewBinder { deviceEntryIcon -> { // Do not move these views } + else -> childView.translationX = px } } @@ -374,17 +380,9 @@ object KeyguardRootViewBinder { if (wallpaperFocalAreaViewModel.hasFocalArea.value) { launch { wallpaperFocalAreaViewModel.wallpaperFocalAreaBounds.collect { - wallpaperFocalAreaBounds -> - wallpaperFocalAreaViewModel.setFocalAreaBounds( - wallpaperFocalAreaBounds - ) + wallpaperFocalAreaViewModel.setFocalAreaBounds(it) } } - launch { - wallpaperFocalAreaViewModel.wallpaperFocalAreaBounds - .filterNotNull() - .collect { wallpaperFocalAreaViewModel.setFocalAreaBounds(it) } - } } } } @@ -582,6 +580,8 @@ object KeyguardRootViewBinder { private val aodPromotedNotificationId = AodPromotedNotificationSection.viewId private val aodNotificationIconContainerId = R.id.aod_notification_icon_container private val largeClockId = customR.id.lockscreen_clock_view_large + private val largeClockDateId = sharedR.id.date_smartspace_view_large + private val largeClockWeatherId = sharedR.id.weather_smartspace_view_large private val smallClockId = customR.id.lockscreen_clock_view private val indicationArea = R.id.keyguard_indication_area private val startButton = R.id.start_button diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt index 9c886b228ca9..def1ac8742da 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt @@ -26,6 +26,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteract import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Config import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel +import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.res.R @@ -37,6 +38,7 @@ object KeyguardSmartspaceViewBinder { @JvmStatic fun bind( keyguardRootView: ConstraintLayout, + keyguardRootViewModel: KeyguardRootViewModel, clockViewModel: KeyguardClockViewModel, smartspaceViewModel: KeyguardSmartspaceViewModel, blueprintInteractor: KeyguardBlueprintInteractor, @@ -77,6 +79,26 @@ object KeyguardSmartspaceViewBinder { ) } } + + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + launch("$TAG#smartspaceViewModel.burnInLayerVisibility") { + keyguardRootViewModel.burnInLayerVisibility.collect { visibility -> + if (clockViewModel.isLargeClockVisible.value) { + // hide small clock date/weather + val dateView = + keyguardRootView.requireViewById<View>( + sharedR.id.date_smartspace_view + ) + dateView.visibility = View.GONE + val weatherView = + keyguardRootView.requireViewById<View>( + sharedR.id.weather_smartspace_view + ) + weatherView.visibility = View.GONE + } + } + } + } } } } @@ -125,6 +147,11 @@ object KeyguardSmartspaceViewBinder { val dateView = constraintLayout.requireViewById<View>(sharedR.id.date_smartspace_view) addView(dateView) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + val weatherView = + constraintLayout.requireViewById<View>(sharedR.id.weather_smartspace_view) + addView(weatherView) + } } } } @@ -142,6 +169,11 @@ object KeyguardSmartspaceViewBinder { val dateView = constraintLayout.requireViewById<View>(sharedR.id.date_smartspace_view) removeView(dateView) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + val weatherView = + constraintLayout.requireViewById<View>(sharedR.id.weather_smartspace_view) + removeView(weatherView) + } } } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt index 85eae6ed98b3..242926b3e1d1 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/preview/KeyguardPreviewRenderer.kt @@ -292,7 +292,11 @@ constructor( parentView.removeView(smartSpaceView) } - smartSpaceView = lockscreenSmartspaceController.buildAndConnectDateView(parentView) + smartSpaceView = + lockscreenSmartspaceController.buildAndConnectDateView( + parent = parentView, + isLargeClock = false, + ) val topPadding: Int = smartspaceViewModel.getLargeClockSmartspaceTopPadding( diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt index 738fb73a4918..8a33c6471326 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt @@ -54,13 +54,13 @@ import kotlinx.coroutines.DisposableHandle internal fun ConstraintSet.setVisibility(views: Iterable<View>, visibility: Int) = views.forEach { view -> this.setVisibility(view.id, visibility) } -internal fun ConstraintSet.setAlpha(views: Iterable<View>, alpha: Float) = +private fun ConstraintSet.setAlpha(views: Iterable<View>, alpha: Float) = views.forEach { view -> this.setAlpha(view.id, alpha) } -internal fun ConstraintSet.setScaleX(views: Iterable<View>, scaleX: Float) = +private fun ConstraintSet.setScaleX(views: Iterable<View>, scaleX: Float) = views.forEach { view -> this.setScaleX(view.id, scaleX) } -internal fun ConstraintSet.setScaleY(views: Iterable<View>, scaleY: Float) = +private fun ConstraintSet.setScaleY(views: Iterable<View>, scaleY: Float) = views.forEach { view -> this.setScaleY(view.id, scaleY) } @SysUISingleton @@ -119,8 +119,23 @@ constructor( setVisibility(getNonTargetClockFace(clock).views, GONE) setAlpha(getTargetClockFace(clock).views, 1F) setAlpha(getNonTargetClockFace(clock).views, 0F) + if (!keyguardClockViewModel.isLargeClockVisible.value) { - connect(sharedR.id.bc_smartspace_view, TOP, sharedR.id.date_smartspace_view, BOTTOM) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + connect( + sharedR.id.bc_smartspace_view, + TOP, + customR.id.lockscreen_clock_view, + BOTTOM, + ) + } else { + connect( + sharedR.id.bc_smartspace_view, + TOP, + sharedR.id.date_smartspace_view, + BOTTOM, + ) + } } else { setScaleX(getTargetClockFace(clock).views, aodBurnInViewModel.movement.value.scale) setScaleY(getTargetClockFace(clock).views, aodBurnInViewModel.movement.value.scale) @@ -136,7 +151,7 @@ constructor( if (keyguardClockViewModel.isLargeClockVisible.value) clock.smallClock.layout else clock.largeClock.layout - fun constrainWeatherClockDateIconsBarrier(constraints: ConstraintSet) { + private fun constrainWeatherClockDateIconsBarrier(constraints: ConstraintSet) { constraints.apply { createBarrier( R.id.weather_clock_bc_smartspace_bottom, @@ -182,9 +197,14 @@ constructor( TOP, ) val largeClockTopMargin = - keyguardClockViewModel.getLargeClockTopMargin() + - getDimen(DATE_WEATHER_VIEW_HEIGHT) + - getDimen(ENHANCED_SMARTSPACE_HEIGHT) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + keyguardClockViewModel.getLargeClockTopMargin() + + getDimen(ENHANCED_SMARTSPACE_HEIGHT) + } else { + keyguardClockViewModel.getLargeClockTopMargin() + + getDimen(DATE_WEATHER_VIEW_HEIGHT) + + getDimen(ENHANCED_SMARTSPACE_HEIGHT) + } connect( customR.id.lockscreen_clock_view_large, TOP, @@ -224,7 +244,6 @@ constructor( val smallClockBottom = keyguardClockViewModel.getSmallClockTopMargin() + context.resources.getDimensionPixelSize(customR.dimen.small_clock_height) - val dateWeatherSmartspaceHeight = getDimen(context, DATE_WEATHER_VIEW_HEIGHT).toFloat() val marginBetweenSmartspaceAndNotification = context.resources.getDimensionPixelSize( R.dimen.keyguard_status_view_bottom_margin @@ -235,11 +254,19 @@ constructor( 0 } - clockInteractor.setNotificationStackDefaultTop( - smallClockBottom + - dateWeatherSmartspaceHeight + - marginBetweenSmartspaceAndNotification - ) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + clockInteractor.setNotificationStackDefaultTop( + (smallClockBottom + marginBetweenSmartspaceAndNotification).toFloat() + ) + } else { + val dateWeatherSmartspaceHeight = + getDimen(context, DATE_WEATHER_VIEW_HEIGHT).toFloat() + clockInteractor.setNotificationStackDefaultTop( + smallClockBottom + + dateWeatherSmartspaceHeight + + marginBetweenSmartspaceAndNotification + ) + } } constrainWeatherClockDateIconsBarrier(constraints) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt index d6d03c7e02d1..37cc852ffe00 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt @@ -33,6 +33,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardSmartspaceInterac import com.android.systemui.keyguard.shared.model.KeyguardSection import com.android.systemui.keyguard.ui.binder.KeyguardSmartspaceViewBinder import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel +import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel import com.android.systemui.res.R as R import com.android.systemui.shade.ShadeDisplayAware @@ -53,10 +54,13 @@ constructor( val smartspaceController: LockscreenSmartspaceController, val keyguardUnlockAnimationController: KeyguardUnlockAnimationController, private val blueprintInteractor: Lazy<KeyguardBlueprintInteractor>, + private val keyguardRootViewModel: KeyguardRootViewModel, ) : KeyguardSection() { private var smartspaceView: View? = null private var weatherView: View? = null - private var dateWeatherView: ViewGroup? = null + private var dateView: ViewGroup? = null + private var weatherViewLargeClock: View? = null + private var dateViewLargeClock: View? = null private var smartspaceVisibilityListener: OnGlobalLayoutListener? = null private var pastVisibility: Int = -1 @@ -73,16 +77,33 @@ constructor( override fun addViews(constraintLayout: ConstraintLayout) { if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return smartspaceView = smartspaceController.buildAndConnectView(constraintLayout) - weatherView = smartspaceController.buildAndConnectWeatherView(constraintLayout) - dateWeatherView = - smartspaceController.buildAndConnectDateView(constraintLayout) as ViewGroup + weatherView = smartspaceController.buildAndConnectWeatherView(constraintLayout, false) + dateView = + smartspaceController.buildAndConnectDateView(constraintLayout, false) as? ViewGroup + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + weatherViewLargeClock = + smartspaceController.buildAndConnectWeatherView(constraintLayout, true) + dateViewLargeClock = + smartspaceController.buildAndConnectDateView(constraintLayout, true) + } pastVisibility = smartspaceView?.visibility ?: View.GONE constraintLayout.addView(smartspaceView) - if (keyguardSmartspaceViewModel.isDateWeatherDecoupled) { - constraintLayout.addView(dateWeatherView) - // Place weather right after the date, before the extras (alarm and dnd) - val index = if (dateWeatherView?.childCount == 0) 0 else 1 - dateWeatherView?.addView(weatherView, index) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + dateView?.visibility = View.GONE + weatherView?.visibility = View.GONE + dateViewLargeClock?.visibility = View.GONE + weatherViewLargeClock?.visibility = View.GONE + constraintLayout.addView(dateView) + constraintLayout.addView(weatherView) + constraintLayout.addView(weatherViewLargeClock) + constraintLayout.addView(dateViewLargeClock) + } else { + if (keyguardSmartspaceViewModel.isDateWeatherDecoupled) { + constraintLayout.addView(dateView) + // Place weather right after the date, before the extras (alarm and dnd) + val index = if (dateView?.childCount == 0) 0 else 1 + dateView?.addView(weatherView, index) + } } keyguardUnlockAnimationController.lockscreenSmartspace = smartspaceView smartspaceVisibilityListener = OnGlobalLayoutListener { @@ -103,6 +124,7 @@ constructor( disposableHandle = KeyguardSmartspaceViewBinder.bind( constraintLayout, + keyguardRootViewModel, keyguardClockViewModel, keyguardSmartspaceViewModel, blueprintInteractor.get(), @@ -117,13 +139,15 @@ constructor( constraintSet.apply { constrainHeight(sharedR.id.date_smartspace_view, ConstraintSet.WRAP_CONTENT) constrainWidth(sharedR.id.date_smartspace_view, ConstraintSet.WRAP_CONTENT) - connect( - sharedR.id.date_smartspace_view, - ConstraintSet.START, - ConstraintSet.PARENT_ID, - ConstraintSet.START, - dateWeatherPaddingStart, - ) + if (!com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + connect( + sharedR.id.date_smartspace_view, + ConstraintSet.START, + ConstraintSet.PARENT_ID, + ConstraintSet.START, + dateWeatherPaddingStart, + ) + } constrainHeight(sharedR.id.bc_smartspace_view, ConstraintSet.WRAP_CONTENT) constrainWidth(sharedR.id.bc_smartspace_view, ConstraintSet.MATCH_CONSTRAINT) @@ -142,51 +166,222 @@ constructor( ConstraintSet.END, smartspaceHorizontalPadding, ) - if (keyguardClockViewModel.hasCustomWeatherDataDisplay.value) { - clear(sharedR.id.date_smartspace_view, ConstraintSet.TOP) - connect( - sharedR.id.date_smartspace_view, - ConstraintSet.BOTTOM, - sharedR.id.bc_smartspace_view, - ConstraintSet.TOP, - ) + if (!com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + clear(sharedR.id.date_smartspace_view, ConstraintSet.TOP) + connect( + sharedR.id.date_smartspace_view, + ConstraintSet.BOTTOM, + sharedR.id.bc_smartspace_view, + ConstraintSet.TOP, + ) + } } else { clear(sharedR.id.date_smartspace_view, ConstraintSet.BOTTOM) - connect( - sharedR.id.date_smartspace_view, - ConstraintSet.TOP, - customR.id.lockscreen_clock_view, - ConstraintSet.BOTTOM, + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + connect( + sharedR.id.bc_smartspace_view, + ConstraintSet.TOP, + customR.id.lockscreen_clock_view, + ConstraintSet.BOTTOM, + ) + } else { + connect( + sharedR.id.date_smartspace_view, + ConstraintSet.TOP, + customR.id.lockscreen_clock_view, + ConstraintSet.BOTTOM, + ) + connect( + sharedR.id.bc_smartspace_view, + ConstraintSet.TOP, + sharedR.id.date_smartspace_view, + ConstraintSet.BOTTOM, + ) + } + } + + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + if (keyguardClockViewModel.isLargeClockVisible.value) { + setVisibility(sharedR.id.weather_smartspace_view, GONE) + setVisibility(sharedR.id.date_smartspace_view, GONE) + constrainHeight( + sharedR.id.date_smartspace_view_large, + ConstraintSet.WRAP_CONTENT, + ) + constrainWidth( + sharedR.id.date_smartspace_view_large, + ConstraintSet.WRAP_CONTENT, + ) + constrainHeight( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.WRAP_CONTENT, + ) + constrainWidth( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.WRAP_CONTENT, + ) + connect( + sharedR.id.date_smartspace_view_large, + ConstraintSet.TOP, + customR.id.lockscreen_clock_view_large, + ConstraintSet.BOTTOM, + dateWeatherPaddingStart, + ) + + connect( + sharedR.id.date_smartspace_view_large, + ConstraintSet.START, + customR.id.lockscreen_clock_view_large, + ConstraintSet.START, + ) + connect( + sharedR.id.date_smartspace_view_large, + ConstraintSet.END, + sharedR.id.weather_smartspace_view_large, + ConstraintSet.START, + ) + + connect( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.BOTTOM, + sharedR.id.date_smartspace_view_large, + ConstraintSet.BOTTOM, + ) + + connect( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.TOP, + sharedR.id.date_smartspace_view_large, + ConstraintSet.TOP, + ) + + connect( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.START, + sharedR.id.date_smartspace_view_large, + ConstraintSet.END, + ) + + connect( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.END, + customR.id.lockscreen_clock_view_large, + ConstraintSet.END, + ) + + setHorizontalChainStyle( + sharedR.id.weather_smartspace_view_large, + ConstraintSet.CHAIN_PACKED, + ) + setHorizontalChainStyle( + sharedR.id.date_smartspace_view_large, + ConstraintSet.CHAIN_PACKED, + ) + } else { + setVisibility(sharedR.id.weather_smartspace_view_large, GONE) + setVisibility(sharedR.id.date_smartspace_view_large, GONE) + constrainHeight(sharedR.id.date_smartspace_view, ConstraintSet.WRAP_CONTENT) + constrainWidth(sharedR.id.date_smartspace_view, ConstraintSet.WRAP_CONTENT) + constrainHeight(sharedR.id.weather_smartspace_view, ConstraintSet.WRAP_CONTENT) + constrainWidth(sharedR.id.weather_smartspace_view, ConstraintSet.WRAP_CONTENT) + + connect( + sharedR.id.date_smartspace_view, + ConstraintSet.START, + customR.id.lockscreen_clock_view, + ConstraintSet.END, + 20, + ) + connect( + sharedR.id.date_smartspace_view, + ConstraintSet.TOP, + customR.id.lockscreen_clock_view, + ConstraintSet.TOP, + ) + connect( + sharedR.id.date_smartspace_view, + ConstraintSet.BOTTOM, + sharedR.id.weather_smartspace_view, + ConstraintSet.TOP, + ) + connect( + sharedR.id.weather_smartspace_view, + ConstraintSet.START, + sharedR.id.date_smartspace_view, + ConstraintSet.START, + ) + connect( + sharedR.id.weather_smartspace_view, + ConstraintSet.TOP, + sharedR.id.date_smartspace_view, + ConstraintSet.BOTTOM, + ) + connect( + sharedR.id.weather_smartspace_view, + ConstraintSet.BOTTOM, + customR.id.lockscreen_clock_view, + ConstraintSet.BOTTOM, + ) + + setVerticalChainStyle( + sharedR.id.weather_smartspace_view, + ConstraintSet.CHAIN_PACKED, + ) + setVerticalChainStyle( + sharedR.id.date_smartspace_view, + ConstraintSet.CHAIN_PACKED, + ) + } + } + + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + createBarrier( + R.id.smart_space_barrier_bottom, + Barrier.BOTTOM, + 0, + sharedR.id.bc_smartspace_view, ) - connect( + createBarrier( + R.id.smart_space_barrier_top, + Barrier.TOP, + 0, sharedR.id.bc_smartspace_view, - ConstraintSet.TOP, - sharedR.id.date_smartspace_view, - ConstraintSet.BOTTOM, + ) + } else { + createBarrier( + R.id.smart_space_barrier_bottom, + Barrier.BOTTOM, + 0, + *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view), + ) + createBarrier( + R.id.smart_space_barrier_top, + Barrier.TOP, + 0, + *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view), ) } - - createBarrier( - R.id.smart_space_barrier_top, - Barrier.TOP, - 0, - *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view), - ) - - createBarrier( - R.id.smart_space_barrier_bottom, - Barrier.BOTTOM, - 0, - *intArrayOf(sharedR.id.bc_smartspace_view, sharedR.id.date_smartspace_view), - ) } updateVisibility(constraintSet) } override fun removeViews(constraintLayout: ConstraintLayout) { if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return - listOf(smartspaceView, dateWeatherView).forEach { + + val list = + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + listOf( + smartspaceView, + dateView, + weatherView, + weatherViewLargeClock, + dateViewLargeClock, + ) + } else { + listOf(smartspaceView, dateView) + } + list.forEach { it?.let { if (it.parent == constraintLayout) { constraintLayout.removeView(it) @@ -200,17 +395,40 @@ constructor( } private fun updateVisibility(constraintSet: ConstraintSet) { + // This may update the visibility of the smartspace views smartspaceController.requestSmartspaceUpdate() + val weatherId: Int + val dateId: Int + if ( + com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout() && + keyguardClockViewModel.isLargeClockVisible.value + ) { + weatherId = sharedR.id.weather_smartspace_view_large + dateId = sharedR.id.date_smartspace_view_large + } else { + weatherId = sharedR.id.weather_smartspace_view + dateId = sharedR.id.date_smartspace_view + } constraintSet.apply { val showWeather = keyguardSmartspaceViewModel.isWeatherVisible.value - setVisibility(sharedR.id.weather_smartspace_view, if (showWeather) VISIBLE else GONE) - setAlpha(sharedR.id.weather_smartspace_view, if (showWeather) 1f else 0f) + setVisibility(weatherId, if (showWeather) VISIBLE else GONE) + setAlpha(weatherId, if (showWeather) 1f else 0f) val showDateView = !keyguardClockViewModel.hasCustomWeatherDataDisplay.value - setVisibility(sharedR.id.date_smartspace_view, if (showDateView) VISIBLE else GONE) - setAlpha(sharedR.id.date_smartspace_view, if (showDateView) 1f else 0f) + setVisibility(dateId, if (showDateView) VISIBLE else GONE) + setAlpha(dateId, if (showDateView) 1f else 0f) + + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + if (keyguardClockViewModel.isLargeClockVisible.value) { + setVisibility(sharedR.id.weather_smartspace_view, GONE) + setVisibility(sharedR.id.date_smartspace_view, GONE) + } else { + setVisibility(sharedR.id.weather_smartspace_view_large, GONE) + setVisibility(sharedR.id.date_smartspace_view_large, GONE) + } + } } } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt index fdd9355805b5..434d7eadd742 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt @@ -59,6 +59,7 @@ class ClockSizeTransition( addTransition(ClockFaceOutTransition(config, clockViewModel, logBuffer)) addTransition(ClockFaceInTransition(config, clockViewModel, logBuffer)) } + addTransition(SmartspaceMoveTransition(config, clockViewModel, logBuffer)) } @@ -210,7 +211,6 @@ class ClockSizeTransition( str3 = "$bounds" } } - to.view.setVisibility(vis ?: View.VISIBLE) to.view.setAlpha(alpha) to.view.setRect(bounds) @@ -297,9 +297,17 @@ class ClockSizeTransition( logger.e("No large clock set, falling back") addTarget(customR.id.lockscreen_clock_view_large) } + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + addTarget(sharedR.id.date_smartspace_view_large) + addTarget(sharedR.id.weather_smartspace_view_large) + } } else { logger.i("Adding small clock") addTarget(customR.id.lockscreen_clock_view) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + addTarget(sharedR.id.date_smartspace_view) + addTarget(sharedR.id.weather_smartspace_view) + } } } @@ -378,7 +386,9 @@ class ClockSizeTransition( duration = if (isLargeClock) STATUS_AREA_MOVE_UP_MILLIS else STATUS_AREA_MOVE_DOWN_MILLIS interpolator = Interpolators.EMPHASIZED - addTarget(sharedR.id.date_smartspace_view) + if (!com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + addTarget(sharedR.id.date_smartspace_view) + } addTarget(sharedR.id.bc_smartspace_view) // Notifications normally and media on split shade needs to be moved diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt index f60115517111..0874b6da180e 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt @@ -23,14 +23,17 @@ import android.transition.TransitionValues import android.view.ViewGroup import com.android.app.animation.Interpolators import com.android.systemui.plugins.clocks.ClockController +import com.android.systemui.shared.R as sharedR -class DefaultClockSteppingTransition( - private val clock: ClockController, -) : Transition() { +class DefaultClockSteppingTransition(private val clock: ClockController) : Transition() { init { interpolator = Interpolators.LINEAR duration = KEYGUARD_STATUS_VIEW_CUSTOM_CLOCK_MOVE_DURATION_MS addTarget(clock.largeClock.view) + if (com.android.systemui.shared.Flags.clockReactiveSmartspaceLayout()) { + addTarget(sharedR.id.date_smartspace_view_large) + addTarget(sharedR.id.weather_smartspace_view_large) + } } private fun captureValues(transitionValues: TransitionValues) { @@ -51,7 +54,7 @@ class DefaultClockSteppingTransition( override fun createAnimator( sceneRoot: ViewGroup, startValues: TransitionValues?, - endValues: TransitionValues? + endValues: TransitionValues?, ): Animator? { if (startValues == null || endValues == null) { return null @@ -67,7 +70,7 @@ class DefaultClockSteppingTransition( clock.largeClock.animations.onPositionUpdated( fromLeft, direction, - animation.animatedFraction + animation.animatedFraction, ) } return anim diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt index 74d471c7c1d6..e119ec94f8c8 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerToPrimaryBouncerTransitionViewModel.kt @@ -101,7 +101,7 @@ constructor( if (Flags.notificationShadeBlur()) { transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) } else { - emptyFlow() + transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx) }, flowWhenShadeIsNotExpanded = transitionAnimation.sharedFlow( diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt index 3c126aa23fef..f14a5a282e88 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToPrimaryBouncerTransitionViewModel.kt @@ -51,7 +51,7 @@ constructor( if (Flags.notificationShadeBlur()) { transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) } else { - emptyFlow() + transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx) }, flowWhenShadeIsNotExpanded = transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx), diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt index 5a111aa519fc..4a39421a3737 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt @@ -32,7 +32,6 @@ import com.android.systemui.scene.shared.model.Overlays import javax.inject.Inject import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.emptyFlow /** * Breaks down PRIMARY BOUNCER->LOCKSCREEN transition into discrete steps for corresponding views to @@ -81,7 +80,7 @@ constructor( if (Flags.notificationShadeBlur()) { transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) } else { - emptyFlow() + transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx) }, flowWhenShadeIsNotExpanded = transitionAnimation.sharedFlow( diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt index 0f0e7b6faa66..31b20a7ea828 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToOccludedTransitionViewModel.kt @@ -27,7 +27,6 @@ import com.android.systemui.keyguard.ui.transitions.BlurConfig import com.android.systemui.keyguard.ui.transitions.PrimaryBouncerTransition import javax.inject.Inject import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.emptyFlow @SysUISingleton class PrimaryBouncerToOccludedTransitionViewModel @@ -51,7 +50,7 @@ constructor( if (Flags.notificationShadeBlur()) { transitionAnimation.immediatelyTransitionTo(blurConfig.maxBlurRadiusPx) } else { - emptyFlow() + transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx) }, flowWhenShadeIsNotExpanded = transitionAnimation.immediatelyTransitionTo(blurConfig.minBlurRadiusPx), diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaProcessingHelper.kt b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaProcessingHelper.kt index beb4d4103b11..df0e1adee968 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaProcessingHelper.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/domain/pipeline/MediaProcessingHelper.kt @@ -22,6 +22,7 @@ import android.content.Context import android.graphics.drawable.Icon import android.media.session.MediaController import android.media.session.PlaybackState +import android.os.BadParcelableException import android.util.Log import com.android.systemui.Flags.mediaControlsPostsOptimization import com.android.systemui.biometrics.Utils.toBitmap @@ -109,7 +110,12 @@ private fun areCustomActionsEqual( } if (firstAction.extras != null) { firstAction.extras.keySet().forEach { key -> - if (firstAction.extras[key] != secondAction.extras[key]) { + try { + if (firstAction.extras[key] != secondAction.extras[key]) { + return false + } + } catch (e: BadParcelableException) { + Log.e(TAG, "Cannot unparcel extras", e) return false } } diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt index 34f7c4dcaec0..cedf661d8ee3 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/binder/SeekBarObserver.kt @@ -127,10 +127,9 @@ open class SeekBarObserver(private val holder: MediaViewHolder) : } holder.seekBar.setMax(data.duration) - val totalTimeString = - DateUtils.formatElapsedTime(data.duration / DateUtils.SECOND_IN_MILLIS) + val totalTimeDescription = data.durationDescription if (data.scrubbing) { - holder.scrubbingTotalTimeView.text = totalTimeString + holder.scrubbingTotalTimeView.text = formatTimeLabel(data.duration) } data.elapsedTime?.let { @@ -148,20 +147,25 @@ open class SeekBarObserver(private val holder: MediaViewHolder) : } } - val elapsedTimeString = DateUtils.formatElapsedTime(it / DateUtils.SECOND_IN_MILLIS) + val elapsedTimeDescription = data.elapsedTimeDescription if (data.scrubbing) { - holder.scrubbingElapsedTimeView.text = elapsedTimeString + holder.scrubbingElapsedTimeView.text = formatTimeLabel(it) } holder.seekBar.contentDescription = holder.seekBar.context.getString( R.string.controls_media_seekbar_description, - elapsedTimeString, - totalTimeString + elapsedTimeDescription, + totalTimeDescription, ) } } + /** Returns a time string suitable for display, e.g. "12:34" */ + private fun formatTimeLabel(milliseconds: Int): CharSequence { + return DateUtils.formatElapsedTime(milliseconds / DateUtils.SECOND_IN_MILLIS) + } + @VisibleForTesting open fun buildResetAnimator(targetTime: Int): Animator { val animator = @@ -169,7 +173,7 @@ open class SeekBarObserver(private val holder: MediaViewHolder) : holder.seekBar, "progress", holder.seekBar.progress, - targetTime + RESET_ANIMATION_DURATION_MS + targetTime + RESET_ANIMATION_DURATION_MS, ) animator.setAutoCancel(true) animator.duration = RESET_ANIMATION_DURATION_MS.toLong() diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModel.kt index 1e99697e6a33..a1f0cc33c065 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModel.kt @@ -16,11 +16,15 @@ package com.android.systemui.media.controls.ui.viewmodel +import android.icu.text.MeasureFormat +import android.icu.util.Measure +import android.icu.util.MeasureUnit import android.media.MediaMetadata import android.media.session.MediaController import android.media.session.PlaybackState import android.os.SystemClock import android.os.Trace +import android.text.format.DateUtils import android.view.GestureDetector import android.view.MotionEvent import android.view.View @@ -38,11 +42,14 @@ import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.plugins.FalsingManager import com.android.systemui.statusbar.NotificationMediaManager import com.android.systemui.util.concurrency.RepeatableExecutor +import java.util.Locale import javax.inject.Inject import kotlin.math.abs -private const val POSITION_UPDATE_INTERVAL_MILLIS = 100L +private const val POSITION_UPDATE_INTERVAL_MILLIS = 500L private const val MIN_FLING_VELOCITY_SCALE_FACTOR = 10 +private const val MIN_IN_SEC = 60 +private const val HOUR_IN_SEC = MIN_IN_SEC * 60 private const val TRACE_POSITION_NAME = "SeekBarPollingPosition" @@ -97,11 +104,20 @@ constructor( ) set(value) { val enabledChanged = value.enabled != field.enabled - field = value if (enabledChanged) { enabledChangeListener?.onEnabledChanged(value.enabled) } - _progress.postValue(value) + bgExecutor.execute { + val durationDescription = formatTimeContentDescription(value.duration) + val elapsedDescription = + value.elapsedTime?.let { formatTimeContentDescription(it) } ?: "" + field = + value.copy( + durationDescription = durationDescription, + elapsedTimeDescription = elapsedDescription, + ) + _progress.postValue(field) + } } private val _progress = MutableLiveData<Progress>().apply { postValue(_data) } @@ -253,7 +269,8 @@ constructor( playbackState?.state ?: PlaybackState.STATE_NONE ) _data = Progress(enabled, seekAvailable, playing, scrubbing, position, duration, listening) - checkIfPollingNeeded() + // No need to update since we just set the progress info + checkIfPollingNeeded(requireUpdate = false) } /** @@ -311,8 +328,13 @@ constructor( } } + /** + * Begin polling if needed given the current seekbar state + * + * @param requireUpdate If true, update the playback position without beginning polling + */ @WorkerThread - private fun checkIfPollingNeeded() { + private fun checkIfPollingNeeded(requireUpdate: Boolean = true) { val needed = listening && !scrubbing && playbackState?.isInMotion() ?: false val traceCookie = controller?.sessionToken.hashCode() if (needed) { @@ -329,7 +351,7 @@ constructor( Trace.endAsyncSection(TRACE_POSITION_NAME, traceCookie) } } - } else { + } else if (requireUpdate) { checkPlaybackPosition() cancel?.run() cancel = null @@ -399,6 +421,43 @@ constructor( abs(firstMotionEvent!!.y - lastMotionEvent!!.y) } + /** + * Returns a time string suitable for content description, e.g. "12 minutes 34 seconds" + * + * Follows same logic as Chronometer#formatDuration + */ + private fun formatTimeContentDescription(milliseconds: Int): CharSequence { + var seconds = milliseconds / DateUtils.SECOND_IN_MILLIS + + val hours = + if (seconds >= HOUR_IN_SEC) { + seconds / HOUR_IN_SEC + } else { + 0 + } + seconds -= hours * HOUR_IN_SEC + + val minutes = + if (seconds >= MIN_IN_SEC) { + seconds / MIN_IN_SEC + } else { + 0 + } + seconds -= minutes * MIN_IN_SEC + + val measures = arrayListOf<Measure>() + if (hours > 0) { + measures.add(Measure(hours, MeasureUnit.HOUR)) + } + if (minutes > 0) { + measures.add(Measure(minutes, MeasureUnit.MINUTE)) + } + measures.add(Measure(seconds, MeasureUnit.SECOND)) + + return MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE) + .formatMeasures(*measures.toTypedArray()) + } + /** Listener interface to be notified when the user starts or stops scrubbing. */ interface ScrubbingChangeListener { fun onScrubbingChanged(scrubbing: Boolean) @@ -580,5 +639,7 @@ constructor( val duration: Int, /** whether seekBar is listening to progress updates */ val listening: Boolean, + val elapsedTimeDescription: CharSequence = "", + val durationDescription: CharSequence = "", ) } diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinator.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinator.kt index 6ca04710d74c..469bec7eb4ea 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttSenderCoordinator.kt @@ -24,7 +24,6 @@ import com.android.internal.logging.InstanceId import com.android.internal.logging.UiEventLogger import com.android.internal.statusbar.IUndoMediaTransferCallback import com.android.systemui.CoreStartable -import com.android.systemui.Dumpable import com.android.systemui.common.shared.model.Text import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager @@ -53,7 +52,7 @@ constructor( private val dumpManager: DumpManager, private val logger: MediaTttSenderLogger, private val uiEventLogger: MediaTttSenderUiEventLogger, -) : CoreStartable, Dumpable { +) : CoreStartable { // Since the media transfer display is similar to a heads-up notification, use the same timeout. private val defaultTimeout = context.resources.getInteger(R.integer.heads_up_notification_decay) diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt index e0b93fb7f4c7..44c8dc38ff8c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt @@ -21,6 +21,7 @@ import android.content.Context import android.graphics.PointF import android.graphics.Rect import android.os.Bundle +import android.os.Trace import android.util.IndentingPrintWriter import android.view.LayoutInflater import android.view.MotionEvent @@ -112,6 +113,7 @@ import com.android.systemui.plugins.qs.QS import com.android.systemui.plugins.qs.QSContainerController import com.android.systemui.qs.composefragment.SceneKeys.QuickQuickSettings import com.android.systemui.qs.composefragment.SceneKeys.QuickSettings +import com.android.systemui.qs.composefragment.SceneKeys.debugName import com.android.systemui.qs.composefragment.SceneKeys.toIdleSceneKey import com.android.systemui.qs.composefragment.ui.GridAnchor import com.android.systemui.qs.composefragment.ui.NotificationScrimClipParams @@ -285,6 +287,12 @@ constructor( */ @Composable private fun CollapsableQuickSettingsSTL() { + val nextCookie = remember { + object { + var value = 0 + } + } + val transitionToCookie = remember { mutableMapOf<TransitionState.Transition, Int>() } val sceneState = rememberMutableSceneTransitionLayoutState( initialScene = remember { viewModel.expansionState.toIdleSceneKey() }, @@ -298,6 +306,20 @@ constructor( toEditMode() } }, + onTransitionStart = { transition -> + val cookie = nextCookie.value++ + transitionToCookie[transition] = cookie + Trace.beginAsyncSection( + "CollapsableQuickSettingsSTL ${transition.debugName}", + cookie, + ) + }, + onTransitionEnd = { transition -> + Trace.endAsyncSection( + "CollapsableQuickSettingsSTL ${transition.debugName}", + transitionToCookie.remove(transition) ?: -1, + ) + }, ) LaunchedEffect(Unit) { @@ -854,6 +876,9 @@ object SceneKeys { val QuickSettings = SceneKey("QuickSettingsScene") val EditMode = SceneKey("EditModeScene") + val TransitionState.Transition.debugName: String + get() = "[from=${fromContent.debugName}, to=${toContent.debugName}]" + fun QSFragmentComposeViewModel.QSExpansionState.toIdleSceneKey(): SceneKey { return when { progress < 0.5f -> QuickQuickSettings diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractor.kt index 609541ba1ab6..c70a854a2ca0 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/CurrentTilesInteractor.kt @@ -20,6 +20,7 @@ import android.content.ComponentName import android.content.Context import android.content.Intent import android.os.UserHandle +import com.android.app.tracing.coroutines.launchTraced as launch import com.android.systemui.Dumpable import com.android.systemui.ProtoDumpable import com.android.systemui.dagger.SysUISingleton @@ -62,7 +63,6 @@ import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOn -import com.android.app.tracing.coroutines.launchTraced as launch import kotlinx.coroutines.withContext /** @@ -245,7 +245,6 @@ constructor( processExistingTile( tileSpec, specsToTiles.getValue(tileSpec), - userChanged, newUser, ) ?: createTile(tileSpec) } else { @@ -378,7 +377,6 @@ constructor( private fun processExistingTile( tileSpec: TileSpec, tileOrNotInstalled: TileOrNotInstalled, - userChanged: Boolean, user: Int, ): QSTile? { return when (tileOrNotInstalled) { @@ -386,6 +384,10 @@ constructor( is TileOrNotInstalled.Tile -> { val qsTile = tileOrNotInstalled.tile when { + qsTile.isDestroyed -> { + logger.logTileDestroyedIgnored(tileSpec) + null + } !qsTile.isAvailable -> { logger.logTileDestroyed( tileSpec, @@ -399,10 +401,11 @@ constructor( qsTile !is CustomTile -> { // The tile is not a custom tile. Make sure they are reset to the correct // user - if (userChanged) { + if (qsTile.currentTileUser != user) { qsTile.userSwitch(user) logger.logTileUserChanged(tileSpec, user) } + qsTile } qsTile.user == user -> { diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLogger.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLogger.kt index e237ca9f462b..21a8ec604f08 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLogger.kt @@ -60,7 +60,7 @@ constructor( bool1 = usesDefault int1 = user }, - { "Parsed tiles (default=$bool1, user=$int1): $str1" } + { "Parsed tiles (default=$bool1, user=$int1): $str1" }, ) } @@ -77,7 +77,7 @@ constructor( str2 = reconciledTiles.toString() int1 = user }, - { "Tiles restored and reconciled for user: $int1\nWas: $str1\nSet to: $str2" } + { "Tiles restored and reconciled for user: $int1\nWas: $str1\nSet to: $str2" }, ) } @@ -94,7 +94,7 @@ constructor( str2 = newList.toString() int1 = userId }, - { "Processing $str1 for user $int1\nNew list: $str2" } + { "Processing $str1 for user $int1\nNew list: $str2" }, ) } @@ -107,7 +107,16 @@ constructor( str1 = spec.toString() str2 = reason.readable }, - { "Tile $str1 destroyed. Reason: $str2" } + { "Tile $str1 destroyed. Reason: $str2" }, + ) + } + + fun logTileDestroyedIgnored(spec: TileSpec) { + tileListLogBuffer.log( + TILE_LIST_TAG, + LogLevel.DEBUG, + { str1 = spec.toString() }, + { "Tile $str1 ignored as it was already destroyed." }, ) } @@ -117,7 +126,7 @@ constructor( TILE_LIST_TAG, LogLevel.DEBUG, { str1 = spec.toString() }, - { "Tile $str1 created" } + { "Tile $str1 created" }, ) } @@ -127,7 +136,7 @@ constructor( TILE_LIST_TAG, LogLevel.VERBOSE, { str1 = spec.toString() }, - { "Tile $str1 not found in factory" } + { "Tile $str1 not found in factory" }, ) } @@ -140,7 +149,7 @@ constructor( str1 = spec.toString() int1 = user }, - { "User changed to $int1 for tile $str1" } + { "User changed to $int1 for tile $str1" }, ) } @@ -156,7 +165,7 @@ constructor( str1 = tiles.toString() int1 = user }, - { "Tiles kept for not installed packages for user $int1: $str1" } + { "Tiles kept for not installed packages for user $int1: $str1" }, ) } @@ -168,7 +177,7 @@ constructor( str1 = tiles.toString() int1 = userId }, - { "Auto add tiles parsed for user $int1: $str1" } + { "Auto add tiles parsed for user $int1: $str1" }, ) } @@ -180,7 +189,7 @@ constructor( str1 = tiles.toString() int1 = userId }, - { "Auto-add tiles reconciled for user $int1: $str1" } + { "Auto-add tiles reconciled for user $int1: $str1" }, ) } @@ -193,7 +202,7 @@ constructor( int2 = position str1 = spec.toString() }, - { "Tile $str1 auto added for user $int1 at position $int2" } + { "Tile $str1 auto added for user $int1 at position $int2" }, ) } @@ -205,7 +214,7 @@ constructor( int1 = userId str1 = spec.toString() }, - { "Tile $str1 auto removed for user $int1" } + { "Tile $str1 auto removed for user $int1" }, ) } @@ -217,7 +226,7 @@ constructor( int1 = userId str1 = spec.toString() }, - { "Tile $str1 unmarked as auto-added for user $int1" } + { "Tile $str1 unmarked as auto-added for user $int1" }, ) } @@ -226,7 +235,7 @@ constructor( RESTORE_TAG, LogLevel.DEBUG, { int1 = userId }, - { "Restored from single intent after user setup complete for user $int1" } + { "Restored from single intent after user setup complete for user $int1" }, ) } @@ -243,7 +252,7 @@ constructor( "Restored settings data for user $int1\n" + "\tRestored tiles: $str1\n" + "\tRestored auto added tiles: $str2" - } + }, ) } @@ -258,7 +267,7 @@ constructor( str1 = restoreProcessorClassName str2 = step.name }, - { "Restore $str2 processed by $str1" } + { "Restore $str2 processed by $str1" }, ) } @@ -273,6 +282,6 @@ constructor( enum class RestorePreprocessorStep { PREPROCESSING, - POSTPROCESSING + POSTPROCESSING, } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java index 1d1e9911884c..c6fc868b3dc8 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java @@ -74,6 +74,8 @@ import com.android.systemui.qs.logging.QSLogger; import java.io.PrintWriter; import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; /** * Base quick-settings tile, extend this to create a new tile. @@ -127,6 +129,8 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy private int mIsFullQs; private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); + private final AtomicBoolean mIsDestroyed = new AtomicBoolean(false); + private final AtomicInteger mCurrentTileUser = new AtomicInteger(); /** * Provides a new {@link TState} of the appropriate type to use between this tile and the @@ -203,6 +207,7 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy mMetricsLogger = metricsLogger; mStatusBarStateController = statusBarStateController; mActivityStarter = activityStarter; + mCurrentTileUser.set(host.getUserId()); resetStates(); mUiHandler.post(() -> mLifecycle.setCurrentState(CREATED)); @@ -352,11 +357,19 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy } public void userSwitch(int newUserId) { + mCurrentTileUser.set(newUserId); mHandler.obtainMessage(H.USER_SWITCH, newUserId, 0).sendToTarget(); postStale(); } + @Override + public int getCurrentTileUser() { + return mCurrentTileUser.get(); + } + public void destroy() { + // We mark it as soon as we start the destroy process, as nothing can interrupt it. + mIsDestroyed.set(true); mHandler.sendEmptyMessage(H.DESTROY); } @@ -365,7 +378,7 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy * * Should be called upon creation of the tile, before performing other operations */ - public void initialize() { + public final void initialize() { mHandler.sendEmptyMessage(H.INITIALIZE); } @@ -525,6 +538,11 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy }); } + @Override + public final boolean isDestroyed() { + return mIsDestroyed.get(); + } + protected void checkIfRestrictionEnforcedByAdminOnly(State state, String userRestriction) { EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(mContext, userRestriction, mHost.getUserId()); @@ -799,7 +817,7 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy */ @Override public void dump(PrintWriter pw, String[] args) { - pw.println(this.getClass().getSimpleName() + ":"); + pw.print(this.getClass().getSimpleName() + ":"); pw.print(" "); pw.println(getState().toString()); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt index f80b8fb8cb1f..e48e943dd3f4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTileNewImpl.kt @@ -99,7 +99,7 @@ constructor( } override fun getDetailsViewModel(): TileDetailsViewModel { - return internetDetailsViewModelFactory.create { longClick(null) } + return internetDetailsViewModelFactory.create() } override fun handleUpdateState(state: QSTile.BooleanState, arg: Any?) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/base/interactor/QSTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/base/interactor/QSTileUserActionInteractor.kt index e8c4274474e0..8ad4e16291c2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/base/interactor/QSTileUserActionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/base/interactor/QSTileUserActionInteractor.kt @@ -28,17 +28,4 @@ interface QSTileUserActionInteractor<DATA_TYPE> { * It's safe to run long running computations inside this function. */ @WorkerThread suspend fun handleInput(input: QSTileInput<DATA_TYPE>) - - /** - * Provides the [TileDetailsViewModel] for constructing the corresponding details view. - * - * This property is defined here to reuse the business logic. For example, reusing the user - * long-click as the go-to-settings callback in the details view. - * Subclasses can override this property to provide a specific [TileDetailsViewModel] - * implementation. - * - * @return The [TileDetailsViewModel] instance, or null if not implemented. - */ - val detailsViewModel: TileDetailsViewModel? - get() = null } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelFactory.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelFactory.kt index 8c75cf001441..7f475f31b940 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelFactory.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelFactory.kt @@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles.base.viewmodel import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.UiBackground import com.android.systemui.plugins.FalsingManager +import com.android.systemui.plugins.qs.TileDetailsViewModel import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.tiles.base.analytics.QSTileAnalytics import com.android.systemui.qs.tiles.base.interactor.DisabledByPolicyInteractor @@ -70,9 +71,7 @@ sealed interface QSTileViewModelFactory<T> { * Creates [QSTileViewModelImpl] based on the interactors obtained from [QSTileComponent]. * Reference of that [QSTileComponent] is then stored along the view model. */ - fun create( - tileSpec: TileSpec, - ): QSTileViewModel { + fun create(tileSpec: TileSpec): QSTileViewModel { val config = qsTileConfigProvider.getConfig(tileSpec.spec) val component = customTileComponentBuilder.qsTileConfigModule(QSTileConfigModule(config)).build() @@ -90,6 +89,7 @@ sealed interface QSTileViewModelFactory<T> { backgroundDispatcher, uiBackgroundDispatcher, component.coroutineScope(), + /* tileDetailsViewModel= */ null, ) } } @@ -127,6 +127,7 @@ sealed interface QSTileViewModelFactory<T> { userActionInteractor: QSTileUserActionInteractor<T>, tileDataInteractor: QSTileDataInteractor<T>, mapper: QSTileDataToStateMapper<T>, + tileDetailsViewModel: TileDetailsViewModel? = null, ): QSTileViewModelImpl<T> = QSTileViewModelImpl( qsTileConfigProvider.getConfig(tileSpec.spec), @@ -142,6 +143,7 @@ sealed interface QSTileViewModelFactory<T> { backgroundDispatcher, uiBackgroundDispatcher, coroutineScopeFactory.create(), + tileDetailsViewModel, ) } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImpl.kt index 30bf5b309a2e..3866c17b655f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/base/viewmodel/QSTileViewModelImpl.kt @@ -83,6 +83,7 @@ class QSTileViewModelImpl<DATA_TYPE>( private val backgroundDispatcher: CoroutineDispatcher, uiBackgroundDispatcher: CoroutineDispatcher, private val tileScope: CoroutineScope, + override val tileDetailsViewModel: TileDetailsViewModel? = null, ) : QSTileViewModel, Dumpable { private val users: MutableStateFlow<UserHandle> = @@ -96,6 +97,9 @@ class QSTileViewModelImpl<DATA_TYPE>( private val tileData: SharedFlow<DATA_TYPE?> = createTileDataFlow() + override val currentTileUser: Int + get() = users.value.identifier + override val state: StateFlow<QSTileState?> = tileData .map { data -> @@ -114,9 +118,6 @@ class QSTileViewModelImpl<DATA_TYPE>( .flowOn(backgroundDispatcher) .stateIn(tileScope, SharingStarted.WhileSubscribed(), true) - override val detailsViewModel: TileDetailsViewModel? - get() = userActionInteractor().detailsViewModel - override fun forceUpdate() { tileScope.launch(context = backgroundDispatcher) { forceUpdates.emit(Unit) } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt index 0ed56f62ee6c..6709fd2bb508 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDetailsViewModel.kt @@ -16,9 +16,11 @@ package com.android.systemui.qs.tiles.dialog +import android.content.Intent +import android.provider.Settings import com.android.systemui.plugins.qs.TileDetailsViewModel +import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler import com.android.systemui.statusbar.connectivity.AccessPointController -import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject @@ -27,10 +29,13 @@ class InternetDetailsViewModel constructor( private val accessPointController: AccessPointController, val contentManagerFactory: InternetDetailsContentManager.Factory, - @Assisted private val onLongClick: () -> Unit, + private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler, ) : TileDetailsViewModel() { override fun clickOnSettingsButton() { - onLongClick() + qsTileIntentUserActionHandler.handle( + /* expandable= */ null, + Intent(Settings.ACTION_WIFI_SETTINGS), + ) } override fun getTitle(): String { @@ -58,7 +63,7 @@ constructor( } @AssistedFactory - interface Factory { - fun create(onLongClick: () -> Unit): InternetDetailsViewModel + fun interface Factory { + fun create(): InternetDetailsViewModel } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java index 0adc41313bae..8d4a24e0c2cf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacy.java @@ -400,6 +400,9 @@ public class InternetDialogDelegateLegacy implements mInternetDialogTitle.setText(internetContent.mInternetDialogTitleString); mInternetDialogSubTitle.setText(internetContent.mInternetDialogSubTitle); + if (!internetContent.mIsWifiEnabled) { + setProgressBarVisible(false); + } mAirplaneModeButton.setVisibility( internetContent.mIsAirplaneModeEnabled ? View.VISIBLE : View.GONE); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/di/QSTileComponent.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/di/QSTileComponent.kt index 0ed46e73958d..5f692f2f5a73 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/di/QSTileComponent.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/di/QSTileComponent.kt @@ -16,6 +16,7 @@ package com.android.systemui.qs.tiles.impl.di +import com.android.systemui.plugins.qs.TileDetailsViewModel import com.android.systemui.qs.tiles.base.interactor.QSTileDataInteractor import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractor.kt index 8e48fe492e13..0431e36fef6a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/internet/domain/interactor/InternetTileUserActionInteractor.kt @@ -18,13 +18,10 @@ package com.android.systemui.qs.tiles.impl.internet.domain.interactor import android.content.Intent import android.provider.Settings -import com.android.systemui.animation.Expandable import com.android.systemui.dagger.qualifiers.Main -import com.android.systemui.plugins.qs.TileDetailsViewModel import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler import com.android.systemui.qs.tiles.base.interactor.QSTileInput import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor -import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel import com.android.systemui.qs.tiles.dialog.InternetDialogManager import com.android.systemui.qs.tiles.impl.internet.domain.model.InternetTileModel import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction @@ -41,7 +38,6 @@ constructor( private val internetDialogManager: InternetDialogManager, private val accessPointController: AccessPointController, private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler, - private val internetDetailsViewModelFactory: InternetDetailsViewModel.Factory, ) : QSTileUserActionInteractor<InternetTileModel> { override suspend fun handleInput(input: QSTileInput<InternetTileModel>): Unit = @@ -58,16 +54,12 @@ constructor( } } is QSTileUserAction.LongClick -> { - handleLongClick(action.expandable) + qsTileIntentUserActionHandler.handle( + action.expandable, + Intent(Settings.ACTION_WIFI_SETTINGS), + ) } else -> {} } } - - override val detailsViewModel: TileDetailsViewModel = - internetDetailsViewModelFactory.create { handleLongClick(null) } - - private fun handleLongClick(expandable: Expandable?) { - qsTileIntentUserActionHandler.handle(expandable, Intent(Settings.ACTION_WIFI_SETTINGS)) - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModel.kt index e8b9926e5cea..7a533883444e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModel.kt @@ -39,9 +39,12 @@ interface QSTileViewModel { val isAvailable: StateFlow<Boolean> /** Specifies the [TileDetailsViewModel] for constructing the corresponding details view. */ - val detailsViewModel: TileDetailsViewModel? + val tileDetailsViewModel: TileDetailsViewModel? get() = null + /** Returns the current user for this tile */ + val currentTileUser: Int + /** * Notifies about the user change. Implementations should avoid using 3rd party userId sources * and use this value instead. This is to maintain consistent and concurrency-free behaviour @@ -65,8 +68,6 @@ interface QSTileViewModel { fun destroy() } -/** - * Returns the immediate state of the tile or null if the state haven't been collected yet. - */ +/** Returns the immediate state of the tile or null if the state haven't been collected yet. */ val QSTileViewModel.currentState: QSTileState? get() = state.value diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt index 30d1f05771d7..e607eae8f38d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/QSTileViewModelAdapter.kt @@ -19,7 +19,6 @@ package com.android.systemui.qs.tiles.viewmodel import android.content.Context import android.os.UserHandle import android.util.Log -import com.android.app.tracing.coroutines.launchTraced as launch import com.android.internal.logging.InstanceId import com.android.systemui.Dumpable import com.android.systemui.animation.Expandable @@ -156,8 +155,12 @@ constructor( qsTileViewModel.onUserChanged(UserHandle.of(currentUser)) } + override fun getCurrentTileUser(): Int { + return qsTileViewModel.currentTileUser + } + override fun getDetailsViewModel(): TileDetailsViewModel? { - return qsTileViewModel.detailsViewModel + return qsTileViewModel.tileDetailsViewModel } @Deprecated( @@ -213,6 +216,10 @@ constructor( qsTileViewModel.destroy() } + override fun isDestroyed(): Boolean { + return !(tileAdapterJob?.isActive ?: false) + } + override fun getState(): QSTile.AdapterState = qsTileViewModel.currentState?.let { mapState(context, it, qsTileViewModel.config) } ?: QSTile.AdapterState() diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/StubQSTileViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/StubQSTileViewModel.kt index 00b7e61eb1c6..bdd5c73779cf 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/StubQSTileViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/viewmodel/StubQSTileViewModel.kt @@ -37,4 +37,7 @@ object StubQSTileViewModel : QSTileViewModel { override fun onActionPerformed(userAction: QSTileUserAction) = error("Don't call stubs") override fun destroy() = error("Don't call stubs") + + override val currentTileUser: Int + get() = error("Don't call stubs") } diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt index ce48c85d57ae..6670c04d7f8f 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt @@ -366,6 +366,7 @@ constructor( val batteryComposeView = ComposeView(mView.context).apply { setContent { + id = R.id.battery_meter_composable_view val showBatteryEstimate by showBatteryEstimate.collectAsStateWithLifecycle() BatteryWithEstimate( modifier = Modifier.height(17.dp).wrapContentWidth(), diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 7dc2ae71b63e..e44701dba87c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -580,7 +580,8 @@ public class CommandQueue extends IStatusBar.Stub implements /** * @see IStatusBar#immersiveModeChanged */ - default void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode) {} + default void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode, + int windowType) {} /** * @see IStatusBar#moveFocusedTaskToDesktop(int) @@ -876,11 +877,13 @@ public class CommandQueue extends IStatusBar.Stub implements } @Override - public void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode) { + public void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode, + int windowType) { synchronized (mLock) { final SomeArgs args = SomeArgs.obtain(); args.argi1 = rootDisplayAreaId; args.argi2 = isImmersiveMode ? 1 : 0; + args.argi3 = windowType; mHandler.obtainMessage(MSG_IMMERSIVE_CHANGED, args).sendToTarget(); } } @@ -2030,8 +2033,10 @@ public class CommandQueue extends IStatusBar.Stub implements args = (SomeArgs) msg.obj; int rootDisplayAreaId = args.argi1; boolean isImmersiveMode = args.argi2 != 0; + int windowType = args.argi3; for (int i = 0; i < mCallbacks.size(); i++) { - mCallbacks.get(i).immersiveModeChanged(rootDisplayAreaId, isImmersiveMode); + mCallbacks.get(i).immersiveModeChanged(rootDisplayAreaId, isImmersiveMode, + windowType); } break; case MSG_ENTER_DESKTOP: { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java b/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java index fed3f6e81130..97e62d79b374 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java @@ -23,6 +23,8 @@ import static android.app.StatusBarManager.DISABLE_HOME; import static android.app.StatusBarManager.DISABLE_RECENT; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; +import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION; +import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION; import static android.window.DisplayAreaOrganizer.FEATURE_UNDEFINED; import static android.window.DisplayAreaOrganizer.KEY_ROOT_DISPLAY_AREA_ID; @@ -208,7 +210,8 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca } @Override - public void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode) { + public void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode, + int windowType) { mHandler.removeMessages(H.SHOW); if (isImmersiveMode) { if (DEBUG) Log.d(TAG, "immersiveModeChanged() sConfirmed=" + sConfirmed); @@ -221,7 +224,9 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca && mCanSystemBarsBeShownByUser && !mNavBarEmpty && !UserManager.isDeviceInDemoMode(mDisplayContext) - && (mLockTaskState != LOCK_TASK_MODE_LOCKED)) { + && (mLockTaskState != LOCK_TASK_MODE_LOCKED) + && windowType != TYPE_PRESENTATION + && windowType != TYPE_PRIVATE_PRESENTATION) { final Message msg = mHandler.obtainMessage( H.SHOW); msg.arg1 = rootDisplayAreaId; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt index 13737dbffd07..05ef1645c1d6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt @@ -36,6 +36,7 @@ import com.android.systemui.shade.domain.interactor.ShadeLockscreenInteractor import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.ExpandableView +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi import com.android.systemui.statusbar.notification.stack.AmbientState import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.CentralSurfaces @@ -391,7 +392,9 @@ constructor( } if (view is ExpandableNotificationRow) { // Only drag down on sensitive views, otherwise the ExpandHelper will take this - return view.entry.isSensitive.value + return if (NotificationBundleUi.isEnabled) + view.entryAdapter?.isSensitive?.value == true + else view.entry.isSensitive.value } } return false @@ -559,12 +562,15 @@ constructor( var userId: Int = lockScreenUserManager.getCurrentUserId() var entry: NotificationEntry? = null if (expandView is ExpandableNotificationRow) { - entry = expandView.entry expandView.setUserExpanded(/* userExpanded= */ true, /* allowChildExpansion= */ true) // Indicate that the group expansion is changing at this time -- this way the group // and children backgrounds / divider animations will look correct. expandView.isGroupExpansionChanging = true - userId = entry.sbn.userId + if (NotificationBundleUi.isEnabled) { + userId = expandView.entryAdapter?.sbn?.userId!! + } else { + userId = expandView.entry.sbn.userId + } } var fullShadeNeedsBouncer = (!lockScreenUserManager.shouldShowLockscreenNotifications() || diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/ConnectivityModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/ConnectivityModule.kt index 1009028345de..48f0245fd5db 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/ConnectivityModule.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/ConnectivityModule.kt @@ -34,6 +34,7 @@ import com.android.systemui.qs.tiles.InternetTileNewImpl import com.android.systemui.qs.tiles.NfcTile import com.android.systemui.qs.tiles.base.interactor.QSTileAvailabilityInteractor import com.android.systemui.qs.tiles.base.viewmodel.QSTileViewModelFactory +import com.android.systemui.qs.tiles.dialog.InternetDetailsViewModel import com.android.systemui.qs.tiles.impl.airplane.domain.AirplaneModeMapper import com.android.systemui.qs.tiles.impl.airplane.domain.interactor.AirplaneModeTileDataInteractor import com.android.systemui.qs.tiles.impl.airplane.domain.interactor.AirplaneModeTileUserActionInteractor @@ -162,13 +163,15 @@ interface ConnectivityModule { factory: QSTileViewModelFactory.Static<AirplaneModeTileModel>, mapper: AirplaneModeMapper, stateInteractor: AirplaneModeTileDataInteractor, - userActionInteractor: AirplaneModeTileUserActionInteractor + userActionInteractor: AirplaneModeTileUserActionInteractor, + internetDetailsViewModelFactory: InternetDetailsViewModel.Factory ): QSTileViewModel = factory.create( TileSpec.create(AIRPLANE_MODE_TILE_SPEC), userActionInteractor, stateInteractor, mapper, + internetDetailsViewModelFactory.create(), ) @Provides @@ -226,13 +229,15 @@ interface ConnectivityModule { factory: QSTileViewModelFactory.Static<InternetTileModel>, mapper: InternetTileMapper, stateInteractor: InternetTileDataInteractor, - userActionInteractor: InternetTileUserActionInteractor + userActionInteractor: InternetTileUserActionInteractor, + internetDetailsViewModelFactory: InternetDetailsViewModel.Factory ): QSTileViewModel = factory.create( TileSpec.create(INTERNET_TILE_SPEC), userActionInteractor, stateInteractor, mapper, + internetDetailsViewModelFactory.create(), ) @Provides diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarOrchestratorStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarOrchestratorStore.kt new file mode 100644 index 000000000000..70697913447f --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarOrchestratorStore.kt @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.core + +import com.android.systemui.CoreStartable +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Background +import com.android.systemui.display.data.repository.DisplayRepository +import com.android.systemui.display.data.repository.DisplayScopeRepository +import com.android.systemui.display.data.repository.PerDisplayStoreImpl +import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore +import com.android.systemui.statusbar.phone.AutoHideControllerStore +import com.android.systemui.statusbar.window.StatusBarWindowControllerStore +import com.android.systemui.statusbar.window.data.repository.StatusBarWindowStateRepositoryStore +import dagger.Lazy +import dagger.Module +import dagger.Provides +import dagger.multibindings.ClassKey +import dagger.multibindings.IntoMap +import javax.inject.Inject +import kotlinx.coroutines.CoroutineScope + +/** [PerDisplayStoreImpl] for providing display specific [StatusBarOrchestrator]. */ +@SysUISingleton +class MultiDisplayStatusBarOrchestratorStore +@Inject +constructor( + @Background backgroundApplicationScope: CoroutineScope, + displayRepository: DisplayRepository, + private val factory: StatusBarOrchestrator.Factory, + private val statusBarWindowControllerStore: StatusBarWindowControllerStore, + private val statusBarModeRepositoryStore: StatusBarModeRepositoryStore, + private val initializerStore: StatusBarInitializerStore, + private val autoHideControllerStore: AutoHideControllerStore, + private val displayScopeRepository: DisplayScopeRepository, + private val statusBarWindowStateRepositoryStore: StatusBarWindowStateRepositoryStore, +) : PerDisplayStoreImpl<StatusBarOrchestrator>(backgroundApplicationScope, displayRepository) { + + init { + StatusBarConnectedDisplays.assertInNewMode() + } + + override fun createInstanceForDisplay(displayId: Int): StatusBarOrchestrator? { + val statusBarModeRepository = + statusBarModeRepositoryStore.forDisplay(displayId) ?: return null + val statusBarInitializer = initializerStore.forDisplay(displayId) ?: return null + val statusBarWindowController = + statusBarWindowControllerStore.forDisplay(displayId) ?: return null + val autoHideController = autoHideControllerStore.forDisplay(displayId) ?: return null + return factory.create( + displayId, + // TODO: b/398825844 - Handle nullness to prevent leaking CoroutineScope. + displayScopeRepository.scopeForDisplay(displayId), + statusBarWindowStateRepositoryStore.forDisplay(displayId), + statusBarModeRepository, + statusBarInitializer, + statusBarWindowController, + autoHideController, + ) + } + + override val instanceClass = StatusBarOrchestrator::class.java + + override suspend fun onDisplayRemovalAction(instance: StatusBarOrchestrator) { + instance.stop() + } +} + +@Module +interface MultiDisplayStatusBarOrchestratorStoreModule { + + @Provides + @SysUISingleton + @IntoMap + @ClassKey(MultiDisplayStatusBarOrchestratorStore::class) + fun storeAsCoreStartable( + multiDisplayLazy: Lazy<MultiDisplayStatusBarOrchestratorStore> + ): CoreStartable { + return if (StatusBarConnectedDisplays.isEnabled) { + multiDisplayLazy.get() + } else { + CoreStartable.NOP + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt index eeb7a4066eca..dfb3763fd3f6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/MultiDisplayStatusBarStarter.kt @@ -23,13 +23,8 @@ import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.display.data.repository.DisplayRepository -import com.android.systemui.display.data.repository.DisplayScopeRepository import com.android.systemui.statusbar.data.repository.LightBarControllerStore import com.android.systemui.statusbar.data.repository.PrivacyDotWindowControllerStore -import com.android.systemui.statusbar.data.repository.StatusBarModeRepositoryStore -import com.android.systemui.statusbar.phone.AutoHideControllerStore -import com.android.systemui.statusbar.window.StatusBarWindowControllerStore -import com.android.systemui.statusbar.window.data.repository.StatusBarWindowStateRepositoryStore import com.android.systemui.util.kotlin.pairwiseBy import javax.inject.Inject import kotlinx.coroutines.CoroutineScope @@ -44,15 +39,9 @@ class MultiDisplayStatusBarStarter @Inject constructor( @Application private val applicationScope: CoroutineScope, - private val displayScopeRepository: DisplayScopeRepository, - private val statusBarOrchestratorFactory: StatusBarOrchestrator.Factory, - private val statusBarWindowStateRepositoryStore: StatusBarWindowStateRepositoryStore, - private val statusBarModeRepositoryStore: StatusBarModeRepositoryStore, + private val multiDisplayStatusBarOrchestratorStore: MultiDisplayStatusBarOrchestratorStore, private val displayRepository: DisplayRepository, - private val initializerStore: StatusBarInitializerStore, - private val statusBarWindowControllerStore: StatusBarWindowControllerStore, private val statusBarInitializerStore: StatusBarInitializerStore, - private val autoHideControllerStore: AutoHideControllerStore, private val privacyDotWindowControllerStore: PrivacyDotWindowControllerStore, private val lightBarControllerStore: LightBarControllerStore, private val windowManager: IWindowManager, @@ -74,15 +63,14 @@ constructor( // TODO(b/393191204): Split navbar, status bar, etc. functionality // from WindowManager#shouldShowSystemDecors. if (windowManager.shouldShowSystemDecors(it.displayId)) { - createAndStartComponentsForDisplay(it) + createAndStartComponentsForDisplay(it.displayId) } } } } } - private fun createAndStartComponentsForDisplay(display: Display) { - val displayId = display.displayId + private fun createAndStartComponentsForDisplay(displayId: Int) { createAndStartOrchestratorForDisplay(displayId) createAndStartInitializerForDisplay(displayId) startPrivacyDotForDisplay(displayId) @@ -97,22 +85,7 @@ constructor( } private fun createAndStartOrchestratorForDisplay(displayId: Int) { - val statusBarModeRepository = statusBarModeRepositoryStore.forDisplay(displayId) ?: return - val statusBarInitializer = initializerStore.forDisplay(displayId) ?: return - val statusBarWindowController = - statusBarWindowControllerStore.forDisplay(displayId) ?: return - val autoHideController = autoHideControllerStore.forDisplay(displayId) ?: return - statusBarOrchestratorFactory - .create( - displayId, - displayScopeRepository.scopeForDisplay(displayId), - statusBarWindowStateRepositoryStore.forDisplay(displayId), - statusBarModeRepository, - statusBarInitializer, - statusBarWindowController, - autoHideController, - ) - .start() + multiDisplayStatusBarOrchestratorStore.forDisplay(displayId)?.start() } private fun createAndStartInitializerForDisplay(displayId: Int) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarOrchestrator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarOrchestrator.kt index 9d55f6c1b12a..73ada546a9fc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarOrchestrator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarOrchestrator.kt @@ -19,7 +19,7 @@ package com.android.systemui.statusbar.core import android.view.Display import android.view.View import com.android.app.tracing.coroutines.launchTraced as launch -import com.android.systemui.CoreStartable +import com.android.systemui.Dumpable import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.demomode.DemoModeController @@ -50,6 +50,7 @@ import java.io.PrintWriter import java.util.Optional import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChangedBy @@ -82,7 +83,7 @@ constructor( private val dumpManager: DumpManager, powerInteractor: PowerInteractor, primaryBouncerInteractor: PrimaryBouncerInteractor, -) : CoreStartable { +) : Dumpable { private val dumpableName: String = if (displayId == Display.DEFAULT_DISPLAY) { @@ -91,6 +92,8 @@ constructor( "${javaClass.simpleName}$displayId" } + private var startJob: Job? = null + private val phoneStatusBarViewController = MutableStateFlow<PhoneStatusBarViewController?>(value = null) @@ -141,32 +144,33 @@ constructor( Pair(barTransitions, statusBarMode) } - override fun start() { + /** Starts status bar orchestration. To be called when status bar is created. */ + fun start() { StatusBarConnectedDisplays.assertInNewMode() - coroutineScope - // Perform animations on the main thread to prevent crashes. - .launch(context = mainContext) { - dumpManager.registerCriticalDumpable(dumpableName, this@StatusBarOrchestrator) - launch { - controllerAndBouncerShowing.collect { (controller, bouncerShowing) -> - setBouncerShowingForStatusBarComponents(controller, bouncerShowing) + startJob = + coroutineScope + // Perform animations on the main thread to prevent crashes. + .launch(context = mainContext) { + dumpManager.registerCriticalDumpable(dumpableName, this@StatusBarOrchestrator) + launch { + controllerAndBouncerShowing.collect { (controller, bouncerShowing) -> + setBouncerShowingForStatusBarComponents(controller, bouncerShowing) + } } - } - launch { - barTransitionsAndDeviceAsleep.collect { (barTransitions, deviceAsleep) -> - if (deviceAsleep) { - barTransitions.finishAnimations() + launch { + barTransitionsAndDeviceAsleep.collect { (barTransitions, deviceAsleep) -> + if (deviceAsleep) { + barTransitions.finishAnimations() + } } } - } - launch { statusBarVisible.collect { updateBubblesVisibility(it) } } - launch { - barModeUpdate.collect { (animate, barTransitions, statusBarMode) -> - updateBarMode(animate, barTransitions, statusBarMode) + launch { statusBarVisible.collect { updateBubblesVisibility(it) } } + launch { + barModeUpdate.collect { (animate, barTransitions, statusBarMode) -> + updateBarMode(animate, barTransitions, statusBarMode) + } } } - } - .invokeOnCompletion { dumpManager.unregisterDumpable(dumpableName) } createAndAddWindow() setupPluginDependencies() setUpAutoHide() @@ -272,6 +276,16 @@ constructor( ) } + /** + * Called when the [StatusBarOrchestrator] should stop doing any work and clean up if needed. + */ + fun stop() { + StatusBarConnectedDisplays.assertInNewMode() + dumpManager.unregisterDumpable(dumpableName) + startJob?.cancel() + startJob = null + } + @AssistedFactory interface Factory { fun create( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt index 086cc99957ce..86c3c483165c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/data/repository/PrivacyDotWindowControllerStore.kt @@ -77,6 +77,10 @@ constructor( } override val instanceClass = PrivacyDotWindowController::class.java + + override suspend fun onDisplayRemovalAction(instance: PrivacyDotWindowController) { + instance.stop() + } } @Module diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt index f7799bb75ae0..e2bcfb752e6c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotWindowController.kt @@ -59,6 +59,7 @@ constructor( @ScreenDecorationsThread private val uiExecutor: Executor, private val dotFactory: PrivacyDotDecorProviderFactory, ) { + private val dotViews: MutableSet<View> = mutableSetOf() fun start() { uiExecutor.execute { startOnUiThread() } @@ -72,10 +73,13 @@ constructor( val bottomLeft = providers.inflate(BOUNDS_POSITION_BOTTOM, BOUNDS_POSITION_LEFT) val bottomRight = providers.inflate(BOUNDS_POSITION_BOTTOM, BOUNDS_POSITION_RIGHT) - topLeft.addToWindow(TopLeft) - topRight.addToWindow(TopRight) - bottomLeft.addToWindow(BottomLeft) - bottomRight.addToWindow(BottomRight) + listOfNotNull( + topLeft.addToWindow(TopLeft), + topRight.addToWindow(TopRight), + bottomLeft.addToWindow(BottomLeft), + bottomRight.addToWindow(BottomRight), + ) + .forEach { dotViews.add(it) } privacyDotViewController.initialize(topLeft, topRight, bottomLeft, bottomRight) } @@ -87,7 +91,7 @@ constructor( return inflater.inflate(/* resource= */ provider.layoutId, /* root= */ null) } - private fun View.addToWindow(corner: PrivacyDotCorner) { + private fun View.addToWindow(corner: PrivacyDotCorner): View? { val excludeFromScreenshots = displayId == Display.DEFAULT_DISPLAY val params = ScreenDecorations.getWindowLayoutBaseParams(excludeFromScreenshots).apply { @@ -110,6 +114,11 @@ constructor( e, ) } + return rootView + } + + fun stop() { + dotViews.forEach { viewCaptureAwareWindowManager.removeView(it) } } @AssistedFactory diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/layout/LetterboxBackgroundProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/layout/LetterboxBackgroundProvider.kt index 3d8ced1b865f..a1536e3b4caa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/layout/LetterboxBackgroundProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/layout/LetterboxBackgroundProvider.kt @@ -23,7 +23,6 @@ import android.os.Handler import android.os.RemoteException import android.view.IWindowManager import com.android.systemui.CoreStartable -import com.android.systemui.Dumpable import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main @@ -40,7 +39,7 @@ constructor( @Background private val backgroundExecutor: Executor, private val wallpaperManager: WallpaperManager, @Main private val mainHandler: Handler, -) : CoreStartable, Dumpable { +) : CoreStartable { @ColorInt var letterboxBackgroundColor: Int = Color.BLACK private set diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt index e6dd09b1e1b2..e00d0257fa82 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceController.kt @@ -331,7 +331,7 @@ constructor( } /** Constructs the date view and connects it to the smartspace service. */ - fun buildAndConnectDateView(parent: ViewGroup): View? { + fun buildAndConnectDateView(parent: ViewGroup, isLargeClock: Boolean): View? { execution.assertIsMainThread() if (!isEnabled) { @@ -346,6 +346,7 @@ constructor( surfaceName = SmartspaceViewModel.SURFACE_DATE_VIEW, parent = parent, plugin = datePlugin, + isLargeClock = isLargeClock ) connectSession() @@ -353,7 +354,7 @@ constructor( } /** Constructs the weather view and connects it to the smartspace service. */ - fun buildAndConnectWeatherView(parent: ViewGroup): View? { + fun buildAndConnectWeatherView(parent: ViewGroup, isLargeClock: Boolean): View? { execution.assertIsMainThread() if (!isEnabled) { @@ -368,6 +369,7 @@ constructor( surfaceName = SmartspaceViewModel.SURFACE_WEATHER_VIEW, parent = parent, plugin = weatherPlugin, + isLargeClock = isLargeClock, ) connectSession() @@ -390,6 +392,7 @@ constructor( parent = parent, plugin = plugin, configPlugin = configPlugin, + isLargeClock = false, ) connectSession() @@ -401,12 +404,13 @@ constructor( parent: ViewGroup, plugin: BcSmartspaceDataPlugin?, configPlugin: BcSmartspaceConfigPlugin? = null, + isLargeClock: Boolean, ): View? { if (plugin == null) { return null } - val ssView = plugin.getView(parent) + val ssView = if (isLargeClock) plugin.getLargeClockView(parent) else plugin.getView(parent) configPlugin?.let { ssView.registerConfigProvider(it) } ssView.setBgHandler(bgHandler) ssView.setUiSurface(BcSmartspaceDataPlugin.UI_SURFACE_LOCK_SCREEN_AOD) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt index f52b9247f6cc..df8fb5e75368 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt @@ -91,7 +91,7 @@ constructor( ImageSpan(it, ImageSpan.ALIGN_CENTER) } val decoratedSummary = - SpannableString("x" + entry.ranking.summarization).apply { + SpannableString("x " + entry.ranking.summarization).apply { setSpan( /* what = */ imageSpan, /* start = */ 0, @@ -100,9 +100,9 @@ constructor( ) entry.ranking.summarization?.let { setSpan( - /* what = */ StyleSpan(Typeface.BOLD), - /* start = */ 1, - /* end = */ it.length, + /* what = */ StyleSpan(Typeface.ITALIC), + /* start = */ 2, + /* end = */ it.length + 2, /* flags = */ Spanned.SPAN_EXCLUSIVE_INCLUSIVE, ) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationClicker.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationClicker.java index ccfb43eb7912..4053d065cb16 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationClicker.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationClicker.java @@ -25,6 +25,7 @@ import com.android.systemui.DejankUtils; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.wm.shell.bubbles.Bubbles; import java.util.Optional; @@ -99,8 +100,14 @@ public final class NotificationClicker implements View.OnClickListener { row.setJustClicked(true); DejankUtils.postAfterTraversal(() -> row.setJustClicked(false)); - if (!row.getEntry().isBubble() && mBubblesOptional.isPresent()) { - mBubblesOptional.get().collapseStack(); + if (NotificationBundleUi.isEnabled()) { + if (!row.getEntryAdapter().isBubbleCapable() && mBubblesOptional.isPresent()) { + mBubblesOptional.get().collapseStack(); + } + } else { + if (!row.getEntry().isBubble() && mBubblesOptional.isPresent()) { + mBubblesOptional.get().collapseStack(); + } } mNotificationActivityStarter.onNotificationClicked(entry, row); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt index 243a868bb7b5..874a059d2323 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationTransitionAnimatorController.kt @@ -26,6 +26,7 @@ import com.android.systemui.statusbar.notification.domain.interactor.Notificatio import com.android.systemui.statusbar.notification.headsup.HeadsUpManager import com.android.systemui.statusbar.notification.headsup.HeadsUpUtil import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi import com.android.systemui.statusbar.notification.stack.NotificationListContainer import kotlin.math.ceil import kotlin.math.max @@ -117,7 +118,7 @@ class NotificationTransitionAnimatorController( params.startNotificationTop = location[1] params.notificationParentTop = notificationListContainer - .getViewParentForNotification(notificationEntry) + .getViewParentForNotification() .locationOnScreen[1] params.startRoundedTopClipping = roundedTopClipping params.startClipTopAmount = notification.clipTopAmount @@ -148,7 +149,7 @@ class NotificationTransitionAnimatorController( Log.d(TAG, reason) } notificationLaunchAnimationInteractor.setIsLaunchAnimationRunning(willAnimate) - notificationEntry.isExpandAnimationRunning = willAnimate + notification.isLaunchAnimationRunning = willAnimate if (!willAnimate) { removeHun(animate = true, reason) @@ -158,7 +159,8 @@ class NotificationTransitionAnimatorController( private val headsUpNotificationRow: ExpandableNotificationRow? get() { - val pipelineParent = notificationEntry.parent + val pipelineParent = if (NotificationBundleUi.isEnabled) + notification.entryAdapter?.parent else notificationEntry.parent val summaryEntry = (pipelineParent as? GroupEntry)?.summary return when { headsUpManager.isHeadsUpEntry(notificationKey) -> notification @@ -190,7 +192,7 @@ class NotificationTransitionAnimatorController( // TODO(b/184121838): Should we call InteractionJankMonitor.cancel if the animation started // here? notificationLaunchAnimationInteractor.setIsLaunchAnimationRunning(false) - notificationEntry.isExpandAnimationRunning = false + notification.isLaunchAnimationRunning = false removeHun(animate = true, "onLaunchAnimationCancelled()") onFinishAnimationCallback?.run() } @@ -210,7 +212,7 @@ class NotificationTransitionAnimatorController( notification.isExpandAnimationRunning = false notificationLaunchAnimationInteractor.setIsLaunchAnimationRunning(false) - notificationEntry.isExpandAnimationRunning = false + notification.isLaunchAnimationRunning = false notificationListContainer.setExpandingNotification(null) applyParams(null) removeHun(animate = false, "onLaunchAnimationEnd()") diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java index c79cae7a0635..6dd44a123538 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/BundleEntry.java @@ -24,6 +24,7 @@ import static android.app.NotificationChannel.SOCIAL_MEDIA_ID; import android.app.Notification; import android.content.Context; import android.os.Build; +import android.service.notification.StatusBarNotification; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -163,6 +164,48 @@ public class BundleEntry extends PipelineEntry { // TODO(b/396446620): implement bundle icons return null; } + + @Override + public boolean isColorized() { + return false; + } + + @Override + @Nullable + public StatusBarNotification getSbn() { + return null; + } + + @Override + public boolean canDragAndDrop() { + return false; + } + + @Override + public boolean isBubbleCapable() { + return false; + } + + @Override + @Nullable + public String getStyle() { + return null; + } + + @Override + public int getSectionBucket() { + return mBucket; + } + + @Override + public boolean isAmbient() { + return false; + } + + @Override + public boolean isFullScreenCapable() { + return false; + } } public static final List<BundleEntry> ROOT_BUNDLES = List.of( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/EntryAdapter.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/EntryAdapter.java index 109ebe6c063e..307a9573d5d8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/EntryAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/EntryAdapter.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.notification.collection; import android.content.Context; +import android.service.notification.StatusBarNotification; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -109,4 +110,30 @@ public interface EntryAdapter { * Returns whether the content of this entry is sensitive */ StateFlow<Boolean> isSensitive(); + + /** + * Returns whether this row has a background color set by an app + */ + boolean isColorized(); + + /** + * Returns the SBN that backs this row, if present + */ + @Nullable + StatusBarNotification getSbn(); + + boolean canDragAndDrop(); + + boolean isBubbleCapable(); + + @Nullable String getStyle(); + + int getSectionBucket(); + + boolean isAmbient(); + + default boolean isFullScreenCapable() { + return false; + } } + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java index 22de83e92b8d..9795edf3313c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java @@ -96,6 +96,7 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.No import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender; import com.android.systemui.statusbar.notification.collection.notifcollection.RankingAppliedEvent; import com.android.systemui.statusbar.notification.collection.notifcollection.RankingUpdatedEvent; +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource; import com.android.systemui.statusbar.notification.collection.provider.NotificationDismissibilityProvider; import com.android.systemui.util.Assert; import com.android.systemui.util.NamedListenerSet; @@ -547,6 +548,12 @@ public class NotifCollection implements Dumpable, PipelineDumpable { // TODO: If a coalesced event ever gets here, it's possible to lose track of children, // since their rankings might have been updated earlier (and thus we may no longer // think a child is associated with this locally-dismissed entry). + // If the postTime remains the same, we can assume the update is from SystemServer, not + // the app. + long lastUpdateTime = entry.getSbn().getPostTime(); + UpdateSource source = sbn.getPostTime() == lastUpdateTime + ? UpdateSource.SystemServer + : UpdateSource.App; cancelLocalDismissal(entry); cancelLifetimeExtension(entry); cancelDismissInterception(entry); @@ -556,7 +563,7 @@ public class NotifCollection implements Dumpable, PipelineDumpable { mEventQueue.add(new BindEntryEvent(entry, sbn)); mLogger.logNotifUpdated(entry); - mEventQueue.add(new EntryUpdatedEvent(entry, true /* fromSystem */)); + mEventQueue.add(new EntryUpdatedEvent(entry, source)); } } @@ -1045,7 +1052,7 @@ public class NotifCollection implements Dumpable, PipelineDumpable { mEventQueue.add(new BindEntryEvent(entry, sbn)); mLogger.logNotifUpdated(entry); - mEventQueue.add(new EntryUpdatedEvent(entry, false /* fromSystem */)); + mEventQueue.add(new EntryUpdatedEvent(entry, UpdateSource.SystemUi)); // Skip the applyRanking step and go straight to dispatching the events dispatchEventsAndRebuildList("updateNotificationInternally"); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java index fb2a66c94e09..b19ba3a18826 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java @@ -32,7 +32,6 @@ import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BA import static com.android.systemui.statusbar.notification.collection.BundleEntry.ROOT_BUNDLES; import static com.android.systemui.statusbar.notification.collection.GroupEntry.ROOT_ENTRY; import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_NOT_CANCELED; -import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING; import static java.util.Objects.requireNonNull; @@ -42,6 +41,7 @@ import android.app.Notification; import android.app.Notification.MessagingStyle.Message; import android.app.NotificationChannel; import android.app.NotificationManager.Policy; +import android.app.PendingIntent; import android.app.Person; import android.app.RemoteInput; import android.app.RemoteInputHistoryItem; @@ -79,7 +79,6 @@ import com.android.systemui.statusbar.notification.row.shared.HeadsUpStatusBarMo import com.android.systemui.statusbar.notification.row.shared.NotificationContentModel; import com.android.systemui.statusbar.notification.row.shared.NotificationRowContentBinderRefactor; import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; -import com.android.systemui.statusbar.notification.stack.PriorityBucket; import com.android.systemui.util.ListenerSet; import kotlinx.coroutines.flow.MutableStateFlow; @@ -183,7 +182,6 @@ public final class NotificationEntry extends ListEntry { new ListenerSet<>(); private boolean mPulseSupressed; - private int mBucket = BUCKET_ALERTING; private boolean mIsMarkedForUserTriggeredMovement; private boolean mIsHeadsUpEntry; @@ -353,6 +351,56 @@ public final class NotificationEntry extends ListEntry { public IconPack getIcons() { return NotificationEntry.this.getIcons(); } + + @Override + public boolean isColorized() { + return getSbn().getNotification().isColorized(); + } + + @Override + @Nullable + public StatusBarNotification getSbn() { + return NotificationEntry.this.getSbn(); + } + + @Override + public boolean canDragAndDrop() { + boolean canBubble = canBubble(); + Notification notif = getSbn().getNotification(); + PendingIntent dragIntent = notif.contentIntent != null ? notif.contentIntent + : notif.fullScreenIntent; + if (dragIntent != null && dragIntent.isActivity() && !canBubble) { + return true; + } + return false; + } + + @Override + public boolean isBubbleCapable() { + return NotificationEntry.this.isBubble(); + } + + @Override + @Nullable + public String getStyle() { + return getNotificationStyle(); + } + + @Override + public int getSectionBucket() { + return mBucket; + } + + @Override + public boolean isAmbient() { + return mRanking.isAmbient(); + } + + @Override + public boolean isFullScreenCapable() { + return getSbn().getNotification().fullScreenIntent != null; + } + } public EntryAdapter getEntryAdapter() { @@ -560,15 +608,6 @@ public final class NotificationEntry extends ListEntry { return wasBubble != isBubble(); } - @PriorityBucket - public int getBucket() { - return mBucket; - } - - public void setBucket(@PriorityBucket int bucket) { - mBucket = bucket; - } - public ExpandableNotificationRow getRow() { return row; } @@ -589,25 +628,45 @@ public final class NotificationEntry extends ListEntry { /** * Get the children that are actually attached to this notification's row. * - * TODO: Seems like most callers here should probably be using - * {@link GroupMembershipManager#getChildren(PipelineEntry)} + * TODO: Seems like most callers here should be asking a PipelineEntry, not a NotificationEntry */ public @Nullable List<NotificationEntry> getAttachedNotifChildren() { - if (row == null) { - return null; - } + if (NotificationBundleUi.isEnabled()) { + if (isGroupSummary()) { + return ((GroupEntry) getParent()).getChildren(); + } + } else { + if (row == null) { + return null; + } - List<ExpandableNotificationRow> rowChildren = row.getAttachedChildren(); - if (rowChildren == null) { - return null; + List<ExpandableNotificationRow> rowChildren = row.getAttachedChildren(); + if (rowChildren == null) { + return null; + } + + ArrayList<NotificationEntry> children = new ArrayList<>(); + for (ExpandableNotificationRow child : rowChildren) { + children.add(child.getEntry()); + } + + return children; } + return null; + } - ArrayList<NotificationEntry> children = new ArrayList<>(); - for (ExpandableNotificationRow child : rowChildren) { - children.add(child.getEntry()); + private boolean isGroupSummary() { + if (getParent() == null) { + // The entry is not attached, so it doesn't count. + return false; + } + PipelineEntry pipelineEntry = getParent(); + if (!(pipelineEntry instanceof GroupEntry groupEntry)) { + return false; } - return children; + // If entry is a summary, its parent is a GroupEntry with summary = entry. + return groupEntry.getSummary() == this; } public void notifyFullScreenIntentLaunched() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java index 78652ccda1d1..84de77bac352 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/PipelineEntry.java @@ -16,10 +16,13 @@ package com.android.systemui.statusbar.notification.collection; +import static com.android.systemui.statusbar.notification.stack.NotificationPriorityBucketKt.BUCKET_ALERTING; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection; +import com.android.systemui.statusbar.notification.stack.PriorityBucket; /** * Class to represent a notification, group, or bundle in the pipeline. @@ -29,6 +32,7 @@ public abstract class PipelineEntry { final String mKey; final ListAttachState mAttachState = ListAttachState.create(); final ListAttachState mPreviousAttachState = ListAttachState.create(); + protected int mBucket = BUCKET_ALERTING; public PipelineEntry(String key) { this.mKey = key; @@ -86,4 +90,13 @@ public abstract class PipelineEntry { final ListAttachState getPreviousAttachState() { return mPreviousAttachState; } + + @PriorityBucket + public int getBucket() { + return mBucket; + } + + public void setBucket(@PriorityBucket int bucket) { + mBucket = bucket; + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorLogger.kt index 788659eb3ccc..3cd618f158ec 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinatorLogger.kt @@ -20,15 +20,14 @@ import com.android.systemui.log.LogBuffer import com.android.systemui.log.core.LogLevel import com.android.systemui.log.dagger.UnseenNotificationLog import com.android.systemui.statusbar.notification.collection.NotificationEntry +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource import javax.inject.Inject private const val TAG = "KeyguardCoordinator" class KeyguardCoordinatorLogger @Inject -constructor( - @UnseenNotificationLog private val buffer: LogBuffer, -) { +constructor(@UnseenNotificationLog private val buffer: LogBuffer) { fun logSeenOnLockscreen(entry: NotificationEntry) = buffer.log( TAG, @@ -47,10 +46,7 @@ constructor( messagePrinter = { "${if (bool1) "Start" else "Stop"} tracking unseen notifications." }, ) - fun logAllMarkedSeenOnUnlock( - seenCount: Int, - remainingUnseenCount: Int, - ) = + fun logAllMarkedSeenOnUnlock(seenCount: Int, remainingUnseenCount: Int) = buffer.log( TAG, LogLevel.DEBUG, @@ -68,23 +64,30 @@ constructor( buffer.log( TAG, LogLevel.DEBUG, - "Notifications have been marked as seen due to shade expansion." + "Notifications have been marked as seen due to shade expansion.", ) - fun logUnseenAdded(key: String) = + fun logUnseenAdded(key: String, postTime: Long) = buffer.log( TAG, LogLevel.DEBUG, - messageInitializer = { str1 = key }, - messagePrinter = { "Unseen notif added: $str1" }, + messageInitializer = { + str1 = key + long1 = postTime + }, + messagePrinter = { "Unseen notif added: $str1, postTime: $long1" }, ) - fun logUnseenUpdated(key: String) = + fun logUnseenUpdated(key: String, source: UpdateSource, postTime: Long) = buffer.log( TAG, LogLevel.DEBUG, - messageInitializer = { str1 = key }, - messagePrinter = { "Unseen notif updated: $str1" }, + messageInitializer = { + str1 = key + str2 = source.toString() + long1 = postTime + }, + messagePrinter = { "Unseen notif updated: $str1, source: $str2, postTime: $long1" }, ) fun logUnseenRemoved(key: String) = diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt index 660ee401b369..96234179cf60 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/OriginalUnseenKeyguardCoordinator.kt @@ -36,6 +36,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor import com.android.systemui.statusbar.notification.headsup.HeadsUpManager import com.android.systemui.statusbar.notification.headsup.headsUpEvents @@ -274,17 +275,22 @@ constructor( if ( keyguardRepository.isKeyguardShowing() || !statusBarStateController.isExpanded ) { - logger.logUnseenAdded(entry.key) + logger.logUnseenAdded(entry.key, entry.sbn.postTime) unseenNotifications.add(entry) unseenEntryAdded.tryEmit(entry) } } - override fun onEntryUpdated(entry: NotificationEntry) { + override fun onEntryUpdated(entry: NotificationEntry, source: UpdateSource) { if ( keyguardRepository.isKeyguardShowing() || !statusBarStateController.isExpanded ) { - logger.logUnseenUpdated(entry.key) + logger.logUnseenUpdated(entry.key, source, entry.sbn.postTime) + // We are not marking a notif as unseen if it's updated by the SystemServer + // (for example, auto-grouping), or the SystemUi, not the App. + if (source != UpdateSource.App) { + return + } unseenNotifications.add(entry) unseenEntryAdded.tryEmit(entry) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt index 1fe32c9a873a..e7c767f42c12 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt @@ -38,6 +38,7 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.In import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender import com.android.systemui.statusbar.notification.collection.notifcollection.SelfTrackingLifetimeExtender +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource import java.io.PrintWriter import javax.inject.Inject @@ -103,15 +104,15 @@ constructor( */ val mCollectionListener = object : NotifCollectionListener { - override fun onEntryUpdated(entry: NotificationEntry, fromSystem: Boolean) { + override fun onEntryUpdated(entry: NotificationEntry, source: UpdateSource) { if (DEBUG) { Log.d( TAG, "mCollectionListener.onEntryUpdated(entry=${entry.key}," + - " fromSystem=$fromSystem)", + " source=$source)", ) } - if (fromSystem) { + if (source != UpdateSource.SystemUi) { if (lifetimeExtensionRefactor()) { if ( (entry.getSbn().getNotification().flags and diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java index 9ed1632c8bc6..c2f0806a9cd6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java @@ -136,9 +136,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder { @NonNull NotifInflater.Params params, NotificationRowContentBinder.InflationCallback callback) throws InflationException { - //TODO(b/217799515): Remove the entry parameter from getViewParentForNotification(), this - // function returns the NotificationStackScrollLayout regardless of the entry. - ViewGroup parent = mListContainer.getViewParentForNotification(entry); + ViewGroup parent = mListContainer.getViewParentForNotification(); if (entry.rowExists()) { mLogger.logUpdatingRow(entry, params); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java index 362786ec4b58..ae1efa7ec137 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java @@ -59,10 +59,9 @@ public interface NotifCollectionListener { * Called whenever a notification with the same key as an existing notification is posted. By * the time this listener is called, the entry's SBN and Ranking will already have been updated. * This delegates to {@link #onEntryUpdated(NotificationEntry)} by default. - * @param fromSystem If true, this update came from the NotificationManagerService. - * If false, the notification update is an internal change within systemui. + * @param source The source of the update. */ - default void onEntryUpdated(@NonNull NotificationEntry entry, boolean fromSystem) { + default void onEntryUpdated(NotificationEntry entry, UpdateSource source) { onEntryUpdated(entry); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifEvent.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifEvent.kt index 1dd624268c3d..df22db2bc910 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifEvent.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifEvent.kt @@ -20,10 +20,10 @@ import android.app.NotificationChannel import android.os.UserHandle import android.service.notification.NotificationListenerService.RankingMap import android.service.notification.StatusBarNotification +import com.android.app.tracing.traceSection import com.android.systemui.statusbar.notification.collection.NotifCollection import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.util.NamedListenerSet -import com.android.app.tracing.traceSection /** * Set of classes that represent the various events that [NotifCollection] can dispatch to @@ -31,71 +31,66 @@ import com.android.app.tracing.traceSection * * These events build up in a queue and are periodically emitted in chunks by the collection. */ - sealed class NotifEvent(private val traceName: String) { fun dispatchTo(listeners: NamedListenerSet<NotifCollectionListener>) { - traceSection(traceName) { - listeners.forEachTraced(::dispatchToListener) - } + traceSection(traceName) { listeners.forEachTraced(::dispatchToListener) } } abstract fun dispatchToListener(listener: NotifCollectionListener) } -data class BindEntryEvent( - val entry: NotificationEntry, - val sbn: StatusBarNotification -) : NotifEvent("onEntryBind") { +data class BindEntryEvent(val entry: NotificationEntry, val sbn: StatusBarNotification) : + NotifEvent("onEntryBind") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onEntryBind(entry, sbn) } } -data class InitEntryEvent( - val entry: NotificationEntry -) : NotifEvent("onEntryInit") { +data class InitEntryEvent(val entry: NotificationEntry) : NotifEvent("onEntryInit") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onEntryInit(entry) } } -data class EntryAddedEvent( - val entry: NotificationEntry -) : NotifEvent("onEntryAdded") { +data class EntryAddedEvent(val entry: NotificationEntry) : NotifEvent("onEntryAdded") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onEntryAdded(entry) } } -data class EntryUpdatedEvent( - val entry: NotificationEntry, - val fromSystem: Boolean -) : NotifEvent(if (fromSystem) "onEntryUpdated" else "onEntryUpdated fromSystem=true") { +data class EntryUpdatedEvent(val entry: NotificationEntry, val source: UpdateSource) : + NotifEvent( + if (source == UpdateSource.SystemUi) "onEntryUpdated" else "onEntryUpdated fromSystem=true" + ) { override fun dispatchToListener(listener: NotifCollectionListener) { - listener.onEntryUpdated(entry, fromSystem) + listener.onEntryUpdated(entry, source) } } -data class EntryRemovedEvent( - val entry: NotificationEntry, - val reason: Int -) : NotifEvent("onEntryRemoved ${cancellationReasonDebugString(reason)}") { +/** Source of an entry update. */ +enum class UpdateSource { + /** From the app that posted the notification. */ + App, + /** From the NotificationManagerService. */ + SystemServer, + /** From SystemUi for rendering purpose. */ + SystemUi, +} + +data class EntryRemovedEvent(val entry: NotificationEntry, val reason: Int) : + NotifEvent("onEntryRemoved ${cancellationReasonDebugString(reason)}") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onEntryRemoved(entry, reason) } } -data class CleanUpEntryEvent( - val entry: NotificationEntry -) : NotifEvent("onEntryCleanUp") { +data class CleanUpEntryEvent(val entry: NotificationEntry) : NotifEvent("onEntryCleanUp") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onEntryCleanUp(entry) } } -data class RankingUpdatedEvent( - val rankingMap: RankingMap -) : NotifEvent("onRankingUpdate") { +data class RankingUpdatedEvent(val rankingMap: RankingMap) : NotifEvent("onRankingUpdate") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onRankingUpdate(rankingMap) } @@ -111,7 +106,7 @@ data class ChannelChangedEvent( val pkgName: String, val user: UserHandle, val channel: NotificationChannel, - val modificationType: Int + val modificationType: Int, ) : NotifEvent("onNotificationChannelModified") { override fun dispatchToListener(listener: NotifCollectionListener) { listener.onNotificationChannelModified(pkgName, user, channel, modificationType) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java index 25deec375c03..d09546fe80ca 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java @@ -391,7 +391,7 @@ public class FooterView extends StackScrollerDecorView { if (!notificationFooterBackgroundTintOptimization()) { if (notificationShadeBlur()) { Color backgroundColor = Color.valueOf( - SurfaceEffectColors.surfaceEffect1(getResources())); + SurfaceEffectColors.surfaceEffect1(getContext())); scHigh = ColorUtils.setAlphaComponent(backgroundColor.toArgb(), 0xFF); // Apply alpha on background drawables. int backgroundAlpha = (int) (backgroundColor.alpha() * 0xFF); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpAnimator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpAnimator.kt new file mode 100644 index 000000000000..f9bd805a2628 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpAnimator.kt @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.headsup + +import android.content.Context +import com.android.systemui.res.R + +/** + * A class shared between [StackScrollAlgorithm] and [StackStateAnimator] to ensure all heads up + * animations use the same animation values. + */ +class HeadsUpAnimator(context: Context) { + init { + NotificationsHunSharedAnimationValues.assertInNewMode() + } + + var headsUpAppearHeightBottom: Int = 0 + var stackTopMargin: Int = 0 + + private var headsUpAppearStartAboveScreen = context.fetchHeadsUpAppearStartAboveScreen() + + /** + * Returns the Y translation for a heads-up notification animation. + * + * For an appear animation, the returned Y translation should be the starting value of the + * animation. For a disappear animation, the returned Y translation should be the ending value + * of the animation. + */ + fun getHeadsUpYTranslation(isHeadsUpFromBottom: Boolean): Int { + NotificationsHunSharedAnimationValues.assertInNewMode() + + if (isHeadsUpFromBottom) { + // start from or end at the bottom of the screen + return headsUpAppearHeightBottom + headsUpAppearStartAboveScreen + } + + // start from or end at the top of the screen + return -stackTopMargin - headsUpAppearStartAboveScreen + } + + /** Should be invoked when resource values may have changed. */ + fun updateResources(context: Context) { + headsUpAppearStartAboveScreen = context.fetchHeadsUpAppearStartAboveScreen() + } + + private fun Context.fetchHeadsUpAppearStartAboveScreen(): Int { + return this.resources.getDimensionPixelSize(R.dimen.heads_up_appear_y_above_screen) + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java index 7c5f3b5638e9..5157e7a5e42f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/HeadsUpManagerImpl.java @@ -332,7 +332,9 @@ public class HeadsUpManagerImpl onEntryAdded(headsUpEntry, requestedPinnedStatus); // TODO(b/328390331) move accessibility events to the view layer entry.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); - entry.setIsHeadsUpEntry(true); + if (!NotificationBundleUi.isEnabled()) { + entry.setIsHeadsUpEntry(true); + } updateNotificationInternal(entry.getKey(), requestedPinnedStatus); entry.setInterruption(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/NotificationsHunSharedAnimationValues.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/NotificationsHunSharedAnimationValues.kt new file mode 100644 index 000000000000..ca9d498c0e7f --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/headsup/NotificationsHunSharedAnimationValues.kt @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.headsup + +import com.android.systemui.Flags +import com.android.systemui.flags.FlagToken +import com.android.systemui.flags.RefactorFlagUtils + +/** Helper for reading or using the notifications hun shared animation values flag state. */ +@Suppress("NOTHING_TO_INLINE") +object NotificationsHunSharedAnimationValues { + /** The aconfig flag name */ + const val FLAG_NAME = Flags.FLAG_NOTIFICATIONS_HUN_SHARED_ANIMATION_VALUES + + /** A token used for dependency declaration */ + val token: FlagToken + get() = FlagToken(FLAG_NAME, isEnabled) + + /** Is the refactor enabled */ + @JvmStatic + inline val isEnabled + get() = Flags.notificationsHunSharedAnimationValues() + + /** + * Called to ensure code is only run when the flag is enabled. This protects users from the + * unintended behaviors caused by accidentally running new logic, while also crashing on an eng + * build to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun isUnexpectedlyInLegacyMode() = + RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, FLAG_NAME) + + /** + * Called to ensure code is only run when the flag is enabled. This will throw an exception if + * the flag is not enabled to ensure that the refactor author catches issues in testing. + * Caution!! Using this check incorrectly will cause crashes in nextfood builds! + */ + @JvmStatic + inline fun assertInNewMode() = RefactorFlagUtils.assertInNewMode(isEnabled, FLAG_NAME) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is enabled to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, FLAG_NAME) +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java index cc4be57168cc..ec8fbc08de7a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource; import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider; import com.android.systemui.statusbar.notification.dagger.NotificationsModule; import com.android.systemui.statusbar.notification.shared.NotificationsLiveDataStoreRefactor; @@ -234,7 +235,7 @@ public class NotificationLogger implements StateListener, CoreStartable, private void registerNewPipelineListener() { mNotifPipeline.addCollectionListener(new NotifCollectionListener() { @Override - public void onEntryUpdated(@NonNull NotificationEntry entry, boolean fromSystem) { + public void onEntryUpdated(@NonNull NotificationEntry entry, UpdateSource source) { mExpansionStateLogger.onEntryUpdated(entry.getKey()); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java index 4ed9dcee072e..a081ad5bb82c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java @@ -129,7 +129,7 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView private void updateColors() { if (notificationRowTransparency()) { - mNormalColor = SurfaceEffectColors.surfaceEffect1(getResources()); + mNormalColor = SurfaceEffectColors.surfaceEffect1(getContext()); } else { mNormalColor = mContext.getColor( com.android.internal.R.color.materialColorSurfaceContainerHigh); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java index 6134d1d53338..179951f67902 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java @@ -300,6 +300,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView private boolean mIsSystemChildExpanded; private PinnedStatus mPinnedStatus = PinnedStatus.NotPinned; private boolean mExpandAnimationRunning; + private boolean mLaunchAnimationRunning; private AboveShelfChangedListener mAboveShelfChangedListener; private HeadsUpManager mHeadsUpManager; private Consumer<Boolean> mHeadsUpAnimatingAwayListener; @@ -973,6 +974,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView } else if (isAboveShelf() != wasAboveShelf) { mAboveShelfChangedListener.onAboveShelfStateChanged(!wasAboveShelf); } + updateBackgroundOpacity(); } /** @@ -1677,10 +1679,15 @@ public class ExpandableNotificationRow extends ActivatableNotificationView view.setBackgroundTintColor(color); } if (notificationRowTransparency() - && (mBackgroundNormal != null) - && (mEntry != null)) { - mBackgroundNormal.setBgIsColorized( - mEntry.getSbn().getNotification().isColorized()); + && (mBackgroundNormal != null)) { + if (NotificationBundleUi.isEnabled()) { + mBackgroundNormal.setBgIsColorized(mEntryAdapter.isColorized()); + } else { + if (mEntry != null) { + mBackgroundNormal.setBgIsColorized( + mEntry.getSbn().getNotification().isColorized()); + } + } } } @@ -2204,7 +2211,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView R.dimen.notification_min_height); } mMaxSmallHeightWithSummarization = NotificationUtils.getFontScaledHeight(mContext, - com.android.internal.R.dimen.notification_min_height); + com.android.internal.R.dimen.notification_collapsed_height_with_summarization); mMaxExpandedHeight = NotificationUtils.getFontScaledHeight(mContext, R.dimen.notification_max_height); mMaxExpandedHeightForPromotedOngoing = NotificationUtils.getFontScaledHeight(mContext, @@ -2372,7 +2379,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return traceTag; } - return traceTag + "(" + getEntry().getNotificationStyle() + ")"; + if (NotificationBundleUi.isEnabled()) { + return traceTag + "(" + getEntryAdapter().getStyle() + ")"; + } else { + return traceTag + "(" + getEntry().getNotificationStyle() + ")"; + } } @Override @@ -3066,6 +3077,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView mChildrenContainer.setOnKeyguard(onKeyguard); } } + updateBackgroundOpacity(); } } @@ -3695,8 +3707,14 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return true; } // The colorized background is another layer with which all other elements overlap - if (getEntry().getSbn().getNotification().isColorized()) { - return true; + if (NotificationBundleUi.isEnabled()) { + if (mEntryAdapter.isColorized()) { + return true; + } + } else { + if (getEntry().getSbn().getNotification().isColorized()) { + return true; + } } // Check if the showing layout has a need for overlapping rendering. // NOTE: We could check both public and private layouts here, but becuause these states @@ -4487,4 +4505,30 @@ public class ExpandableNotificationRow extends ActivatableNotificationView } mLogger.logRemoveTransientRow(row.getLoggingKey(), mLoggingKey); } + + /** Set whether this notification is currently used to animate a launch. */ + public void setLaunchAnimationRunning(boolean launchAnimationRunning) { + if (NotificationBundleUi.isEnabled()) { + mLaunchAnimationRunning = launchAnimationRunning; + } else { + getEntry().setExpandAnimationRunning(launchAnimationRunning); + } + } + + /** Whether this notification is currently used to animate a launch. */ + public boolean isLaunchAnimationRunning() { + if (NotificationBundleUi.isEnabled()) { + return mLaunchAnimationRunning; + } else { + return getEntry().isExpandAnimationRunning(); + } + } + + private void updateBackgroundOpacity() { + if (mBackgroundNormal != null) { + // Row background should be opaque when it's displayed as a heads-up notification or + // displayed on keyguard. + mBackgroundNormal.setForceOpaque(mIsHeadsUp || mOnKeyguard); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java index 07711b6e0eb8..02e8f4917da4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java @@ -127,7 +127,14 @@ public class ExpandableNotificationRowController implements NotifViewController @Override public void onSettingChanged(Uri setting, int userId, String value) { if (BUBBLES_SETTING_URI.equals(setting)) { - final int viewUserId = mView.getEntry().getSbn().getUserId(); + if (NotificationBundleUi.isEnabled() + && mView.getEntryAdapter().getSbn() == null) { + // only valid for notification rows + return; + } + final int viewUserId = NotificationBundleUi.isEnabled() + ? mView.getEntryAdapter().getSbn().getUserId() + : mView.getEntry().getSbn().getUserId(); if (viewUserId == UserHandle.USER_ALL || viewUserId == userId) { mView.getPrivateLayout().setBubblesEnabledForUser( BUBBLES_SETTING_ENABLED_VALUE.equals(value)); @@ -376,8 +383,12 @@ public class ExpandableNotificationRowController implements NotifViewController public void onViewAttachedToWindow(View v) { if (NotificationBundleUi.isEnabled()) { mView.setInitializationTime(mClock.elapsedRealtime()); + if (mView.getEntryAdapter().getSbn() != null) { + mSettingsController.addCallback(BUBBLES_SETTING_URI, mSettingsListener); + } } else { mView.getEntry().setInitializationTime(mClock.elapsedRealtime()); + mSettingsController.addCallback(BUBBLES_SETTING_URI, mSettingsListener); } mPluginManager.addPluginListener(mView, NotificationMenuRowPlugin.class, false /* Allow multiple */); @@ -385,7 +396,7 @@ public class ExpandableNotificationRowController implements NotifViewController mView.setOnKeyguard(mStatusBarStateController.getState() == KEYGUARD); mStatusBarStateController.addCallback(mStatusBarStateListener); } - mSettingsController.addCallback(BUBBLES_SETTING_URI, mSettingsListener); + } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragController.java index d5551b16842e..9ae2eb1b9328 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowDragController.java @@ -54,6 +54,7 @@ import com.android.systemui.shade.ShadeDisplayAware; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.notification.logging.NotificationPanelLogger; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import javax.inject.Inject; @@ -100,7 +101,15 @@ public class ExpandableNotificationRowDragController { enr = (ExpandableNotificationRow) view; } - StatusBarNotification sn = enr.getEntry().getSbn(); + if (NotificationBundleUi.isEnabled()) { + if (!enr.getEntryAdapter().canDragAndDrop()) { + return; + } + } + + StatusBarNotification sn = NotificationBundleUi.isEnabled() + ? enr.getEntryAdapter().getSbn() + : enr.getEntry().getSbn(); Notification notification = sn.getNotification(); final PendingIntent contentIntent = notification.contentIntent != null ? notification.contentIntent @@ -115,8 +124,7 @@ public class ExpandableNotificationRowDragController { .show(); return; } - Bitmap iconBitmap = getBitmapFromDrawable( - getPkgIcon(enr.getEntry().getSbn().getPackageName())); + Bitmap iconBitmap = getBitmapFromDrawable(getPkgIcon(sn.getPackageName())); final ImageView snapshot = new ImageView(mContext); snapshot.setImageBitmap(iconBitmap); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java index 344d0f6d3741..ba80f016cad4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/HybridConversationNotificationView.java @@ -51,6 +51,7 @@ import java.util.Objects; */ public class HybridConversationNotificationView extends HybridNotificationView { + private static final int MAX_SUMMARIZATION_LINES = 2; private ImageView mConversationIconView; private TextView mConversationSenderName; private ViewStub mConversationFacePileStub; @@ -292,11 +293,14 @@ public class HybridConversationNotificationView extends HybridNotificationView { @Nullable CharSequence summarization ) { if (AsyncHybridViewInflation.isUnexpectedlyInLegacyMode()) return; - if (summarization != null) { + if (!TextUtils.isEmpty(summarization)) { mConversationSenderName.setVisibility(GONE); titleText = null; contentText = summarization; + mTextView.setSingleLine(false); + mTextView.setMaxLines(MAX_SUMMARIZATION_LINES); } else { + mTextView.setSingleLine(true); if (conversationSenderName == null) { mConversationSenderName.setVisibility(GONE); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java index 33c36d8c4c76..4978fa4880aa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java @@ -53,6 +53,7 @@ import java.util.Arrays; public class NotificationBackgroundView extends View implements Dumpable, ExpandableNotificationRow.DismissButtonTargetVisibilityListener { + private static final int MAX_ALPHA = 0xFF; private final boolean mDontModifyCorners; private Drawable mBackground; private int mClipTopAmount; @@ -74,6 +75,7 @@ public class NotificationBackgroundView extends View implements Dumpable, private final ColorStateList mDarkColoredStatefulColors; private final int mNormalColor; private boolean mBgIsColorized = false; + private boolean mForceOpaque = false; private final int convexR = 9; private final int concaveR = 22; @@ -88,7 +90,7 @@ public class NotificationBackgroundView extends View implements Dumpable, mDarkColoredStatefulColors = getResources().getColorStateList( R.color.notification_state_color_dark); if (notificationRowTransparency()) { - mNormalColor = SurfaceEffectColors.surfaceEffect1(getResources()); + mNormalColor = SurfaceEffectColors.surfaceEffect1(getContext()); } else { mNormalColor = mContext.getColor( com.android.internal.R.color.materialColorSurfaceContainerHigh); @@ -156,6 +158,14 @@ public class NotificationBackgroundView extends View implements Dumpable, mBgIsColorized = b; } + /** Sets if the background should be opaque. */ + public void setForceOpaque(boolean forceOpaque) { + mForceOpaque = forceOpaque; + if (notificationRowTransparency()) { + updateBaseLayerColor(); + } + } + private Path calculateDismissButtonCutoutPath(Rect backgroundBounds) { // TODO(b/365585705): Adapt to RTL after the UX design is finalized. @@ -317,11 +327,15 @@ public class NotificationBackgroundView extends View implements Dumpable, // Instead, we set a color filter that essentially replaces every pixel of the drawable. // For non-colorized notifications, this function specifies a new color token. // For colorized notifications, this uses a color that matches the tint color at 90% alpha. + int color = isColorized() + ? ColorUtils.setAlphaComponent(mTintColor, (int) (MAX_ALPHA * 0.9f)) + : SurfaceEffectColors.surfaceEffect1(getContext()); + if (mForceOpaque) { + color = ColorUtils.setAlphaComponent(color, MAX_ALPHA); + } getBaseBackgroundLayer().setColorFilter( new PorterDuffColorFilter( - isColorized() - ? ColorUtils.setAlphaComponent(mTintColor, (int) (255 * 0.9f)) - : SurfaceEffectColors.surfaceEffect1(getResources()), + color, PorterDuff.Mode.SRC)); // SRC operator discards the drawable's color+alpha } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java index 7444679afb18..daa598b5f297 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java @@ -70,6 +70,7 @@ import com.android.systemui.statusbar.notification.row.shared.NotificationRowCon import com.android.systemui.statusbar.notification.row.ui.viewbinder.SingleLineViewBinder; import com.android.systemui.statusbar.notification.row.ui.viewmodel.SingleLineViewModel; import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainer; import com.android.systemui.statusbar.phone.CentralSurfaces; import com.android.systemui.statusbar.policy.InflatedSmartReplyState; @@ -468,7 +469,10 @@ public class NotificationContentInflater implements NotificationRowContentBinder if (LockscreenOtpRedaction.isEnabled() && bindParams.redactionType == REDACTION_TYPE_SENSITIVE_CONTENT) { result.newPublicView = createSensitiveContentMessageNotification( - row.getEntry().getSbn().getNotification(), builder.getStyle(), + NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSbn().getNotification() + : row.getEntry().getSbn().getNotification(), + builder.getStyle(), systemUiContext, packageContext).createContentView(); } else { result.newPublicView = builder.makePublicContentView(bindParams.isMinimized); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java index 0d2998174121..193203720aa5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java @@ -64,6 +64,7 @@ import com.android.systemui.statusbar.notification.row.wrapper.NotificationCompa import com.android.systemui.statusbar.notification.row.wrapper.NotificationCustomViewWrapper; import com.android.systemui.statusbar.notification.row.wrapper.NotificationHeaderViewWrapper; import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.phone.ExpandHeadsUpOnInlineReply; import com.android.systemui.statusbar.policy.InflatedSmartReplyState; import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder; @@ -594,12 +595,11 @@ public class NotificationContentView extends FrameLayout implements Notification if (mContainingNotification == null) { return null; } - final NotificationEntry entry = mContainingNotification.getEntry(); - if (entry == null) { - return null; + if (NotificationBundleUi.isEnabled()) { + return mContainingNotification.getEntryAdapter().getSbn(); + } else { + return mContainingNotification.getEntry().getSbn(); } - - return entry.getSbn(); } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java index ab382df13d10..e89a76fd5a69 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationMenuRow.java @@ -16,7 +16,7 @@ package com.android.systemui.statusbar.notification.row; -import static android.app.NotificationChannel.SYSTEM_RESERVED_IDS; +import static android.app.Flags.notificationsRedesignTemplates; import static android.view.HapticFeedbackConstants.CLOCK_TICK; import static com.android.systemui.SwipeHelper.SWIPED_FAR_ENOUGH_SIZE_FRACTION; @@ -706,8 +706,11 @@ public class NotificationMenuRow implements NotificationMenuRowPlugin, View.OnCl static NotificationMenuItem createInfoItem(Context context) { Resources res = context.getResources(); String infoDescription = res.getString(R.string.notification_menu_gear_description); + int layoutId = notificationsRedesignTemplates() + ? R.layout.notification_2025_info + : R.layout.notification_info; NotificationInfo infoContent = (NotificationInfo) LayoutInflater.from(context).inflate( - R.layout.notification_info, null, false); + layoutId, null, false); return new NotificationMenuItem(context, infoDescription, infoContent, R.drawable.ic_settings); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt index c930dd8ed74e..3586078c9e82 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinderImpl.kt @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.notification.row import android.annotation.SuppressLint +import android.app.Flags import android.app.Notification import android.app.Notification.EXTRA_SUMMARIZED_CONTENT import android.app.Notification.MessagingStyle @@ -49,10 +50,10 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager import com.android.systemui.statusbar.notification.ConversationNotificationProcessor import com.android.systemui.statusbar.notification.InflationException import com.android.systemui.statusbar.notification.NmSummarizationUiFlag -import com.android.systemui.statusbar.notification.collection.EntryAdapter import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.logKey import com.android.systemui.statusbar.notification.promoted.PromotedNotificationContentExtractor +import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiForceExpanded import com.android.systemui.statusbar.notification.promoted.shared.model.PromotedNotificationContentModel import com.android.systemui.statusbar.notification.row.NotificationContentView.VISIBLE_TYPE_CONTRACTED import com.android.systemui.statusbar.notification.row.NotificationContentView.VISIBLE_TYPE_EXPANDED @@ -1521,6 +1522,10 @@ constructor( entry.promotedNotificationContentModel = result.promotedContent } + if (PromotedNotificationUiForceExpanded.isEnabled) { + row.setPromotedOngoing(entry.isOngoingPromoted()) + } + result.inflatedSmartReplyState?.let { row.privateLayout.setInflatedSmartReplyState(it) } setContentViewsFromRemoteViews( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/icon/NotificationRowIconViewInflaterFactory.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/icon/NotificationRowIconViewInflaterFactory.kt index bb4aa86fc6a5..4082a5b35f1e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/icon/NotificationRowIconViewInflaterFactory.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/icon/NotificationRowIconViewInflaterFactory.kt @@ -26,6 +26,7 @@ import com.android.internal.widget.NotificationRowIconView.NotificationIconProvi import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.NotifRemoteViewsFactory import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi import javax.inject.Inject /** @@ -60,7 +61,18 @@ constructor( row: ExpandableNotificationRow, context: Context, ): NotificationIconProvider { - val sbn = row.entry.sbn + val sbn = if (NotificationBundleUi.isEnabled) row.entryAdapter?.sbn else row.entry.sbn + if (sbn == null) { + return object : NotificationIconProvider { + override fun shouldShowAppIcon(): Boolean { + return false + } + + override fun getAppIcon(): Drawable? { + return null + } + } + } return object : NotificationIconProvider { override fun shouldShowAppIcon(): Boolean { val shouldShowAppIcon = iconStyleProvider.shouldShowAppIcon(sbn, context) @@ -68,7 +80,7 @@ constructor( return shouldShowAppIcon } - override fun getAppIcon(): Drawable { + override fun getAppIcon(): Drawable? { val withWorkProfileBadge = iconStyleProvider.shouldShowWorkProfileBadge(sbn, context) return appIconProvider.getOrFetchAppIcon( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigPictureTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigPictureTemplateViewWrapper.java index 990adf77a902..f492b259e58d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigPictureTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigPictureTemplateViewWrapper.java @@ -30,6 +30,7 @@ import com.android.internal.widget.BigPictureNotificationImageView; import com.android.systemui.statusbar.notification.ImageTransformState; import com.android.systemui.statusbar.notification.row.BigPictureIconManager; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; /** * Wraps a notification containing a big picture template @@ -47,7 +48,9 @@ public class NotificationBigPictureTemplateViewWrapper extends NotificationTempl public void onContentUpdated(ExpandableNotificationRow row) { super.onContentUpdated(row); resolveViews(); - updateImageTag(row.getEntry().getSbn()); + updateImageTag(NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSbn() + : row.getEntry().getSbn()); } private void resolveViews() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigTextTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigTextTemplateViewWrapper.java index d58c183f27e3..dec674c5a0f3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigTextTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationBigTextTemplateViewWrapper.java @@ -23,6 +23,7 @@ import android.view.View; import com.android.internal.widget.ImageFloatingTextView; import com.android.systemui.statusbar.TransformableView; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; /** * Wraps a notification containing a big text template @@ -44,7 +45,9 @@ public class NotificationBigTextTemplateViewWrapper extends NotificationTemplate public void onContentUpdated(ExpandableNotificationRow row) { // Reinspect the notification. Before the super call, because the super call also updates // the transformation types and we need to have our values set by then. - resolveViews(row.getEntry().getSbn()); + resolveViews(NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSbn() + : row.getEntry().getSbn()); super.onContentUpdated(row); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java index e9eecdd8a26f..585051ad26e1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java @@ -52,6 +52,7 @@ import com.android.systemui.statusbar.notification.RoundableState; import com.android.systemui.statusbar.notification.TransformState; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.shared.NotificationAddXOnHoverToDismiss; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import java.util.Stack; @@ -222,7 +223,9 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper imple @Override public void onContentUpdated(ExpandableNotificationRow row) { super.onContentUpdated(row); - mIsLowPriority = row.getEntry().isAmbient(); + mIsLowPriority = NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().isAmbient() + : row.getEntry().isAmbient(); mTransformLowPriorityTitle = !row.isChildInGroup() && !row.isSummaryWithChildren(); ArraySet<View> previousViews = mTransformationHelper.getAllTransformingViews(); @@ -231,7 +234,9 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper imple updateTransformedTypes(); addRemainingTransformTypes(); updateCropToPaddingForImageViews(); - Notification n = row.getEntry().getSbn().getNotification(); + Notification n = NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSbn().getNotification() + : row.getEntry().getSbn().getNotification(); mIcon.setTag(ImageTransformState.ICON_TAG, n.getSmallIcon()); // We need to reset all views that are no longer transforming in case a view was previously diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java index b9aa57145c7c..4146a941c025 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java @@ -54,6 +54,7 @@ import com.android.systemui.statusbar.notification.TransformState; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.HybridNotificationView; import com.android.systemui.util.DimensionKt; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import java.util.function.Consumer; @@ -310,7 +311,9 @@ public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapp public void onContentUpdated(ExpandableNotificationRow row) { // Reinspect the notification. Before the super call, because the super call also updates // the transformation types and we need to have our values set by then. - resolveTemplateViews(row.getEntry().getSbn()); + resolveTemplateViews(NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSbn() + : row.getEntry().getSbn()); super.onContentUpdated(row); // With the modern templates, a large icon visually overlaps the header, so we can't // hide the header, we must show it. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java index 3987ca6cc711..64babb2449d7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java @@ -80,7 +80,10 @@ public abstract class NotificationViewWrapper implements TransformableView { return new NotificationProgressTemplateViewWrapper(ctx, v, row); } - if (row.getEntry().getSbn().getNotification().isStyle( + if (NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSbn().getNotification().isStyle( + Notification.DecoratedCustomViewStyle.class) + : row.getEntry().getSbn().getNotification().isStyle( Notification.DecoratedCustomViewStyle.class)) { return new NotificationDecoratedCustomViewWrapper(ctx, v, row); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java index 64ca81545040..1e249520e8b3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java @@ -35,8 +35,10 @@ import com.android.systemui.shade.transition.LargeScreenShadeInterpolator; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.collection.NotificationEntry; +import com.android.systemui.statusbar.notification.data.repository.HeadsUpRepository; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableView; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.BypassController; import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.SectionProvider; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; @@ -60,6 +62,7 @@ public class AmbientState implements Dumpable { private final BypassController mBypassController; private final LargeScreenShadeInterpolator mLargeScreenShadeInterpolator; private final AvalancheController mAvalancheController; + private final HeadsUpRepository mHeadsUpRepository; /** * Used to read bouncer states. @@ -304,6 +307,7 @@ public class AmbientState implements Dumpable { @NonNull BypassController bypassController, @Nullable StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull LargeScreenShadeInterpolator largeScreenShadeInterpolator, + @NonNull HeadsUpRepository headsUpRepository, AvalancheController avalancheController ) { mSectionProvider = sectionProvider; @@ -311,6 +315,7 @@ public class AmbientState implements Dumpable { mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mLargeScreenShadeInterpolator = largeScreenShadeInterpolator; mAvalancheController = avalancheController; + mHeadsUpRepository = headsUpRepository; reload(context); dumpManager.registerDumpable(this); } @@ -690,7 +695,10 @@ public class AmbientState implements Dumpable { } public boolean isPulsing(NotificationEntry entry) { - return mPulsing && entry.isHeadsUpEntry(); + boolean isHeadsUp = NotificationBundleUi.isEnabled() + ? mHeadsUpRepository.isHeadsUpEntry(entry.getKey()) + : entry.isHeadsUpEntry(); + return mPulsing && isHeadsUp; } public void setPulsingRow(ExpandableNotificationRow row) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt index da988589184f..9bd5a5bd903f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/MagneticNotificationRowManagerImpl.kt @@ -291,7 +291,7 @@ constructor( * currently being swiped. From the center outwards, the multipliers apply to the neighbors * of the swiped view. */ - private val MAGNETIC_TRANSLATION_MULTIPLIERS = listOf(0.18f, 0.28f, 0.5f, 0.28f, 0.18f) + private val MAGNETIC_TRANSLATION_MULTIPLIERS = listOf(0.04f, 0.12f, 0.5f, 0.12f, 0.04f) const val MAGNETIC_REDUCTION = 0.65f @@ -299,7 +299,7 @@ constructor( private const val DETACH_STIFFNESS = 800f private const val DETACH_DAMPING_RATIO = 0.95f private const val SNAP_BACK_STIFFNESS = 550f - private const val SNAP_BACK_DAMPING_RATIO = 0.52f + private const val SNAP_BACK_DAMPING_RATIO = 0.6f // Maximum value of corner roundness that gets applied during the pre-detach dragging private const val MAX_PRE_DETACH_ROUNDNESS = 0.8f diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java index 048958edeb54..e830d18b7d73 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainer.java @@ -60,6 +60,7 @@ import com.android.systemui.statusbar.notification.row.shared.AsyncGroupHeaderVi import com.android.systemui.statusbar.notification.row.shared.AsyncHybridViewInflation; import com.android.systemui.statusbar.notification.row.wrapper.NotificationHeaderViewWrapper; import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import java.util.ArrayList; import java.util.List; @@ -421,7 +422,12 @@ public class NotificationChildrenContainer extends ViewGroup Trace.beginSection("NotifChildCont#recreateHeader"); mHeaderClickListener = listener; mIsConversation = isConversation; - StatusBarNotification notification = mContainingNotification.getEntry().getSbn(); + StatusBarNotification notification = NotificationBundleUi.isEnabled() + ? mContainingNotification.getEntryAdapter().getSbn() + : mContainingNotification.getEntry().getSbn(); + if (notification == null) { + return; + } final Notification.Builder builder = Notification.Builder.recoverBuilder(getContext(), notification.getNotification()); Trace.beginSection("recreateHeader#makeNotificationGroupHeader"); @@ -565,7 +571,12 @@ public class NotificationChildrenContainer extends ViewGroup void recreateLowPriorityHeader(Notification.Builder builder) { AsyncGroupHeaderViewInflation.assertInLegacyMode(); RemoteViews header; - StatusBarNotification notification = mContainingNotification.getEntry().getSbn(); + StatusBarNotification notification = NotificationBundleUi.isEnabled() + ? mContainingNotification.getEntryAdapter().getSbn() + : mContainingNotification.getEntry().getSbn(); + if (notification == null) { + return; + } if (mIsMinimized) { if (builder == null) { builder = Notification.Builder.recoverBuilder(getContext(), diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java index f85545ef95f8..47fc2fb3d2dd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationListContainer.java @@ -113,10 +113,9 @@ public interface NotificationListContainer extends /** * Get the view parent for a notification entry. For example, NotificationStackScrollLayout. * - * @param entry entry to get the view parent for * @return the view parent for entry */ - ViewGroup getViewParentForNotification(NotificationEntry entry); + ViewGroup getViewParentForNotification(); /** * Resets the currently exposed menu view. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt index 3d8fe0166bff..96f0e6f57958 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsManager.kt @@ -35,6 +35,7 @@ import com.android.systemui.statusbar.notification.dagger.SilentHeader import com.android.systemui.statusbar.notification.dagger.SocialHeader import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.ExpandableView +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi import com.android.systemui.statusbar.notification.stack.PriorityBucket import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.SectionProvider import com.android.systemui.statusbar.policy.ConfigurationController @@ -164,7 +165,9 @@ internal constructor( view === socialHeaderView -> BUCKET_SOCIAL view === recsHeaderView -> BUCKET_RECS view === promoHeaderView -> BUCKET_PROMO - view is ExpandableNotificationRow -> view.entry.bucket + view is ExpandableNotificationRow -> + if (NotificationBundleUi.isEnabled) view.entryAdapter?.sectionBucket + else view.entry.bucket else -> null } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 6313258b8b92..4390f1b16ffd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -117,8 +117,10 @@ import com.android.systemui.statusbar.notification.collection.render.GroupMember import com.android.systemui.statusbar.notification.emptyshade.shared.ModesEmptyShadeFix; import com.android.systemui.statusbar.notification.emptyshade.ui.view.EmptyShadeView; import com.android.systemui.statusbar.notification.footer.ui.view.FooterView; +import com.android.systemui.statusbar.notification.headsup.HeadsUpAnimator; import com.android.systemui.statusbar.notification.headsup.HeadsUpTouchHelper; import com.android.systemui.statusbar.notification.headsup.HeadsUpUtil; +import com.android.systemui.statusbar.notification.headsup.NotificationsHunSharedAnimationValues; import com.android.systemui.statusbar.notification.logging.NotificationLogger; import com.android.systemui.statusbar.notification.row.ActivatableNotificationView; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; @@ -233,6 +235,8 @@ public class NotificationStackScrollLayout private String mLastInitViewDumpString; private long mLastInitViewElapsedRealtime; + @Nullable + private final HeadsUpAnimator mHeadsUpAnimator; /** * The algorithm which calculates the properties for our children */ @@ -668,8 +672,13 @@ public class NotificationStackScrollLayout mExpandHelper.setEventSource(this); mExpandHelper.setScrollAdapter(mScrollAdapter); - mStackScrollAlgorithm = createStackScrollAlgorithm(context); - mStateAnimator = new StackStateAnimator(context, this); + if (NotificationsHunSharedAnimationValues.isEnabled()) { + mHeadsUpAnimator = new HeadsUpAnimator(context); + } else { + mHeadsUpAnimator = null; + } + mStackScrollAlgorithm = new StackScrollAlgorithm(context, this, mHeadsUpAnimator); + mStateAnimator = new StackStateAnimator(context, this, mHeadsUpAnimator); setOutlineProvider(mOutlineProvider); // We could set this whenever we 'requestChildUpdate' much like the viewTreeObserver, but @@ -1024,12 +1033,18 @@ public class NotificationStackScrollLayout || !(view instanceof ExpandableNotificationRow row)) { continue; } + int bucket = NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSectionBucket() + : row.getEntry().getBucket(); + boolean isAmbient = NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().isAmbient() + : row.getEntry().isAmbient(); currentIndex++; boolean beforeSpeedBump; if (mHighPriorityBeforeSpeedBump) { - beforeSpeedBump = row.getEntry().getBucket() < BUCKET_SILENT; + beforeSpeedBump = bucket < BUCKET_SILENT; } else { - beforeSpeedBump = !row.getEntry().isAmbient(); + beforeSpeedBump = !isAmbient; } if (beforeSpeedBump) { speedBumpIndex = currentIndex; @@ -2134,7 +2149,7 @@ public class NotificationStackScrollLayout } } - public ViewGroup getViewParentForNotification(NotificationEntry entry) { + public ViewGroup getViewParentForNotification() { return this; } @@ -3582,10 +3597,6 @@ public class NotificationStackScrollLayout mGoToFullShadeNeedsAnimation = false; } - protected StackScrollAlgorithm createStackScrollAlgorithm(Context context) { - return new StackScrollAlgorithm(context, this); - } - /** * @return Whether a y coordinate is inside the content. */ @@ -5111,9 +5122,16 @@ public class NotificationStackScrollLayout public void setHeadsUpBoundaries(int height, int bottomBarHeight) { SceneContainerFlag.assertInLegacyMode(); mAmbientState.setMaxHeadsUpTranslation(height - bottomBarHeight); - mStackScrollAlgorithm.setHeadsUpAppearHeightBottom(height); - mStateAnimator.setHeadsUpAppearHeightBottom(height); - mStateAnimator.setStackTopMargin(mAmbientState.getStackTopMargin()); + + if (NotificationsHunSharedAnimationValues.isEnabled()) { + mHeadsUpAnimator.setHeadsUpAppearHeightBottom(height); + mHeadsUpAnimator.setStackTopMargin(mAmbientState.getStackTopMargin()); + } else { + mStackScrollAlgorithm.setHeadsUpAppearHeightBottom(height); + mStateAnimator.setHeadsUpAppearHeightBottom(height); + mStateAnimator.setStackTopMargin(mAmbientState.getStackTopMargin()); + } + requestChildrenUpdate(); } @@ -6423,13 +6441,16 @@ public class NotificationStackScrollLayout static boolean matchesSelection( ExpandableNotificationRow row, @SelectedRows int selection) { + int bucket = NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().getSectionBucket() + : row.getEntry().getBucket(); switch (selection) { case ROWS_ALL: return true; case ROWS_HIGH_PRIORITY: - return row.getEntry().getBucket() < BUCKET_SILENT; + return bucket < BUCKET_SILENT; case ROWS_GENTLE: - return row.getEntry().getBucket() == BUCKET_SILENT; + return bucket == BUCKET_SILENT; default: throw new IllegalArgumentException("Unknown selection: " + selection); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index 5c9647005581..124e6f590bfe 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -122,6 +122,7 @@ import com.android.systemui.statusbar.notification.row.NotificationGuts; import com.android.systemui.statusbar.notification.row.NotificationGutsManager; import com.android.systemui.statusbar.notification.row.NotificationSnooze; import com.android.systemui.statusbar.notification.shared.GroupHunAnimationFix; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.notification.stack.ui.viewbinder.NotificationListViewBinder; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -639,8 +640,10 @@ public class NotificationStackScrollLayoutController implements Dumpable { mView.onSwipeEnd(); if (animView instanceof ExpandableNotificationRow row) { if (row.isPinned() && !canChildBeDismissed(row) - && row.getEntry().getSbn().getNotification().fullScreenIntent - == null) { + && NotificationBundleUi.isEnabled() + ? !row.getEntryAdapter().isFullScreenCapable() + : (row.getEntry().getSbn().getNotification().fullScreenIntent + == null)) { mHeadsUpManager.removeNotification( row.getKey(), /* removeImmediately= */ true, @@ -1908,8 +1911,8 @@ public class NotificationStackScrollLayoutController implements Dumpable { } @Override - public ViewGroup getViewParentForNotification(NotificationEntry entry) { - return mView.getViewParentForNotification(entry); + public ViewGroup getViewParentForNotification() { + return mView.getViewParentForNotification(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt index 08bc8f5d5bb9..4e916804318d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackSizeCalculator.kt @@ -32,6 +32,7 @@ import com.android.systemui.statusbar.notification.domain.interactor.SeenNotific import com.android.systemui.statusbar.notification.promoted.PromotedNotificationUiForceExpanded import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.ExpandableView +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi import com.android.systemui.statusbar.notification.shared.NotificationMinimalism import com.android.systemui.statusbar.policy.SplitShadeStateController import com.android.systemui.util.Compile @@ -407,8 +408,14 @@ constructor( } if (counter != null) { - val entry = (currentNotification as? ExpandableNotificationRow)?.entry - counter.incrementForBucket(entry?.bucket) + if (NotificationBundleUi.isEnabled) { + val entry = (currentNotification as? ExpandableNotificationRow)?.entry + counter.incrementForBucket(entry?.bucket) + } else { + val entryAdapter = + (currentNotification as? ExpandableNotificationRow)?.entryAdapter + counter.incrementForBucket(entryAdapter?.sectionBucket) + } } log { @@ -461,12 +468,15 @@ constructor( val height = view.heightWithoutLockscreenConstraints.toFloat() val gapAndDividerHeight = calculateGapAndDividerHeight(stack, previousView, current = view, visibleIndex) + val canPeek = view is ExpandableNotificationRow && + if (NotificationBundleUi.isEnabled) view.entryAdapter?.canPeek() == true + else view.entry.isStickyAndNotDemoted var size = if (onLockscreen) { if ( view is ExpandableNotificationRow && - (view.entry.isStickyAndNotDemoted || + (canPeek || (PromotedNotificationUiForceExpanded.isEnabled && view.isPromotedOngoing)) ) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java index 88d3ad8f840d..4effb76c6570 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java @@ -36,9 +36,12 @@ import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.notification.SourceType; import com.android.systemui.statusbar.notification.emptyshade.ui.view.EmptyShadeView; import com.android.systemui.statusbar.notification.footer.ui.view.FooterView; +import com.android.systemui.statusbar.notification.headsup.HeadsUpAnimator; +import com.android.systemui.statusbar.notification.headsup.NotificationsHunSharedAnimationValues; import com.android.systemui.statusbar.notification.row.ActivatableNotificationView; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableView; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.notification.shared.NotificationHeadsUpCycling; import java.util.ArrayList; @@ -56,6 +59,9 @@ public class StackScrollAlgorithm { private static final String TAG = "StackScrollAlgorithm"; private static final SourceType STACK_SCROLL_ALGO = SourceType.from("StackScrollAlgorithm"); private final ViewGroup mHostView; + @Nullable + private final HeadsUpAnimator mHeadsUpAnimator; + private float mPaddingBetweenElements; private float mGapHeight; private float mGapHeightOnLockscreen; @@ -78,8 +84,12 @@ public class StackScrollAlgorithm { private int mHeadsUpAppearHeightBottom; private int mHeadsUpCyclingPadding; - public StackScrollAlgorithm(Context context, ViewGroup hostView) { + public StackScrollAlgorithm( + Context context, + ViewGroup hostView, + @Nullable HeadsUpAnimator headsUpAnimator) { mHostView = hostView; + mHeadsUpAnimator = headsUpAnimator; initView(context); } @@ -111,6 +121,9 @@ public class StackScrollAlgorithm { mQuickQsOffsetHeight = SystemBarUtils.getQuickQsOffsetHeight(context); mSmallCornerRadius = res.getDimension(R.dimen.notification_corner_radius_small); mLargeCornerRadius = res.getDimension(R.dimen.notification_corner_radius); + if (NotificationsHunSharedAnimationValues.isEnabled()) { + mHeadsUpAnimator.updateResources(context); + } } /** @@ -250,6 +263,7 @@ public class StackScrollAlgorithm { } public void setHeadsUpAppearHeightBottom(int headsUpAppearHeightBottom) { + NotificationsHunSharedAnimationValues.assertInLegacyMode(); mHeadsUpAppearHeightBottom = headsUpAppearHeightBottom; } @@ -911,7 +925,9 @@ public class StackScrollAlgorithm { if (SceneContainerFlag.isEnabled()) { if (shouldHunBeVisibleWhenScrolled(row.isHeadsUp(), childState.headsUpIsVisible, row.showingPulsing(), - ambientState.isOnKeyguard(), row.getEntry().isStickyAndNotDemoted())) { + ambientState.isOnKeyguard(), NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().canPeek() + : row.getEntry().isStickyAndNotDemoted())) { // the height of this child before clamping it to the top float unmodifiedChildHeight = childState.height; clampHunToTop( @@ -963,7 +979,9 @@ public class StackScrollAlgorithm { } else { if (shouldHunBeVisibleWhenScrolled(row.mustStayOnScreen(), childState.headsUpIsVisible, row.showingPulsing(), - ambientState.isOnKeyguard(), row.getEntry().isStickyAndNotDemoted())) { + ambientState.isOnKeyguard(), NotificationBundleUi.isEnabled() + ? row.getEntryAdapter().canPeek() + : row.getEntry().isStickyAndNotDemoted())) { // Ensure that the heads up is always visible even when scrolled off. // NSSL y starts at top of screen in non-split-shade, but below the qs // offset @@ -1037,14 +1055,22 @@ public class StackScrollAlgorithm { childState.setYTranslation(inSpaceTranslation + extraTranslation); cyclingInHunHeight = -1; } else if (!ambientState.isDozing()) { - if (shouldHunAppearFromBottom(ambientState, childState)) { - // move to the bottom of the screen - childState.setYTranslation( - mHeadsUpAppearHeightBottom + mHeadsUpAppearStartAboveScreen); + boolean shouldHunAppearFromBottom = + shouldHunAppearFromBottom(ambientState, childState); + if (NotificationsHunSharedAnimationValues.isEnabled()) { + int yTranslation = + mHeadsUpAnimator.getHeadsUpYTranslation(shouldHunAppearFromBottom); + childState.setYTranslation(yTranslation); } else { - // move to the top of the screen - childState.setYTranslation(-ambientState.getStackTopMargin() - - mHeadsUpAppearStartAboveScreen); + if (shouldHunAppearFromBottom) { + // move to the bottom of the screen + childState.setYTranslation( + mHeadsUpAppearHeightBottom + mHeadsUpAppearStartAboveScreen); + } else { + // move to the top of the screen + childState.setYTranslation(-ambientState.getStackTopMargin() + - mHeadsUpAppearStartAboveScreen); + } } } else { // Make sure row yTranslation is at maximum the HUN yTranslation, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java index 4da418efa241..9a5cf9ceed53 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java @@ -27,6 +27,7 @@ import static com.android.systemui.statusbar.notification.stack.NotificationStac import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; +import android.annotation.Nullable; import android.content.Context; import android.util.Property; import android.view.View; @@ -39,6 +40,8 @@ import com.android.systemui.res.R; import com.android.systemui.shared.clocks.AnimatableClockView; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.notification.PhysicsPropertyAnimator; +import com.android.systemui.statusbar.notification.headsup.HeadsUpAnimator; +import com.android.systemui.statusbar.notification.headsup.NotificationsHunSharedAnimationValues; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableView; import com.android.systemui.statusbar.notification.row.StackScrollerDecorView; @@ -83,6 +86,9 @@ public class StackStateAnimator { private final ExpandableViewState mTmpState = new ExpandableViewState(); private final AnimationProperties mAnimationProperties; public NotificationStackScrollLayout mHostLayout; + @Nullable + private final HeadsUpAnimator mHeadsUpAnimator; + private ArrayList<NotificationStackScrollLayout.AnimationEvent> mNewEvents = new ArrayList<>(); private ArrayList<View> mNewAddChildren = new ArrayList<>(); @@ -104,8 +110,12 @@ public class StackStateAnimator { private NotificationShelf mShelf; private StackStateLogger mLogger; - public StackStateAnimator(Context context, NotificationStackScrollLayout hostLayout) { + public StackStateAnimator( + Context context, + NotificationStackScrollLayout hostLayout, + @Nullable HeadsUpAnimator headsUpAnimator) { mHostLayout = hostLayout; + mHeadsUpAnimator = headsUpAnimator; initView(context); mAnimationProperties = new AnimationProperties() { @@ -543,7 +553,6 @@ public class StackStateAnimator { mHeadsUpAppearChildren.add(changingView); mTmpState.copyFrom(changingView.getViewState()); - // translate the HUN in from the top, or the bottom of the screen mTmpState.setYTranslation(getHeadsUpYTranslationStart(event.headsUpFromBottom)); // set the height and the initial position mTmpState.applyToView(changingView); @@ -728,6 +737,10 @@ public class StackStateAnimator { } private float getHeadsUpYTranslationStart(boolean headsUpFromBottom) { + if (NotificationsHunSharedAnimationValues.isEnabled()) { + return mHeadsUpAnimator.getHeadsUpYTranslation(headsUpFromBottom); + } + if (headsUpFromBottom) { // start from the bottom of the screen return mHeadsUpAppearHeightBottom + mHeadsUpAppearStartAboveScreen; @@ -814,10 +827,12 @@ public class StackStateAnimator { } public void setHeadsUpAppearHeightBottom(int headsUpAppearHeightBottom) { + NotificationsHunSharedAnimationValues.assertInLegacyMode(); mHeadsUpAppearHeightBottom = headsUpAppearHeightBottom; } public void setStackTopMargin(int stackTopMargin) { + NotificationsHunSharedAnimationValues.assertInLegacyMode(); mStackTopMargin = stackTopMargin; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt index 037dda91fb00..323b7d8eaaeb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.kt @@ -15,10 +15,8 @@ */ package com.android.systemui.statusbar.phone.dagger -import android.view.Display import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton -import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Default import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.core.CommandQueueInitializer @@ -29,7 +27,6 @@ import com.android.systemui.statusbar.core.StatusBarConnectedDisplays import com.android.systemui.statusbar.core.StatusBarInitializer import com.android.systemui.statusbar.core.StatusBarInitializerImpl import com.android.systemui.statusbar.core.StatusBarInitializerStore -import com.android.systemui.statusbar.core.StatusBarOrchestrator import com.android.systemui.statusbar.core.StatusBarRootModernization import com.android.systemui.statusbar.data.repository.DarkIconDispatcherStore import com.android.systemui.statusbar.data.repository.PrivacyDotViewControllerStoreModule @@ -50,7 +47,6 @@ import dagger.Module import dagger.Provides import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap -import kotlinx.coroutines.CoroutineScope /** Similar in purpose to [StatusBarModule], but scoped only to phones */ @Module( @@ -122,29 +118,6 @@ interface StatusBarPhoneModule { @Provides @SysUISingleton - @Default // Dagger does not support providing @AssistedInject types without a qualifier - fun orchestrator( - @Background backgroundApplicationScope: CoroutineScope, - statusBarWindowStateRepositoryStore: StatusBarWindowStateRepositoryStore, - statusBarModeRepositoryStore: StatusBarModeRepositoryStore, - initializerStore: StatusBarInitializerStore, - statusBarWindowControllerStore: StatusBarWindowControllerStore, - autoHideControllerStore: AutoHideControllerStore, - statusBarOrchestratorFactory: StatusBarOrchestrator.Factory, - ): StatusBarOrchestrator { - return statusBarOrchestratorFactory.create( - Display.DEFAULT_DISPLAY, - backgroundApplicationScope, - statusBarWindowStateRepositoryStore.defaultDisplay, - statusBarModeRepositoryStore.defaultDisplay, - initializerStore.defaultDisplay, - statusBarWindowControllerStore.defaultDisplay, - autoHideControllerStore.defaultDisplay, - ) - } - - @Provides - @SysUISingleton @IntoMap @ClassKey(MultiDisplayStatusBarStarter::class) fun multiDisplayStarter( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt index 949cb0a718d4..b6628926dc4b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt @@ -72,7 +72,7 @@ constructor( private val swipeStatusBarAwayGestureHandler: SwipeStatusBarAwayGestureHandler, private val statusBarModeRepository: StatusBarModeRepositoryStore, @OngoingCallLog private val logger: LogBuffer, -) : CallbackController<OngoingCallListener>, Dumpable, CoreStartable { +) : CallbackController<OngoingCallListener>, CoreStartable { private var isFullscreen: Boolean = false /** Non-null if there's an active call notification. */ private var callNotificationInfo: CallNotificationInfo? = null diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt index ac301b035398..3b40cdec8721 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModel.kt @@ -19,8 +19,6 @@ package com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel import com.android.systemui.Flags.statusBarStaticInoutIndicators import com.android.systemui.common.shared.model.ContentDescription import com.android.systemui.common.shared.model.Icon -import com.android.systemui.flags.FeatureFlagsClassic -import com.android.systemui.flags.Flags.NEW_NETWORK_SLICE_UI import com.android.systemui.log.table.logDiffsForTable import com.android.systemui.res.R import com.android.systemui.statusbar.core.NewStatusBarIcons @@ -79,7 +77,6 @@ class MobileIconViewModel( iconInteractor: MobileIconInteractor, airplaneModeInteractor: AirplaneModeInteractor, constants: ConnectivityConstants, - flags: FeatureFlagsClassic, scope: CoroutineScope, ) : MobileIconViewModelCommon { private val cellProvider by lazy { @@ -88,7 +85,6 @@ class MobileIconViewModel( iconInteractor, airplaneModeInteractor, constants, - flags, scope, ) } @@ -179,7 +175,6 @@ private class CellularIconViewModel( iconInteractor: MobileIconInteractor, airplaneModeInteractor: AirplaneModeInteractor, constants: ConnectivityConstants, - flags: FeatureFlagsClassic, scope: CoroutineScope, ) : MobileIconViewModelCommon { override val isVisible: StateFlow<Boolean> = @@ -286,16 +281,13 @@ private class CellularIconViewModel( .stateIn(scope, SharingStarted.WhileSubscribed(), null) override val networkTypeBackground = - if (!flags.isEnabled(NEW_NETWORK_SLICE_UI)) { - flowOf(null) - } else { - iconInteractor.showSliceAttribution.map { - when { - it && NewStatusBarIcons.isEnabled -> - Icon.Resource(R.drawable.mobile_network_type_background_updated, null) - it -> Icon.Resource(R.drawable.mobile_network_type_background, null) - else -> null - } + iconInteractor.showSliceAttribution + .map { + when { + it && NewStatusBarIcons.isEnabled -> + Icon.Resource(R.drawable.mobile_network_type_background_updated, null) + it -> Icon.Resource(R.drawable.mobile_network_type_background, null) + else -> null } } .stateIn(scope, SharingStarted.WhileSubscribed(), null) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt index 288e49eac5a8..494d95e7f177 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt @@ -21,7 +21,6 @@ import com.android.app.tracing.coroutines.launchTraced as launch import com.android.systemui.coroutines.newTracingContext import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background -import com.android.systemui.flags.FeatureFlagsClassic import com.android.systemui.statusbar.phone.StatusBarLocation import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor @@ -57,7 +56,6 @@ constructor( private val interactor: MobileIconsInteractor, private val airplaneModeInteractor: AirplaneModeInteractor, private val constants: ConnectivityConstants, - private val flags: FeatureFlagsClassic, @Background private val scope: CoroutineScope, ) { @VisibleForTesting @@ -131,7 +129,6 @@ constructor( interactor.getMobileConnectionInteractorForSubId(subId), airplaneModeInteractor, constants, - flags, vmScope, ) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java index dd742ff8f1cc..9a81992a6add 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java @@ -108,10 +108,6 @@ public class Clock extends TextView implements private boolean mShowSeconds; private Handler mSecondsHandler; - // Fields to cache the width so the clock remains at an approximately constant width - private int mCharsAtCurrentWidth = -1; - private int mCachedWidth = -1; - /** * Color to be set on this {@link TextView}, when wallpaperTextColor is <b>not</b> utilized. */ @@ -326,32 +322,6 @@ public class Clock extends TextView implements setContentDescription(mContentDescriptionFormat.format(mCalendar.getTime())); } - /** - * In order to avoid the clock growing and shrinking due to proportional fonts, we want to - * cache the drawn width at a given number of characters (removing the cache when it changes), - * and only use the biggest value. This means that the clock width with grow to the maximum - * size over time, but reset whenever the number of characters changes (or the configuration - * changes) - */ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - int chars = getText().length(); - if (chars != mCharsAtCurrentWidth) { - mCharsAtCurrentWidth = chars; - mCachedWidth = getMeasuredWidth(); - return; - } - - int measuredWidth = getMeasuredWidth(); - if (mCachedWidth > measuredWidth) { - setMeasuredDimension(mCachedWidth, getMeasuredHeight()); - } else { - mCachedWidth = measuredWidth; - } - } - @Override public void onTuningChanged(String key, String newValue) { if (CLOCK_SECONDS.equals(key)) { @@ -402,9 +372,6 @@ public class Clock extends TextView implements } private void reloadDimens() { - // reset mCachedWidth so the new width would be updated properly when next onMeasure - mCachedWidth = -1; - FontSizeUtils.updateFontSize(this, R.dimen.status_bar_clock_size); setPaddingRelative( mContext.getResources().getDimensionPixelSize( diff --git a/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt b/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt index 3c53d2d05fb8..635576743462 100644 --- a/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt +++ b/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt @@ -34,7 +34,6 @@ import androidx.annotation.CallSuper import androidx.annotation.VisibleForTesting import com.android.app.viewcapture.ViewCaptureAwareWindowManager import com.android.systemui.CoreStartable -import com.android.systemui.Dumpable import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.policy.ConfigurationController @@ -81,7 +80,7 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora private val wakeLockBuilder: WakeLock.Builder, private val systemClock: SystemClock, internal val tempViewUiEventLogger: TemporaryViewUiEventLogger, -) : CoreStartable, Dumpable { +) : CoreStartable { /** * Window layout params that will be used as a starting point for the [windowLayoutParams] of * all subclasses. diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialog.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialog.kt index 86defff4a120..bb8fe46be5b0 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialog.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/VolumeDialog.kt @@ -17,7 +17,6 @@ package com.android.systemui.volume.dialog import android.content.Context -import android.graphics.PixelFormat import android.os.Bundle import android.view.MotionEvent import android.view.View @@ -51,10 +50,8 @@ constructor( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED ) addPrivateFlags(WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY) - setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY) setWindowAnimations(-1) - setFormat(PixelFormat.TRANSLUCENT) attributes = attributes.apply { diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt index b3c92f8cdbb9..fee49deff92d 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogStateInteractor.kt @@ -95,6 +95,10 @@ constructor( volumeDialogStateRepository.updateState { it.copy(isShowingCsdWarning = model) } } + fun setHovering(isHovering: Boolean) { + volumeDialogStateRepository.updateState { it.copy(isHovering = isHovering) } + } + /** Returns a copy of [model] filled with the values from [VolumeDialogController.State]. */ private fun VolumeDialogController.State.copyIntoModel( model: VolumeDialogStateModel diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractor.kt index afe3d7bf217a..bd23e8cce82d 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractor.kt @@ -18,6 +18,8 @@ package com.android.systemui.volume.dialog.domain.interactor import android.annotation.SuppressLint import android.provider.Settings +import android.view.accessibility.AccessibilityManager +import com.android.systemui.accessibility.data.repository.AccessibilityRepository import com.android.systemui.plugins.VolumeDialogController import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository import com.android.systemui.volume.Events @@ -25,11 +27,13 @@ import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPlugin import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogPluginScope import com.android.systemui.volume.dialog.data.VolumeDialogVisibilityRepository import com.android.systemui.volume.dialog.domain.model.VolumeDialogEventModel +import com.android.systemui.volume.dialog.shared.model.VolumeDialogSafetyWarningModel import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel.Dismissed import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel.Visible import com.android.systemui.volume.dialog.utils.VolumeTracer import javax.inject.Inject +import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.seconds import kotlin.time.DurationUnit @@ -38,7 +42,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.SharingStarted -import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.mapNotNull @@ -58,12 +62,15 @@ class VolumeDialogVisibilityInteractor constructor( @VolumeDialogPlugin coroutineScope: CoroutineScope, callbacksInteractor: VolumeDialogCallbacksInteractor, + private val stateInteractor: VolumeDialogStateInteractor, private val tracer: VolumeTracer, private val repository: VolumeDialogVisibilityRepository, + private val accessibilityRepository: AccessibilityRepository, private val controller: VolumeDialogController, private val secureSettingsRepository: SecureSettingsRepository, ) { + /** @see computeTimeout */ private val defaultTimeout = 3.seconds @SuppressLint("SharedFlowCreation") @@ -71,20 +78,12 @@ constructor( val dialogVisibility: Flow<VolumeDialogVisibilityModel> = repository.dialogVisibility .onEach { controller.notifyVisible(it is Visible) } - .stateIn(coroutineScope, SharingStarted.Eagerly, null) - .filterNotNull() + .stateIn(coroutineScope, SharingStarted.Eagerly, VolumeDialogVisibilityModel.Invisible) init { merge( mutableDismissDialogEvents.mapLatest { - delay( - secureSettingsRepository - .getInt( - Settings.Secure.VOLUME_DIALOG_DISMISS_TIMEOUT, - defaultTimeout.toInt(DurationUnit.MILLISECONDS), - ) - .milliseconds - ) + delay(computeTimeout()) VolumeDialogEventModel.DismissRequested(Events.DISMISS_REASON_TIMEOUT) }, callbacksInteractor.event, @@ -104,13 +103,7 @@ constructor( * [dialogVisibility]. */ fun dismissDialog(reason: Int) { - updateVisibility { visibilityModel -> - if (visibilityModel is Dismissed) { - visibilityModel - } else { - Dismissed(reason) - } - } + updateVisibility { Dismissed(reason) } } /** Resets current dialog timeout. */ @@ -121,7 +114,47 @@ constructor( private fun updateVisibility( update: (VolumeDialogVisibilityModel) -> VolumeDialogVisibilityModel ) { - repository.updateVisibility { update(it).also(tracer::traceVisibilityStart) } + repository.updateVisibility { currentVisibility -> + val newVisibility = update(currentVisibility) + // Don't update if the visibility is of the same type + if (currentVisibility::class == newVisibility::class) { + currentVisibility + } else { + tracer.traceVisibilityStart(newVisibility) + newVisibility + } + } + } + + private suspend fun computeTimeout(): Duration { + val defaultDialogTimeoutMillis = + secureSettingsRepository + .getInt( + Settings.Secure.VOLUME_DIALOG_DISMISS_TIMEOUT, + defaultTimeout.toInt(DurationUnit.MILLISECONDS), + ) + .milliseconds + val currentDialogState = stateInteractor.volumeDialogState.first() + return when { + currentDialogState.isHovering -> + accessibilityRepository.getRecommendedTimeout( + defaultDialogTimeoutMillis, + AccessibilityManager.FLAG_CONTENT_CONTROLS, + ) + + currentDialogState.isShowingSafetyWarning is VolumeDialogSafetyWarningModel.Visible -> + accessibilityRepository.getRecommendedTimeout( + defaultDialogTimeoutMillis, + AccessibilityManager.FLAG_CONTENT_TEXT or + AccessibilityManager.FLAG_CONTENT_CONTROLS, + ) + + else -> + accessibilityRepository.getRecommendedTimeout( + defaultDialogTimeoutMillis, + AccessibilityManager.FLAG_CONTENT_CONTROLS, + ) + } } private fun VolumeDialogEventModel.toVisibilityModel(): VolumeDialogVisibilityModel? { @@ -129,6 +162,7 @@ constructor( is VolumeDialogEventModel.DismissRequested -> Dismissed(reason) is VolumeDialogEventModel.ShowRequested -> Visible(reason, keyguardLocked, lockTaskModeState) + else -> null } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt index 14eede6f6816..3677d3b8b60a 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/binder/VolumeDialogRingerViewBinder.kt @@ -17,6 +17,7 @@ package com.android.systemui.volume.dialog.ringer.ui.binder import android.animation.ArgbEvaluator +import android.content.res.Configuration import android.graphics.drawable.GradientDrawable import android.view.LayoutInflater import android.view.View @@ -127,6 +128,16 @@ constructor( when (ringerState) { is RingerViewModelState.Available -> { val uiModel = ringerState.uiModel + val orientation = + if ( + view.context.resources.getBoolean( + R.bool.volume_dialog_ringer_drawer_should_open_to_the_side + ) + ) { + ringerState.orientation + } else { + Configuration.ORIENTATION_PORTRAIT + } // Set up view background and visibility drawerContainer.visibility = View.VISIBLE @@ -144,7 +155,7 @@ constructor( drawerContainer.closeDrawer( ringerBackgroundView, uiModel.currentButtonIndex, - ringerState.orientation, + orientation, ) } is RingerDrawerState.Closed -> { @@ -186,7 +197,7 @@ constructor( drawerContainer.closeDrawer( ringerBackgroundView, uiModel.currentButtonIndex, - ringerState.orientation, + orientation, ) } } @@ -206,11 +217,7 @@ constructor( } else { ringerDrawerTransitionListener.setProgressChangeEnabled(true) } - updateOpenState( - drawerContainer, - ringerState.orientation, - ringerBackgroundView, - ) + updateOpenState(drawerContainer, orientation, ringerBackgroundView) drawerContainer .getTransition(R.id.close_to_open_transition) .setInterpolatorInfo( diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt index 89456fe2ac75..e5c3e5c39df2 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/shared/model/VolumeDialogStateModel.kt @@ -24,6 +24,7 @@ data class VolumeDialogStateModel( val isShowingSafetyWarning: VolumeDialogSafetyWarningModel = VolumeDialogSafetyWarningModel.Invisible, val isShowingCsdWarning: VolumeDialogCsdWarningModel = VolumeDialogCsdWarningModel.Invisible, + val isHovering: Boolean = false, val streamModels: Map<Int, VolumeDialogStreamModel> = mapOf(), val ringerModeInternal: Int = 0, val ringerModeExternal: Int = 0, diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt index a0e3fbd2f3d1..43d1ef478ae1 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/VolumeDialogSliderViewBinder.kt @@ -29,18 +29,13 @@ import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.SliderDefaults -import androidx.compose.material3.SliderState -import androidx.compose.material3.VerticalSlider import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.input.pointer.pointerInput @@ -49,16 +44,17 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.compose.theme.PlatformTheme import com.android.compose.ui.graphics.painter.DrawablePainter +import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel -import com.android.systemui.lifecycle.rememberViewModel import com.android.systemui.res.R import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope import com.android.systemui.volume.dialog.sliders.ui.compose.VolumeDialogSliderTrack import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogOverscrollViewModel import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderViewModel -import com.android.systemui.volume.haptics.ui.VolumeHapticsConfigsProvider +import com.android.systemui.volume.ui.slider.AccessibilityParams +import com.android.systemui.volume.ui.slider.Haptics +import com.android.systemui.volume.ui.slider.Slider import javax.inject.Inject -import kotlin.math.round import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.isActive @@ -90,7 +86,7 @@ constructor( } } -@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun VolumeDialogSlider( viewModel: VolumeDialogSliderViewModel, @@ -108,59 +104,8 @@ private fun VolumeDialogSlider( ) val collectedSliderStateModel by viewModel.state.collectAsStateWithLifecycle(null) val sliderStateModel = collectedSliderStateModel ?: return - - val steps = with(sliderStateModel.valueRange) { endInclusive - start - 1 }.toInt() - val interactionSource = remember { MutableInteractionSource() } - val hapticsViewModel: SliderHapticsViewModel? = - hapticsViewModelFactory?.let { - rememberViewModel(traceName = "SliderHapticsViewModel") { - it.create( - interactionSource, - sliderStateModel.valueRange, - Orientation.Vertical, - VolumeHapticsConfigsProvider.sliderHapticFeedbackConfig( - sliderStateModel.valueRange - ), - VolumeHapticsConfigsProvider.seekableSliderTrackerConfig, - ) - } - } - val sliderState = - remember(steps, sliderStateModel.valueRange) { - SliderState( - value = sliderStateModel.value, - valueRange = sliderStateModel.valueRange, - steps = steps, - ) - .also { sliderState -> - sliderState.onValueChangeFinished = { - viewModel.onSliderChangeFinished(sliderState.value) - hapticsViewModel?.onValueChangeEnded() - } - sliderState.onValueChange = { newValue -> - sliderState.value = newValue - hapticsViewModel?.addVelocityDataPoint(newValue) - overscrollViewModel.setSlider( - value = sliderState.value, - min = sliderState.valueRange.start, - max = sliderState.valueRange.endInclusive, - ) - viewModel.setStreamVolume(newValue, true) - } - } - } - - var lastDiscreteStep by remember { mutableFloatStateOf(round(sliderStateModel.value)) } - LaunchedEffect(sliderStateModel.value) { - val value = sliderStateModel.value - sliderState.value = value - if (value != lastDiscreteStep) { - lastDiscreteStep = value - hapticsViewModel?.onValueChange(value) - } - } LaunchedEffect(interactionSource) { interactionSource.interactions.collect { when (it) { @@ -171,24 +116,33 @@ private fun VolumeDialogSlider( } } - VerticalSlider( - state = sliderState, - enabled = !sliderStateModel.isDisabled, - reverseDirection = true, + Slider( + value = sliderStateModel.value, + valueRange = sliderStateModel.valueRange, + onValueChanged = { value -> + overscrollViewModel.setSlider( + value = value, + min = sliderStateModel.valueRange.start, + max = sliderStateModel.valueRange.endInclusive, + ) + viewModel.setStreamVolume(value, true) + }, + onValueChangeFinished = { viewModel.onSliderChangeFinished(it) }, + isEnabled = !sliderStateModel.isDisabled, + isReverseDirection = true, + isVertical = true, colors = colors, interactionSource = interactionSource, - modifier = - modifier.pointerInput(Unit) { - coroutineScope { - val currentContext = currentCoroutineContext() - awaitPointerEventScope { - while (currentContext.isActive) { - viewModel.onTouchEvent(awaitPointerEvent()) - } - } - } - }, - track = { + haptics = + hapticsViewModelFactory?.let { + Haptics.Enabled( + hapticsViewModelFactory = it, + hapticFilter = SliderHapticFeedbackFilter(), + orientation = Orientation.Vertical, + ) + } ?: Haptics.Disabled, + stepDistance = 1f, + track = { sliderState -> VolumeDialogSliderTrack( sliderState, colors = colors, @@ -201,6 +155,18 @@ private fun VolumeDialogSlider( }, ) }, + accessibilityParams = AccessibilityParams(label = sliderStateModel.label), + modifier = + modifier.pointerInput(Unit) { + coroutineScope { + val currentContext = currentCoroutineContext() + awaitPointerEventScope { + while (currentContext.isActive) { + viewModel.onTouchEvent(awaitPointerEvent()) + } + } + } + }, ) } diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderStateModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderStateModel.kt index b01046b377b0..88a061f3813c 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderStateModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderStateModel.kt @@ -16,17 +16,21 @@ package com.android.systemui.volume.dialog.sliders.ui.viewmodel +import android.content.Context import android.graphics.drawable.Drawable import com.android.systemui.volume.dialog.shared.model.VolumeDialogStreamModel +import com.android.systemui.volume.dialog.shared.model.streamLabel data class VolumeDialogSliderStateModel( val value: Float, val isDisabled: Boolean, val valueRange: ClosedFloatingPointRange<Float>, val icon: Drawable, + val label: String, ) fun VolumeDialogStreamModel.toStateModel( + context: Context, isDisabled: Boolean, icon: Drawable, ): VolumeDialogSliderStateModel { @@ -35,5 +39,6 @@ fun VolumeDialogStreamModel.toStateModel( isDisabled = isDisabled, valueRange = levelMin.toFloat()..levelMax.toFloat(), icon = icon, + label = streamLabel(context), ) } diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt index 19b2880b9496..1f11f2da8340 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt @@ -16,6 +16,7 @@ package com.android.systemui.volume.dialog.sliders.ui.viewmodel +import android.content.Context import androidx.compose.ui.geometry.Offset import androidx.compose.ui.input.pointer.PointerEvent import androidx.compose.ui.input.pointer.PointerEventType @@ -63,6 +64,7 @@ private const val VOLUME_UPDATE_GRACE_PERIOD = 1000 class VolumeDialogSliderViewModel @Inject constructor( + private val context: Context, private val sliderType: VolumeDialogSliderType, private val interactor: VolumeDialogSliderInteractor, private val visibilityInteractor: VolumeDialogVisibilityInteractor, @@ -114,7 +116,7 @@ constructor( } }, ) { isDisabledByZenMode, model, icon -> - model.toStateModel(icon = icon, isDisabled = isDisabledByZenMode) + model.toStateModel(context = context, icon = icon, isDisabled = isDisabledByZenMode) } .stateIn(coroutineScope, SharingStarted.Eagerly, null) .filterNotNull() diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt index feb47693e98d..5de8fe54505f 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/binder/VolumeDialogViewBinder.kt @@ -18,10 +18,12 @@ package com.android.systemui.volume.dialog.ui.binder import android.app.Dialog import android.content.Context +import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.view.ViewTreeObserver import android.view.WindowInsets +import android.view.accessibility.AccessibilityEvent import androidx.compose.ui.util.lerp import androidx.core.view.updatePadding import androidx.dynamicanimation.animation.DynamicAnimation @@ -47,6 +49,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.scan @@ -81,9 +84,18 @@ constructor( // Root view of the Volume Dialog. val root: ViewGroup = dialog.requireViewById(R.id.volume_dialog) + root.accessibilityDelegate = Accessibility(viewModel) + root.setOnHoverListener { _, event -> + viewModel.onHover( + event.actionMasked == MotionEvent.ACTION_HOVER_ENTER || + event.actionMasked == MotionEvent.ACTION_HOVER_MOVE + ) + true + } animateVisibility(root, dialog, viewModel.dialogVisibilityModel) viewModel.dialogTitle + .filter { it.isNotEmpty() } .onEach { dialog.window?.setTitle(it) } .launchInTraced("VDVB#dialogTitle", this) viewModel.isHalfOpened @@ -150,6 +162,7 @@ constructor( jankListenerFactory.show(view).also(animation::addUpdateListener) animation.suspendAnimate(FRACTION_SHOW) } + is VolumeDialogVisibilityModel.Dismissed -> { tracer.traceVisibilityEnd(it) junkListener?.let(animation::removeUpdateListener) @@ -158,6 +171,7 @@ constructor( animation.suspendAnimate(FRACTION_HIDE) dialog.dismiss() } + is VolumeDialogVisibilityModel.Invisible -> { // do nothing } @@ -200,4 +214,29 @@ constructor( } animate().setDuration(150).translationY(offsetPx).suspendAnimate() } + + private class Accessibility(private val viewModel: VolumeDialogViewModel) : + View.AccessibilityDelegate() { + + override fun dispatchPopulateAccessibilityEvent( + host: View, + event: AccessibilityEvent, + ): Boolean { + // Activities populate their title here. Follow that example. + val title = viewModel.dialogTitle.value + if (title.isNotEmpty()) { + event.text.add(title) + } + return true + } + + override fun onRequestSendAccessibilityEvent( + host: ViewGroup, + child: View, + event: AccessibilityEvent, + ): Boolean { + viewModel.resetDialogTimeout() + return super.onRequestSendAccessibilityEvent(host, child, event) + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt index 8bfbc36b1423..2d8674b0d70f 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModel.kt @@ -27,6 +27,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.DevicePostureController import com.android.systemui.statusbar.policy.devicePosture import com.android.systemui.statusbar.policy.onConfigChanged +import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogStateInteractor import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogVisibilityInteractor @@ -36,11 +37,14 @@ import com.android.systemui.volume.dialog.shared.model.streamLabel import com.android.systemui.volume.dialog.sliders.domain.interactor.VolumeDialogSlidersInteractor import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType import javax.inject.Inject +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.suspendCancellableCoroutine /** Provides a state for the Volume Dialog. */ @@ -49,9 +53,10 @@ class VolumeDialogViewModel @Inject constructor( private val context: Context, - dialogVisibilityInteractor: VolumeDialogVisibilityInteractor, + @VolumeDialog coroutineScope: CoroutineScope, + private val dialogVisibilityInteractor: VolumeDialogVisibilityInteractor, volumeDialogSlidersInteractor: VolumeDialogSlidersInteractor, - volumeDialogStateInteractor: VolumeDialogStateInteractor, + private val volumeDialogStateInteractor: VolumeDialogStateInteractor, devicePostureController: DevicePostureController, configurationController: ConfigurationController, ) { @@ -67,16 +72,16 @@ constructor( } val dialogVisibilityModel: Flow<VolumeDialogVisibilityModel> = dialogVisibilityInteractor.dialogVisibility - val dialogTitle: Flow<String> = + val dialogTitle: StateFlow<String> = combine( volumeDialogStateInteractor.volumeDialogState, volumeDialogSlidersInteractor.sliders.map { it.slider }, ) { state: VolumeDialogStateModel, sliderType: VolumeDialogSliderType -> state.streamModels[sliderType.audioStream]?.let { model -> context.getString(R.string.volume_dialog_title, model.streamLabel(context)) - } + } ?: "" } - .filterNotNull() + .stateIn(coroutineScope, SharingStarted.Eagerly, "") private val touchableBoundsViews: MutableCollection<View> = mutableSetOf() @@ -101,4 +106,13 @@ constructor( touchableBoundsViews.addAll(views) it.invokeOnCancellation { touchableBoundsViews.removeAll(views.toSet()) } } + + fun onHover(isHovering: Boolean) { + volumeDialogStateInteractor.setHovering(isHovering) + resetDialogTimeout() + } + + fun resetDialogTimeout() { + dialogVisibilityInteractor.resetDismissTimeout() + } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt index 3efb2b464a1d..3d98ebacc7ca 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt @@ -116,8 +116,8 @@ constructor( override val isEnabled: Boolean get() = true - override val a11yStep: Int - get() = 1 + override val a11yStep: Float + get() = 1f override val disabledMessage: String? get() = null diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt index f9d776bc3aaf..9d32285fecb3 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt @@ -165,7 +165,7 @@ constructor( label = label, disabledMessage = disabledMessage, isEnabled = isEnabled, - a11yStep = volumeRange.step, + a11yStep = volumeRange.step.toFloat(), a11yClickDescription = if (isAffectedByMute) { context.getString( @@ -307,7 +307,7 @@ constructor( override val label: String, override val disabledMessage: String?, override val isEnabled: Boolean, - override val a11yStep: Int, + override val a11yStep: Float, override val a11yClickDescription: String?, override val a11yStateDescription: String?, override val isMutable: Boolean, diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt index d74a433ad86c..a6c809186ca5 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/CastVolumeSliderViewModel.kt @@ -86,7 +86,7 @@ constructor( icon = Icon.Resource(R.drawable.ic_cast, null), label = context.getString(R.string.media_device_cast), isEnabled = true, - a11yStep = 1, + a11yStep = 1f, ) } @@ -96,7 +96,7 @@ constructor( override val icon: Icon, override val label: String, override val isEnabled: Boolean, - override val a11yStep: Int, + override val a11yStep: Float, ) : SliderState { override val hapticFilter: SliderHapticFeedbackFilter get() = SliderHapticFeedbackFilter() diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt index f1353713799d..4bc237bd36f5 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/SliderState.kt @@ -36,7 +36,7 @@ sealed interface SliderState { * A11y slider controls works by adjusting one step up or down. The default slider step isn't * enough to trigger rounding to the correct value. */ - val a11yStep: Int + val a11yStep: Float val a11yClickDescription: String? val a11yStateDescription: String? val disabledMessage: String? @@ -49,7 +49,7 @@ sealed interface SliderState { override val icon: Icon? = null override val label: String = "" override val disabledMessage: String? = null - override val a11yStep: Int = 0 + override val a11yStep: Float = 0f override val a11yClickDescription: String? = null override val a11yStateDescription: String? = null override val isEnabled: Boolean = true diff --git a/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt b/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt new file mode 100644 index 000000000000..720d5507e224 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/volume/ui/slider/Slider.kt @@ -0,0 +1,265 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) + +package com.android.systemui.volume.ui.slider + +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.SpringSpec +import androidx.compose.foundation.gestures.Orientation +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import androidx.compose.material3.Slider +import androidx.compose.material3.SliderColors +import androidx.compose.material3.SliderDefaults +import androidx.compose.material3.SliderState +import androidx.compose.material3.VerticalSlider +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableFloatStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.ProgressBarRangeInfo +import androidx.compose.ui.semantics.SemanticsPropertyReceiver +import androidx.compose.ui.semantics.clearAndSetSemantics +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.disabled +import androidx.compose.ui.semantics.progressBarRangeInfo +import androidx.compose.ui.semantics.setProgress +import androidx.compose.ui.semantics.stateDescription +import com.android.systemui.haptics.slider.SliderHapticFeedbackFilter +import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel +import com.android.systemui.lifecycle.rememberViewModel +import com.android.systemui.res.R +import com.android.systemui.volume.haptics.ui.VolumeHapticsConfigsProvider +import kotlin.math.round +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch + +private val defaultSpring = + SpringSpec<Float>(dampingRatio = Spring.DampingRatioNoBouncy, stiffness = Spring.StiffnessHigh) +private val defaultTrack: @Composable (SliderState) -> Unit = + @Composable { SliderDefaults.Track(it) } + +@Composable +fun Slider( + value: Float, + valueRange: ClosedFloatingPointRange<Float>, + onValueChanged: (Float) -> Unit, + onValueChangeFinished: ((Float) -> Unit)?, + stepDistance: Float, + isEnabled: Boolean, + accessibilityParams: AccessibilityParams, + modifier: Modifier = Modifier, + colors: SliderColors = SliderDefaults.colors(), + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + haptics: Haptics = Haptics.Disabled, + isVertical: Boolean = false, + isReverseDirection: Boolean = false, + track: (@Composable (SliderState) -> Unit)? = null, +) { + require(stepDistance > 0) { "stepDistance must be positive" } + val coroutineScope = rememberCoroutineScope() + val snappedValue = snapValue(value, valueRange, stepDistance) + val hapticsViewModel = haptics.createViewModel(snappedValue, valueRange, interactionSource) + + val animatable = remember { Animatable(snappedValue) } + var animationJob: Job? by remember { mutableStateOf(null) } + val sliderState = + remember(valueRange) { SliderState(value = snappedValue, valueRange = valueRange) } + val valueChange: (Float) -> Unit = { newValue -> + hapticsViewModel?.onValueChange(newValue) + val snappedNewValue = snapValue(newValue, valueRange, stepDistance) + if (animatable.targetValue != snappedNewValue) { + onValueChanged(snappedNewValue) + animationJob?.cancel() + animationJob = + coroutineScope.launch { + animatable.animateTo( + targetValue = snappedNewValue, + animationSpec = defaultSpring, + ) + } + } + } + val semantics = + accessibilityParams.createSemantics( + animatable.targetValue, + valueRange, + valueChange, + isEnabled, + stepDistance, + ) + + LaunchedEffect(snappedValue) { + if (!animatable.isRunning && animatable.targetValue != snappedValue) { + animationJob?.cancel() + animationJob = + coroutineScope.launch { + animatable.animateTo(targetValue = snappedValue, animationSpec = defaultSpring) + } + } + } + + sliderState.onValueChangeFinished = { + hapticsViewModel?.onValueChangeEnded() + onValueChangeFinished?.invoke(animatable.targetValue) + } + sliderState.onValueChange = valueChange + sliderState.value = animatable.value + + if (isVertical) { + VerticalSlider( + state = sliderState, + enabled = isEnabled, + reverseDirection = isReverseDirection, + interactionSource = interactionSource, + colors = colors, + track = track ?: defaultTrack, + modifier = modifier.clearAndSetSemantics(semantics), + ) + } else { + Slider( + state = sliderState, + enabled = isEnabled, + interactionSource = interactionSource, + colors = colors, + track = track ?: defaultTrack, + modifier = modifier.clearAndSetSemantics(semantics), + ) + } +} + +private fun snapValue( + value: Float, + valueRange: ClosedFloatingPointRange<Float>, + stepDistance: Float, +): Float { + if (stepDistance == 0f) { + return value + } + val coercedValue = value.coerceIn(valueRange) + return Math.round(coercedValue / stepDistance) * stepDistance +} + +@Composable +private fun AccessibilityParams.createSemantics( + value: Float, + valueRange: ClosedFloatingPointRange<Float>, + onValueChanged: (Float) -> Unit, + isEnabled: Boolean, + stepDistance: Float, +): SemanticsPropertyReceiver.() -> Unit { + val semanticsContentDescription = + disabledMessage + ?.takeIf { !isEnabled } + ?.let { message -> + stringResource(R.string.volume_slider_disabled_message_template, label, message) + } ?: label + return { + contentDescription = semanticsContentDescription + if (isEnabled) { + currentStateDescription?.let { stateDescription = it } + progressBarRangeInfo = ProgressBarRangeInfo(value, valueRange) + } else { + disabled() + } + setProgress { targetValue -> + val targetDirection = + when { + targetValue > value -> 1 + targetValue < value -> -1 + else -> 0 + } + + val newValue = + (value + targetDirection * stepDistance).coerceIn( + valueRange.start, + valueRange.endInclusive, + ) + onValueChanged(newValue) + true + } + } +} + +@Composable +private fun Haptics.createViewModel( + value: Float, + valueRange: ClosedFloatingPointRange<Float>, + interactionSource: MutableInteractionSource, +): SliderHapticsViewModel? { + return when (this) { + is Haptics.Disabled -> null + is Haptics.Enabled -> { + hapticsViewModelFactory.let { + rememberViewModel(traceName = "SliderHapticsViewModel") { + it.create( + interactionSource, + valueRange, + orientation, + VolumeHapticsConfigsProvider.sliderHapticFeedbackConfig( + valueRange, + hapticFilter, + ), + VolumeHapticsConfigsProvider.seekableSliderTrackerConfig, + ) + } + .also { hapticsViewModel -> + var lastDiscreteStep by remember { mutableFloatStateOf(value) } + LaunchedEffect(value) { + snapshotFlow { value } + .map { round(it) } + .filter { it != lastDiscreteStep } + .distinctUntilChanged() + .collect { discreteStep -> + lastDiscreteStep = discreteStep + hapticsViewModel.onValueChange(discreteStep) + } + } + } + } + } + } +} + +data class AccessibilityParams( + val label: String, + val currentStateDescription: String? = null, + val disabledMessage: String? = null, +) + +sealed interface Haptics { + data object Disabled : Haptics + + data class Enabled( + val hapticsViewModelFactory: SliderHapticsViewModel.Factory, + val hapticFilter: SliderHapticFeedbackFilter, + val orientation: Orientation, + ) : Haptics +} diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt b/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt index 4cd49d03ad36..1e78b12db154 100644 --- a/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/wallpapers/ui/viewmodel/WallpaperFocalAreaViewModel.kt @@ -26,6 +26,7 @@ import com.android.systemui.wallpapers.domain.interactor.WallpaperFocalAreaInter import javax.inject.Inject import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filter +import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map class WallpaperFocalAreaViewModel @@ -39,25 +40,31 @@ constructor( val wallpaperFocalAreaBounds = combine( wallpaperFocalAreaInteractor.wallpaperFocalAreaBounds, + keyguardTransitionInteractor.startedKeyguardTransitionStep, + // Emit transition state when FINISHED instead of STARTED to avoid race with + // wakingup command, causing layout change command not be received. keyguardTransitionInteractor .transition( edge = Edge.create(to = Scenes.Lockscreen), edgeWithoutSceneContainer = Edge.create(to = KeyguardState.LOCKSCREEN), ) - .filter { transitionStep -> - // Should not filter by TransitionState.STARTED, it may race with - // wakingup command, causing layout change command not be received. - transitionStep.transitionState == TransitionState.FINISHED - }, - ::Pair, + .filter { it.transitionState == TransitionState.FINISHED }, + ::Triple, ) - .map { (bounds, _) -> bounds } + .map { (bounds, startedStep, _) -> + // Avoid sending wrong bounds when transitioning from LOCKSCREEN to GONE + if ( + startedStep.to == KeyguardState.LOCKSCREEN && + startedStep.from != KeyguardState.LOCKSCREEN + ) { + bounds + } else { + null + } + } + .filterNotNull() fun setFocalAreaBounds(bounds: RectF) { wallpaperFocalAreaInteractor.setFocalAreaBounds(bounds) } - - fun setTapPosition(x: Float, y: Float) { - wallpaperFocalAreaInteractor.setTapPosition(x, y) - } } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java index b23efcea1c2c..8a447f7395d4 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java @@ -70,6 +70,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection; import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource; import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider; import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionProvider; import com.android.systemui.statusbar.phone.StatusBarWindowCallback; @@ -444,8 +445,8 @@ public class BubblesManager { } @Override - public void onEntryUpdated(NotificationEntry entry, boolean fromSystem) { - BubblesManager.this.onEntryUpdated(entry, fromSystem); + public void onEntryUpdated(NotificationEntry entry, UpdateSource source) { + BubblesManager.this.onEntryUpdated(entry, source != UpdateSource.SystemUi); } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt index b6c63479990e..0e68fce679b0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt @@ -28,6 +28,7 @@ import android.graphics.Point import android.graphics.Rect import android.graphics.drawable.BitmapDrawable import android.hardware.biometrics.BiometricFingerprintConstants +import android.hardware.biometrics.BiometricPrompt import android.hardware.biometrics.PromptContentItemBulletedText import android.hardware.biometrics.PromptContentView import android.hardware.biometrics.PromptContentViewWithMoreOptionsButton @@ -42,6 +43,7 @@ import android.platform.test.annotations.EnableFlags import android.view.HapticFeedbackConstants import android.view.MotionEvent import android.view.Surface +import android.view.accessibility.accessibilityManager import androidx.test.filters.SmallTest import com.android.app.activityTaskManager import com.android.keyguard.AuthInteractionProperties @@ -200,6 +202,8 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa overrideResource(R.dimen.biometric_dialog_face_icon_size, mockFaceIconSize) kosmos.applicationContext = context + whenever(kosmos.accessibilityManager.getRecommendedTimeoutMillis(anyInt(), anyInt())) + .thenReturn(BiometricPrompt.HIDE_DIALOG_DELAY) if (testCase.fingerprint?.isAnyUdfpsType == true) { kosmos.authController = authController diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModelTest.kt index e035a02ecf00..f394c805f5b7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/viewmodel/SeekBarViewModelTest.kt @@ -16,6 +16,9 @@ package com.android.systemui.media.controls.ui.viewmodel +import android.icu.text.MeasureFormat +import android.icu.util.Measure +import android.icu.util.MeasureUnit import android.media.MediaMetadata import android.media.session.MediaController import android.media.session.MediaSession @@ -34,6 +37,7 @@ import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.concurrency.FakeRepeatableExecutor import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat +import java.util.Locale import org.junit.After import org.junit.Before import org.junit.Ignore @@ -155,6 +159,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN the duration is extracted assertThat(viewModel.progress.value!!.duration).isEqualTo(duration) assertThat(viewModel.progress.value!!.enabled).isTrue() @@ -173,6 +178,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getMetadata()).thenReturn(metadata) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN the duration is extracted assertThat(viewModel.progress.value!!.duration).isEqualTo(duration) assertThat(viewModel.progress.value!!.enabled).isFalse() @@ -197,6 +203,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN the seek bar is disabled assertThat(viewModel.progress.value!!.enabled).isFalse() } @@ -220,6 +227,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN the seek bar is disabled assertThat(viewModel.progress.value!!.enabled).isFalse() } @@ -238,6 +246,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN the seek bar is disabled assertThat(viewModel.progress.value!!.enabled).isFalse() } @@ -254,6 +263,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN elapsed time is captured assertThat(viewModel.progress.value!!.elapsedTime).isEqualTo(200.toInt()) } @@ -536,6 +546,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN the controller is updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN a task is queued assertThat(fakeExecutor.numPending()).isEqualTo(1) } @@ -551,6 +562,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN an update task is not queued assertThat(fakeExecutor.numPending()).isEqualTo(0) } @@ -572,6 +584,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN an update task is queued assertThat(fakeExecutor.numPending()).isEqualTo(1) } @@ -593,6 +606,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.getPlaybackState()).thenReturn(state) // WHEN updated viewModel.updateController(mockController) + fakeExecutor.runNextReady() // THEN an update task is not queued assertThat(fakeExecutor.numPending()).isEqualTo(0) } @@ -719,6 +733,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { } whenever(mockController.getPlaybackState()).thenReturn(state) viewModel.updateController(mockController) + fakeExecutor.runNextReady() // WHEN start listening viewModel.listening = true // THEN an update task is queued @@ -820,6 +835,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { whenever(mockController.playbackState).thenReturn(state) val captor = ArgumentCaptor.forClass(MediaController.Callback::class.java) viewModel.updateController(mockController) + fakeExecutor.runNextReady() verify(mockController).registerCallback(captor.capture()) assertThat(viewModel.progress.value!!.elapsedTime).isEqualTo(firstPosition.toInt()) @@ -831,8 +847,48 @@ public class SeekBarViewModelTest : SysuiTestCase() { build() } captor.value.onPlaybackStateChanged(secondState) + fakeExecutor.runNextReady() // THEN then elapsed time should be updated assertThat(viewModel.progress.value!!.elapsedTime).isEqualTo(secondPosition.toInt()) } + + @Test + fun contentDescriptionUpdated() { + // When there is a duration and position + val duration = (1.5 * 60 * 60 * 1000).toLong() + val metadata = + MediaMetadata.Builder().run { + putLong(MediaMetadata.METADATA_KEY_DURATION, duration) + build() + } + whenever(mockController.getMetadata()).thenReturn(metadata) + + val elapsedTime = 3000L + val state = + PlaybackState.Builder().run { + setState(PlaybackState.STATE_PLAYING, elapsedTime, 1f) + build() + } + whenever(mockController.getPlaybackState()).thenReturn(state) + + viewModel.updateController(mockController) + fakeExecutor.runNextReady() + + // Then the content description is set + val result = viewModel.progress.value!! + + val expectedProgress = + MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE) + .formatMeasures(Measure(3, MeasureUnit.SECOND)) + val expectedDuration = + MeasureFormat.getInstance(Locale.getDefault(), MeasureFormat.FormatWidth.WIDE) + .formatMeasures( + Measure(1, MeasureUnit.HOUR), + Measure(30, MeasureUnit.MINUTE), + Measure(0, MeasureUnit.SECOND), + ) + assertThat(result.durationDescription).isEqualTo(expectedDuration) + assertThat(result.elapsedTimeDescription).isEqualTo(expectedProgress) + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java index 3d0a8f6cd236..ebbe023d0d24 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogDelegateLegacyTest.java @@ -878,4 +878,18 @@ public class InternetDialogDelegateLegacyTest extends SysuiTestCase { mMobileDataLayout.setVisibility(mobileDataVisible ? View.VISIBLE : View.GONE); mConnectedWifi.setVisibility(connectedWifiVisible ? View.VISIBLE : View.GONE); } + + @Test + public void updateDialog_wifiIsDisabled_turnOffProgressBar() { + when(mInternetDetailsContentController.isWifiEnabled()).thenReturn(false); + mInternetDialogDelegateLegacy.mIsProgressBarVisible = true; + + mInternetDialogDelegateLegacy.updateDialog(false); + + mBgExecutor.runAllReady(); + mInternetDialogDelegateLegacy.mDataInternetContent.observe( + mInternetDialogDelegateLegacy.mLifecycleOwner, i -> { + assertThat(mInternetDialogDelegateLegacy.mIsProgressBarVisible).isFalse(); + }); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java index 955de273c426..2a58890f8767 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java @@ -82,13 +82,16 @@ import com.android.systemui.shade.transition.LargeScreenShadeInterpolator; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; +import com.android.systemui.statusbar.notification.collection.EntryAdapter; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; +import com.android.systemui.statusbar.notification.data.repository.HeadsUpRepository; import com.android.systemui.statusbar.notification.emptyshade.shared.ModesEmptyShadeFix; import com.android.systemui.statusbar.notification.emptyshade.ui.view.EmptyShadeView; import com.android.systemui.statusbar.notification.footer.ui.view.FooterView; import com.android.systemui.statusbar.notification.headsup.AvalancheController; +import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableView; import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun; @@ -157,6 +160,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock private LargeScreenShadeInterpolator mLargeScreenShadeInterpolator; @Mock private AvalancheController mAvalancheController; + @Mock private HeadsUpRepository mHeadsUpRepository; public NotificationStackScrollLayoutTest(FlagsParameterization flags) { super(); @@ -176,6 +180,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { mBypassController, mStatusBarKeyguardViewManager, mLargeScreenShadeInterpolator, + mHeadsUpRepository, mAvalancheController )); @@ -728,6 +733,9 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { NotificationEntry entry = mock(NotificationEntry.class); when(row.getEntry()).thenReturn(entry); when(entry.isAmbient()).thenReturn(false); + EntryAdapter entryAdapter = mock(EntryAdapter.class); + when(entryAdapter.isAmbient()).thenReturn(false); + when(row.getEntryAdapter()).thenReturn(entryAdapter); mStackScroller.addContainerView(row); // speed bump = 1 @@ -744,6 +752,9 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { NotificationEntry entry = mock(NotificationEntry.class); when(row.getEntry()).thenReturn(entry); when(entry.isAmbient()).thenReturn(true); + EntryAdapter entryAdapter = mock(EntryAdapter.class); + when(entryAdapter.isAmbient()).thenReturn(true); + when(row.getEntryAdapter()).thenReturn(entryAdapter); mStackScroller.addContainerView(row); // speed bump is set to 0 @@ -760,6 +771,9 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { NotificationEntry entry = mock(NotificationEntry.class); when(row.getEntry()).thenReturn(entry); when(entry.isAmbient()).thenReturn(false); + EntryAdapter entryAdapter = mock(EntryAdapter.class); + when(entryAdapter.isAmbient()).thenReturn(false); + when(row.getEntryAdapter()).thenReturn(entryAdapter); mStackScroller.addContainerView(row); // speed bump is 1 @@ -1373,6 +1387,9 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase { when(row.canViewBeCleared()).thenReturn(true); when(row.getEntry()).thenReturn(entry); when(entry.isClearable()).thenReturn(true); + EntryAdapter entryAdapter = mock(EntryAdapter.class); + when(entryAdapter.isClearable()).thenReturn(true); + when(row.getEntryAdapter()).thenReturn(entryAdapter); return row; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt index ce99e595504d..cbe986b305bb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt @@ -26,8 +26,6 @@ import android.widget.FrameLayout import android.widget.ImageView import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase -import com.android.systemui.flags.FakeFeatureFlagsClassic -import com.android.systemui.flags.Flags import com.android.systemui.log.table.logcatTableLogBuffer import com.android.systemui.res.R import com.android.systemui.statusbar.StatusBarIconView @@ -62,7 +60,6 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { private lateinit var testableLooper: TestableLooper private val testDispatcher = UnconfinedTestDispatcher() private val testScope = TestScope(testDispatcher) - private val flags = FakeFeatureFlagsClassic().also { it.set(Flags.NEW_NETWORK_SLICE_UI, false) } @Mock private lateinit var viewLogger: MobileViewLogger @Mock private lateinit var constants: ConnectivityConstants @@ -102,12 +99,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { @Test fun setVisibleState_icon_iconShownDotHidden() { val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) view.setVisibleState(StatusBarIconView.STATE_ICON, /* animate= */ false) @@ -123,12 +115,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { @Test fun setVisibleState_dot_iconHiddenDotShown() { val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) view.setVisibleState(StatusBarIconView.STATE_DOT, /* animate= */ false) ViewUtils.attachView(view) @@ -143,12 +130,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { @Test fun setVisibleState_hidden_iconAndDotHidden() { val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) view.setVisibleState(StatusBarIconView.STATE_HIDDEN, /* animate= */ false) ViewUtils.attachView(view) @@ -166,12 +148,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { createViewModel() val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -186,12 +163,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { createViewModel() val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -205,12 +177,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { airplaneModeRepository.setIsAirplaneMode(false) val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -224,12 +191,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { airplaneModeRepository.setIsAirplaneMode(true) val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -241,12 +203,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { @Test fun onDarkChanged_iconHasNewColor() { val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -263,12 +220,7 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { @Test fun setStaticDrawableColor_iconHasNewColor() { val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -285,17 +237,11 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { @Test fun colorChange_layersUpdateWithContrast() { // Allow the slice, and set it to visible. This cause us to use special color logic - flags.set(Flags.NEW_NETWORK_SLICE_UI, true) interactor.showSliceAttribution.value = true createViewModel() val view = - ModernStatusBarMobileView.constructAndBind( - context, - viewLogger, - SLOT_NAME, - viewModel, - ) + ModernStatusBarMobileView.constructAndBind(context, viewLogger, SLOT_NAME, viewModel) ViewUtils.attachView(view) testableLooper.processAllMessages() @@ -340,7 +286,6 @@ class ModernStatusBarMobileViewTest : SysuiTestCase() { interactor, airplaneModeInteractor, constants, - flags, testScope.backgroundScope, ) viewModel = QsMobileIconViewModel(viewModelCommon) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt index 804e7d635107..6ae6fe61179b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconViewModelTest.kt @@ -31,7 +31,6 @@ import com.android.systemui.common.shared.model.Icon import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.FakeFeatureFlagsClassic import com.android.systemui.flags.Flags -import com.android.systemui.flags.Flags.NEW_NETWORK_SLICE_UI import com.android.systemui.log.table.logcatTableLogBuffer import com.android.systemui.res.R import com.android.systemui.statusbar.connectivity.MobileIconCarrierIdOverridesFake @@ -94,7 +93,6 @@ class MobileIconViewModelTest : SysuiTestCase() { private val flags = FakeFeatureFlagsClassic().also { - it.set(Flags.NEW_NETWORK_SLICE_UI, false) it.set(Flags.FILTER_PROVISIONING_NETWORK_SUBSCRIPTIONS, true) } private val testDispatcher = UnconfinedTestDispatcher() @@ -430,6 +428,7 @@ class MobileIconViewModelTest : SysuiTestCase() { assertWithMessage("Level $i is expected to be 'no signal'") .that((latest as MobileContentDescription.Cellular).levelDescriptionRes) .isEqualTo(NO_SIGNAL) + else -> assertWithMessage("Level $i is expected not to be null") .that(latest) @@ -454,6 +453,7 @@ class MobileIconViewModelTest : SysuiTestCase() { assertWithMessage("Level $i is expected to be 'no signal'") .that((latest as MobileContentDescription.Cellular).levelDescriptionRes) .isEqualTo(NO_SIGNAL) + else -> assertWithMessage("Level $i is not expected to be null") .that(latest) @@ -834,22 +834,8 @@ class MobileIconViewModelTest : SysuiTestCase() { } @Test - fun netTypeBackground_flagOff_isNull() = - testScope.runTest { - flags.set(NEW_NETWORK_SLICE_UI, false) - createAndSetViewModel() - - val latest by collectLastValue(underTest.networkTypeBackground) - - repository.hasPrioritizedNetworkCapabilities.value = true - - assertThat(latest).isNull() - } - - @Test - fun netTypeBackground_flagOn_nullWhenNoPrioritizedCapabilities() = + fun netTypeBackground_nullWhenNoPrioritizedCapabilities() = testScope.runTest { - flags.set(NEW_NETWORK_SLICE_UI, true) createAndSetViewModel() val latest by collectLastValue(underTest.networkTypeBackground) @@ -861,9 +847,8 @@ class MobileIconViewModelTest : SysuiTestCase() { @Test @EnableFlags(NewStatusBarIcons.FLAG_NAME, StatusBarRootModernization.FLAG_NAME) - fun netTypeBackground_sliceUiEnabled_notNullWhenPrioritizedCapabilities_newIcons() = + fun netTypeBackground_notNullWhenPrioritizedCapabilities_newIcons() = testScope.runTest { - flags.set(NEW_NETWORK_SLICE_UI, true) createAndSetViewModel() val latest by collectLastValue(underTest.networkTypeBackground) @@ -876,9 +861,8 @@ class MobileIconViewModelTest : SysuiTestCase() { @Test @DisableFlags(NewStatusBarIcons.FLAG_NAME, StatusBarRootModernization.FLAG_NAME) - fun netTypeBackground_sliceUiDisabled_notNullWhenPrioritizedCapabilities_oldIcons() = + fun netTypeBackground_notNullWhenPrioritizedCapabilities_oldIcons() = testScope.runTest { - flags.set(NEW_NETWORK_SLICE_UI, true) createAndSetViewModel() val latest by collectLastValue(underTest.networkTypeBackground) @@ -1075,7 +1059,6 @@ class MobileIconViewModelTest : SysuiTestCase() { interactor, airplaneModeInteractor, constants, - flags, testScope.backgroundScope, ) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index 68d84ecaf4b1..8281132e7502 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -135,11 +135,14 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.RankingBuilder; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.NotifPipelineFlags; +import com.android.systemui.statusbar.notification.collection.GroupEntry; +import com.android.systemui.statusbar.notification.collection.GroupEntryBuilder; import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection; import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener; +import com.android.systemui.statusbar.notification.collection.notifcollection.UpdateSource; import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.interruption.AvalancheProvider; @@ -150,6 +153,7 @@ import com.android.systemui.statusbar.notification.interruption.VisualInterrupti import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionProviderTestUtil; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.NotificationTestHelper; +import com.android.systemui.statusbar.notification.shared.NotificationBundleUi; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.policy.BatteryController; @@ -214,6 +218,9 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.stubbing.Answer; +import platform.test.runner.parameterized.ParameterizedAndroidJunit4; +import platform.test.runner.parameterized.Parameters; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -222,9 +229,6 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.Executor; -import platform.test.runner.parameterized.ParameterizedAndroidJunit4; -import platform.test.runner.parameterized.Parameters; - @SmallTest @RunWith(ParameterizedAndroidJunit4.class) @TestableLooper.RunWithLooper(setAsMainLooper = true) @@ -890,7 +894,7 @@ public class BubblesTest extends SysuiTestCase { assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Send update - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); // Nothing should have changed // Notif is suppressed after expansion @@ -1058,7 +1062,8 @@ public class BubblesTest extends SysuiTestCase { @Test public void testAddNotif_notBubble() { mEntryListener.onEntryAdded(mNonBubbleNotifRow.getEntry()); - mEntryListener.onEntryUpdated(mNonBubbleNotifRow.getEntry(), /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mNonBubbleNotifRow.getEntry(), + /* source= */ UpdateSource.App); assertThat(mBubbleController.hasBubbles()).isFalse(); } @@ -1096,7 +1101,7 @@ public class BubblesTest extends SysuiTestCase { NotificationListenerService.Ranking ranking = new RankingBuilder( mRow.getRanking()).setCanBubble(false).build(); mRow.setRanking(ranking); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertFalse(mBubbleController.hasBubbles()); verify(mDeleteIntent, never()).send(); @@ -1227,8 +1232,36 @@ public class BubblesTest extends SysuiTestCase { } @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) public void testBubbleSummaryDismissal_suppressesSummaryAndBubbleFromShade() throws Exception { // GIVEN a group summary with a bubble child + NotificationEntry groupedBubble = mNotificationTestHelper.createBubbleEntryInGroup(); + GroupEntry groupSummary = mNotificationTestHelper.createGroupEntry( + 0, List.of(groupedBubble)); + mEntryListener.onEntryAdded(groupedBubble); + when(mCommonNotifCollection.getEntry(groupedBubble.getKey())) + .thenReturn(groupedBubble); + assertTrue(mBubbleData.hasBubbleInStackWithKey(groupedBubble.getKey())); + + // WHEN the summary is dismissed + mBubblesManager.handleDismissalInterception(groupSummary.getSummary()); + + // THEN the summary and bubbled child are suppressed from the shade + assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( + groupedBubble.getKey(), + groupedBubble.getSbn().getGroupKey())); + assertTrue(mBubbleController.getImplCachedState().isBubbleNotificationSuppressedFromShade( + groupedBubble.getKey(), + groupedBubble.getSbn().getGroupKey())); + assertTrue(mBubbleData.isSummarySuppressed( + groupSummary.getSummary().getSbn().getGroupKey())); + } + + @Test + @DisableFlags(NotificationBundleUi.FLAG_NAME) + public void testBubbleSummaryDismissal_suppressesSummaryAndBubbleFromShade_rows() + throws Exception { + // GIVEN a group summary with a bubble child ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(0); ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup(); mEntryListener.onEntryAdded(groupedBubble.getEntry()); @@ -1251,8 +1284,33 @@ public class BubblesTest extends SysuiTestCase { } @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) public void testAppRemovesSummary_removesAllBubbleChildren() throws Exception { // GIVEN a group summary with a bubble child + NotificationEntry groupedBubble = mNotificationTestHelper.createBubbleEntryInGroup(); + GroupEntry groupSummary = mNotificationTestHelper.createGroupEntry( + 0, List.of(groupedBubble)); + mEntryListener.onEntryAdded(groupedBubble); + when(mCommonNotifCollection.getEntry(groupedBubble.getKey())) + .thenReturn(groupedBubble); + assertTrue(mBubbleData.hasBubbleInStackWithKey(groupedBubble.getKey())); + + // GIVEN the summary is dismissed + mBubblesManager.handleDismissalInterception(groupSummary.getSummary()); + + // WHEN the summary is cancelled by the app + mEntryListener.onEntryRemoved(groupSummary.getSummary(), REASON_APP_CANCEL); + + // THEN the summary and its children are removed from bubble data + assertFalse(mBubbleData.hasBubbleInStackWithKey(groupedBubble.getKey())); + assertFalse(mBubbleData.isSummarySuppressed( + groupSummary.getSummary().getSbn().getGroupKey())); + } + + @Test + @DisableFlags(NotificationBundleUi.FLAG_NAME) + public void testAppRemovesSummary_removesAllBubbleChildren_rows() throws Exception { + // GIVEN a group summary with a bubble child ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(0); ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup(); mEntryListener.onEntryAdded(groupedBubble.getEntry()); @@ -1274,9 +1332,52 @@ public class BubblesTest extends SysuiTestCase { } @Test + @EnableFlags(NotificationBundleUi.FLAG_NAME) public void testSummaryDismissalMarksBubblesHiddenFromShadeAndDismissesNonBubbledChildren() throws Exception { // GIVEN a group summary with two (non-bubble) children and one bubble child + NotificationEntry groupedBubble = mNotificationTestHelper.createBubbleEntryInGroup(); + GroupEntry groupSummary = mNotificationTestHelper.createGroupEntry( + 2, List.of(groupedBubble)); + mEntryListener.onEntryAdded(groupedBubble); + when(mCommonNotifCollection.getEntry(groupedBubble.getKey())) + .thenReturn(groupedBubble); + + // WHEN the summary is dismissed + mBubblesManager.handleDismissalInterception(groupSummary.getSummary()); + + // THEN only the NON-bubble children are dismissed + List<NotificationEntry> children = groupSummary.getChildren(); + verify(mNotifCallback, times(1)).removeNotification( + eq(children.get(0)), any(), eq(REASON_GROUP_SUMMARY_CANCELED)); + verify(mNotifCallback, times(1)).removeNotification( + eq(children.get(1)), any(), eq(REASON_GROUP_SUMMARY_CANCELED)); + verify(mNotifCallback, never()).removeNotification(eq(groupedBubble), + any(), anyInt()); + + // THEN the bubble child still exists as a bubble and is suppressed from the shade + assertTrue(mBubbleData.hasBubbleInStackWithKey(groupedBubble.getKey())); + assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( + groupedBubble.getKey(), + groupedBubble.getSbn().getGroupKey())); + assertTrue(mBubbleController.getImplCachedState().isBubbleNotificationSuppressedFromShade( + groupedBubble.getKey(), + groupedBubble.getSbn().getGroupKey())); + + // THEN the summary is also suppressed from the shade + assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( + groupSummary.getSummary().getKey(), + groupSummary.getSummary().getSbn().getGroupKey())); + assertTrue(mBubbleController.getImplCachedState().isBubbleNotificationSuppressedFromShade( + groupSummary.getSummary().getKey(), + groupSummary.getSummary().getSbn().getGroupKey())); + } + + @Test + @DisableFlags(NotificationBundleUi.FLAG_NAME) + public void testSummaryDismissalMarksBubblesHiddenFromShadeAndDismissesNonBubbledChildren_row() + throws Exception { + // GIVEN a group summary with two (non-bubble) children and one bubble child ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(2); ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup(); mEntryListener.onEntryAdded(groupedBubble.getEntry()); @@ -1845,7 +1946,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void testNonInterruptiveUpdate_doesntBubbleFromOverflow() { mEntryListener.onEntryAdded(mRow); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertBubbleNotificationNotSuppressedFromShade(mBubbleEntry); // Dismiss the bubble so it's in the overflow @@ -1873,7 +1974,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void testNonInterruptiveUpdate_doesntTriggerInflate() { mEntryListener.onEntryAdded(mRow); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertBubbleNotificationNotSuppressedFromShade(mBubbleEntry); // Update the entry to not show in shade @@ -1896,7 +1997,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void testNonInterruptiveUpdate_doesntOverrideOverflowFlagBubble() { mEntryListener.onEntryAdded(mRow); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertBubbleNotificationNotSuppressedFromShade(mBubbleEntry); // Dismiss the bubble so it's in the overflow @@ -1923,9 +2024,9 @@ public class BubblesTest extends SysuiTestCase { mEntryListener.onEntryAdded(mRow); assertThat(mBubbleController.hasBubbles()).isTrue(); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ false); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ false); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ false); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.SystemUi); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.SystemUi); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.SystemUi); // Check that it wasn't inflated (1 because it would've been inflated via onEntryAdded) verify(mBubbleController, times(1)).inflateAndAdd( @@ -2443,7 +2544,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void showBubbleOverflow_hasOverflowContents() { mEntryListener.onEntryAdded(mRow); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertThat(mBubbleData.getOverflowBubbles()).isEmpty(); BubbleStackView stackView = mBubbleController.getStackView(); @@ -2460,7 +2561,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void showBubbleOverflow_isEmpty() { mEntryListener.onEntryAdded(mRow); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertThat(mBubbleData.getOverflowBubbles()).isEmpty(); BubbleStackView stackView = mBubbleController.getStackView(); @@ -2481,7 +2582,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void showBubbleOverflow_ignored() { mEntryListener.onEntryAdded(mRow); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); assertThat(mBubbleData.getOverflowBubbles()).isEmpty(); BubbleStackView stackView = mBubbleController.getStackView(); @@ -2522,7 +2623,7 @@ public class BubblesTest extends SysuiTestCase { mEntryListener.onEntryAdded(mRow); // Mark the notification as updated NotificationEntryHelper.modifyRanking(mRow).setTextChanged(true).build(); - mEntryListener.onEntryUpdated(mRow, /* fromSystem= */ true); + mEntryListener.onEntryUpdated(mRow, /* source= */ UpdateSource.App); verify(mBubbleLogger).log(eqBubbleWithKey(mRow.getKey()), eq(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_UPDATED)); diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityRepository.kt index 923b63656914..c3692373f5a1 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityRepository.kt @@ -20,6 +20,8 @@ import com.android.systemui.dagger.SysUISingleton import dagger.Binds import dagger.Module import javax.inject.Inject +import kotlin.time.Duration +import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.flow.MutableStateFlow @SysUISingleton @@ -28,6 +30,16 @@ class FakeAccessibilityRepository( override val isEnabled: MutableStateFlow<Boolean>, ) : AccessibilityRepository { @Inject constructor() : this(MutableStateFlow(false), MutableStateFlow(false)) + + private var recommendedTimeout: Duration = 0.milliseconds + + fun setRecommendedTimeout(duration: Duration) { + recommendedTimeout = duration + } + + override fun getRecommendedTimeout(originalTimeout: Duration, uiFlags: Int): Duration { + return recommendedTimeout + } } @Module diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt index 43b57de3df9f..d6b625b49fb2 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt @@ -17,6 +17,7 @@ package com.android.systemui.biometrics.ui.viewmodel import android.content.applicationContext +import android.view.accessibility.accessibilityManager import com.android.app.activityTaskManager import com.android.launcher3.icons.IconProvider import com.android.systemui.biometrics.domain.interactor.biometricStatusInteractor @@ -27,7 +28,6 @@ import com.android.systemui.biometrics.udfpsUtils import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.util.mockito.mock -import org.mockito.Mockito.mock val Kosmos.promptViewModel by Fixture { PromptViewModel( @@ -39,6 +39,7 @@ val Kosmos.promptViewModel by Fixture { udfpsUtils = udfpsUtils, iconProvider = iconProvider, activityTaskManager = activityTaskManager, + accessibilityManager = accessibilityManager, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDisplayRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDisplayRepository.kt index a64fc2413246..d6f0e06e104d 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDisplayRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/display/data/repository/FakeDisplayRepository.kt @@ -104,6 +104,8 @@ class FakeDisplayRepository @Inject constructor() : DisplayRepository { private val _displayChangeEvent = MutableSharedFlow<Int>(replay = 1) override val displayChangeEvent: Flow<Int> = _displayChangeEvent + override val displayIdsWithSystemDecorations: StateFlow<Set<Int>> = MutableStateFlow(emptySet()) + suspend fun emitDisplayChangeEvent(displayId: Int) = _displayChangeEvent.emit(displayId) fun setDefaultDisplayOff(defaultDisplayOff: Boolean) { diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeQSTile.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeQSTile.kt index 4714969af508..c7ea6db926d1 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeQSTile.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/FakeQSTile.kt @@ -22,7 +22,7 @@ import com.android.systemui.plugins.qs.QSTile class FakeQSTile(var user: Int, var available: Boolean = true) : QSTile { private var tileSpec: String? = null - var destroyed = false + private var destroyed = false var hasDetailsViewModel: Boolean = true private var state = QSTile.State() val callbacks = mutableListOf<QSTile.Callback>() @@ -64,6 +64,10 @@ class FakeQSTile(var user: Int, var available: Boolean = true) : QSTile { user = currentUser } + override fun getCurrentTileUser(): Int { + return user + } + override fun getMetricsCategory(): Int { return 0 } @@ -76,6 +80,10 @@ class FakeQSTile(var user: Int, var available: Boolean = true) : QSTile { destroyed = true } + override fun isDestroyed(): Boolean { + return destroyed + } + override fun getTileLabel(): CharSequence { return "" } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/external/TileLifecycleManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/external/TileLifecycleManagerKosmos.kt index 4978558ff8a2..f038fdd3a1cd 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/external/TileLifecycleManagerKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/external/TileLifecycleManagerKosmos.kt @@ -26,7 +26,7 @@ import com.android.systemui.qs.tiles.impl.custom.packageManagerAdapterFacade import com.android.systemui.util.mockito.mock import com.android.systemui.util.time.fakeSystemClock -val Kosmos.tileLifecycleManagerFactory: TileLifecycleManager.Factory by +var Kosmos.tileLifecycleManagerFactory: TileLifecycleManager.Factory by Kosmos.Fixture { TileLifecycleManager.Factory { intent, userHandle -> TileLifecycleManager( diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLoggerKosmos.kt index 7d52f5d8aa34..c1531835b136 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLoggerKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/pipeline/shared/logging/QSPipelineLoggerKosmos.kt @@ -17,7 +17,14 @@ package com.android.systemui.qs.pipeline.shared.logging import com.android.systemui.kosmos.Kosmos -import com.android.systemui.util.mockito.mock +import com.android.systemui.log.logcatLogBuffer /** mock */ -var Kosmos.qsLogger: QSPipelineLogger by Kosmos.Fixture { mock<QSPipelineLogger>() } +var Kosmos.qsLogger: QSPipelineLogger by + Kosmos.Fixture { + QSPipelineLogger( + logcatLogBuffer(QSPipelineLogger.TILE_LIST_TAG), + logcatLogBuffer(QSPipelineLogger.AUTO_ADD_TAG), + logcatLogBuffer(QSPipelineLogger.RESTORE_TAG), + ) + } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/base/interactor/FakeQSTileUserActionInteractor.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/base/interactor/FakeQSTileUserActionInteractor.kt index bc1c60c33d71..c0584903db2d 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/base/interactor/FakeQSTileUserActionInteractor.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/base/interactor/FakeQSTileUserActionInteractor.kt @@ -33,7 +33,4 @@ class FakeQSTileUserActionInteractor<T> : QSTileUserActionInteractor<T> { override suspend fun handleInput(input: QSTileInput<T>) { mutex.withLock { mutableInputs.add(input) } } - - override var detailsViewModel: TileDetailsViewModel? = - FakeTileDetailsViewModel("FakeQSTileUserActionInteractor") } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/di/NewQSTileFactoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/di/NewQSTileFactoryKosmos.kt index 6787b8ebb37f..c223be44a70c 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/di/NewQSTileFactoryKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/di/NewQSTileFactoryKosmos.kt @@ -19,6 +19,7 @@ package com.android.systemui.qs.tiles.di import android.os.UserHandle import com.android.systemui.kosmos.Kosmos import com.android.systemui.qs.instanceIdSequenceFake +import com.android.systemui.qs.pipeline.domain.interactor.currentTilesInteractor import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.shared.model.TileCategory import com.android.systemui.qs.tiles.base.viewmodel.QSTileViewModelFactory @@ -56,7 +57,11 @@ val Kosmos.customTileViewModelFactory: QSTileViewModelFactory.Component by override val config: QSTileConfig = config override val isAvailable: StateFlow<Boolean> = MutableStateFlow(true) - override fun onUserChanged(user: UserHandle) {} + override var currentTileUser = currentTilesInteractor.userId.value + + override fun onUserChanged(user: UserHandle) { + currentTileUser = user.identifier + } override fun forceUpdate() {} @@ -68,7 +73,7 @@ val Kosmos.customTileViewModelFactory: QSTileViewModelFactory.Component by } } -val Kosmos.newQSTileFactory by +var Kosmos.newQSTileFactory by Kosmos.Fixture { NewQSTileFactory( qSTileConfigProvider, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt index bdcab5fd2eca..9776fd91134d 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/core/StatusBarOrchestratorKosmos.kt @@ -34,14 +34,29 @@ import com.android.systemui.statusbar.data.repository.lightBarControllerStore import com.android.systemui.statusbar.data.repository.privacyDotWindowControllerStore import com.android.systemui.statusbar.data.repository.statusBarModeRepository import com.android.systemui.statusbar.mockNotificationRemoteInputManager +import com.android.systemui.statusbar.phone.fakeAutoHideControllerStore import com.android.systemui.statusbar.phone.mockAutoHideController -import com.android.systemui.statusbar.phone.multiDisplayAutoHideControllerStore import com.android.systemui.statusbar.window.data.repository.fakeStatusBarWindowStatePerDisplayRepository import com.android.systemui.statusbar.window.data.repository.statusBarWindowStateRepositoryStore import com.android.systemui.statusbar.window.fakeStatusBarWindowController import com.android.systemui.statusbar.window.statusBarWindowControllerStore import com.android.wm.shell.bubbles.bubblesOptional +val Kosmos.multiDisplayStatusBarOrchestratorStore by + Kosmos.Fixture { + MultiDisplayStatusBarOrchestratorStore( + applicationCoroutineScope, + displayRepository, + statusBarOrchestratorFactory, + statusBarWindowControllerStore, + statusBarModeRepository, + statusBarInitializerStore, + fakeAutoHideControllerStore, + displayScopeRepository, + statusBarWindowStateRepositoryStore, + ) + } + val Kosmos.statusBarOrchestrator by Kosmos.Fixture { StatusBarOrchestrator( @@ -74,15 +89,9 @@ val Kosmos.multiDisplayStatusBarStarter by Kosmos.Fixture { MultiDisplayStatusBarStarter( applicationCoroutineScope, - displayScopeRepository, - statusBarOrchestratorFactory, - statusBarWindowStateRepositoryStore, - statusBarModeRepository, + multiDisplayStatusBarOrchestratorStore, displayRepository, statusBarInitializerStore, - statusBarWindowControllerStore, - statusBarInitializerStore, - multiDisplayAutoHideControllerStore, privacyDotWindowControllerStore, lightBarControllerStore, mockIWindowManager, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/VisibilityLocationProviderKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/VisibilityLocationProviderKosmos.kt new file mode 100644 index 000000000000..085d38651f3c --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/VisibilityLocationProviderKosmos.kt @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification + +import com.android.systemui.kosmos.Kosmos +import org.mockito.kotlin.mock + +val Kosmos.visibilityLocationProvider: VisibilityLocationProvider by Kosmos.Fixture { mock() } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorKosmos.kt index 358d2519556b..1a5c61a04c9f 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorKosmos.kt @@ -16,7 +16,41 @@ package com.android.systemui.statusbar.notification.collection.coordinator +import com.android.systemui.communal.domain.interactor.communalSceneInteractor +import com.android.systemui.concurrency.fakeExecutor +import com.android.systemui.dump.dumpManager +import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor +import com.android.systemui.keyguard.wakefulnessLifecycle import com.android.systemui.kosmos.Kosmos -import com.android.systemui.util.mockito.mock +import com.android.systemui.kosmos.testScope +import com.android.systemui.plugins.statusbar.statusBarStateController +import com.android.systemui.shade.domain.interactor.shadeAnimationInteractor +import com.android.systemui.shade.domain.interactor.shadeInteractor +import com.android.systemui.statusbar.notification.collection.provider.visualStabilityProvider +import com.android.systemui.statusbar.notification.domain.interactor.seenNotificationsInteractor +import com.android.systemui.statusbar.notification.stack.data.repository.headsUpNotificationRepository +import com.android.systemui.statusbar.notification.visibilityLocationProvider +import com.android.systemui.statusbar.policy.keyguardStateController +import com.android.systemui.util.kotlin.JavaAdapter -var Kosmos.visualStabilityCoordinator by Kosmos.Fixture { mock<VisualStabilityCoordinator>() } +var Kosmos.visualStabilityCoordinator: VisualStabilityCoordinator by + Kosmos.Fixture { + VisualStabilityCoordinator( + fakeExecutor, + fakeExecutor, + dumpManager, + headsUpNotificationRepository, + shadeAnimationInteractor, + JavaAdapter(testScope.backgroundScope), + seenNotificationsInteractor, + statusBarStateController, + visibilityLocationProvider, + visualStabilityProvider, + wakefulnessLifecycle, + communalSceneInteractor, + shadeInteractor, + keyguardTransitionInteractor, + keyguardStateController, + visualStabilityCoordinatorLogger, + ) + } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLoggerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLoggerKosmos.kt new file mode 100644 index 000000000000..6645cdc1e25b --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLoggerKosmos.kt @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.collection.coordinator + +import com.android.systemui.kosmos.Kosmos +import org.mockito.kotlin.mock + +val Kosmos.visualStabilityCoordinatorLogger: VisualStabilityCoordinatorLogger by + Kosmos.Fixture { mock() } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt index d65a4a0532e3..4f1bf95cb5df 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/AmbientStateKosmos.kt @@ -22,6 +22,7 @@ import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.shade.transition.largeScreenShadeInterpolator import com.android.systemui.statusbar.notification.headsup.mockAvalancheController +import com.android.systemui.statusbar.notification.stack.data.repository.headsUpNotificationRepository import com.android.systemui.statusbar.phone.statusBarKeyguardViewManager val Kosmos.ambientState by Fixture { @@ -32,6 +33,7 @@ val Kosmos.ambientState by Fixture { /*bypassController=*/ stackScrollAlgorithmBypassController, /*statusBarKeyguardViewManager=*/ statusBarKeyguardViewManager, /*largeScreenShadeInterpolator=*/ largeScreenShadeInterpolator, + /*headsUpRepository=*/ headsUpNotificationRepository, /*avalancheController=*/ mockAvalancheController, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt index c5f65578a8bb..f2f75c4df149 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelKosmos.kt @@ -16,7 +16,6 @@ package com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel -import com.android.systemui.flags.featureFlagsClassic import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.airplaneModeInteractor @@ -31,7 +30,6 @@ val Kosmos.mobileIconsViewModel: MobileIconsViewModel by interactor = mobileIconsInteractor, airplaneModeInteractor = airplaneModeInteractor, constants = mock(), - flags = featureFlagsClassic, scope = applicationCoroutineScope, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorKosmos.kt index 888b7e625524..07c4ec5ad6b8 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/domain/interactor/VolumeDialogVisibilityInteractorKosmos.kt @@ -16,6 +16,7 @@ package com.android.systemui.volume.dialog.domain.interactor +import com.android.systemui.accessibility.data.repository.accessibilityRepository import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.plugins.volumeDialogController @@ -28,8 +29,10 @@ val Kosmos.volumeDialogVisibilityInteractor by VolumeDialogVisibilityInteractor( applicationCoroutineScope, volumeDialogCallbacksInteractor, + volumeDialogStateInteractor, volumeTracer, volumeDialogVisibilityRepository, + accessibilityRepository, volumeDialogController, secureSettingsRepository, ) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt index c9396f5ccde9..e1773996a881 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModelKosmos.kt @@ -16,6 +16,7 @@ package com.android.systemui.volume.dialog.sliders.ui.viewmodel +import android.content.applicationContext import com.android.internal.logging.uiEventLogger import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope @@ -29,6 +30,7 @@ import com.android.systemui.volume.dialog.sliders.domain.model.volumeDialogSlide val Kosmos.volumeDialogSliderViewModel by Kosmos.Fixture { VolumeDialogSliderViewModel( + context = applicationContext, sliderType = volumeDialogSliderType, interactor = volumeDialogSliderInteractor, inputEventsInteractor = volumeDialogSliderInputEventsInteractor, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModelKosmos.kt index 05ef462d4998..f08c08a8bcbf 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ui/viewmodel/VolumeDialogViewModelKosmos.kt @@ -18,6 +18,7 @@ package com.android.systemui.volume.dialog.ui.viewmodel import android.content.applicationContext import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.statusbar.policy.configurationController import com.android.systemui.statusbar.policy.devicePostureController import com.android.systemui.volume.dialog.domain.interactor.volumeDialogStateInteractor @@ -28,6 +29,7 @@ val Kosmos.volumeDialogViewModel by Kosmos.Fixture { VolumeDialogViewModel( applicationContext, + applicationCoroutineScope, volumeDialogVisibilityInteractor, volumeDialogSlidersInteractor, volumeDialogStateInteractor, diff --git a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NonNull.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NonNull.java index db3cd8ed712f..1153a77d5c9a 100644 --- a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NonNull.java +++ b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/NonNull.java @@ -35,14 +35,4 @@ import java.lang.annotation.Target; @Retention(SOURCE) @Target({FIELD, METHOD, PARAMETER, TYPE_USE}) @libcore.api.IntraCoreApi -public @interface NonNull { - /** - * Min Android API level (inclusive) to which this annotation is applied. - */ - int from() default Integer.MIN_VALUE; - - /** - * Max Android API level to which this annotation is applied. - */ - int to() default Integer.MAX_VALUE; -} +public @interface NonNull {} diff --git a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Nullable.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Nullable.java index 3371978b0568..295f083426ff 100644 --- a/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Nullable.java +++ b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/Nullable.java @@ -35,14 +35,4 @@ import java.lang.annotation.Target; @Retention(SOURCE) @Target({FIELD, METHOD, PARAMETER, TYPE_USE}) @libcore.api.IntraCoreApi -public @interface Nullable { - /** - * Min Android API level (inclusive) to which this annotation is applied. - */ - int from() default Integer.MIN_VALUE; - - /** - * Max Android API level to which this annotation is applied. - */ - int to() default Integer.MAX_VALUE; -} +public @interface Nullable {} diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt index c5a2f9ff5e96..bba4681d3838 100644 --- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt +++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/FilterRemapper.kt @@ -15,6 +15,7 @@ */ package com.android.hoststubgen.filters +import com.android.hoststubgen.log import org.objectweb.asm.commons.Remapper /** @@ -23,19 +24,25 @@ import org.objectweb.asm.commons.Remapper class FilterRemapper(val filter: OutputFilter) : Remapper() { private val cache = mutableMapOf<String, String>() - override fun mapType(typeInternalName: String?): String? { + + override fun map(typeInternalName: String?): String? { if (typeInternalName == null) { return null } cache[typeInternalName]?.let { + // log.d("Cached rename from $typeInternalName to $it") return it } - var mapped = filter.remapType(typeInternalName) ?: typeInternalName + var mapped = filter.remapType(typeInternalName) + if (mapped != null) { + log.d("Renaming type $typeInternalName to $mapped") + } else { + // log.d("Not renaming type $typeInternalName") + } + mapped = mapped ?: typeInternalName cache[typeInternalName] = mapped return mapped } - - // TODO Do we need to implement mapPackage(), etc too? }
\ No newline at end of file diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapperFilter.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapperFilter.kt index a78c6552b8d0..bc90d1248322 100644 --- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapperFilter.kt +++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFilePolicyRemapperFilter.kt @@ -15,7 +15,6 @@ */ package com.android.hoststubgen.filters -import com.android.hoststubgen.log import java.util.regex.Pattern /** @@ -34,17 +33,12 @@ class TextFilePolicyRemapperFilter( val typeInternalNamePrefix: String, ) - private val cache = mutableMapOf<String, String>() - override fun remapType(className: String): String? { - var mapped: String = className typeRenameSpecs.forEach { if (it.typeInternalNamePattern.matcher(className).matches()) { - mapped = it.typeInternalNamePrefix + className - log.d("Renaming type $className to $mapped") + return it.typeInternalNamePrefix + className } } - cache[className] = mapped - return mapped + return null } } diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/01-hoststubgen-test-tiny-framework-orig-dump.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/01-hoststubgen-test-tiny-framework-orig-dump.txt index 635f66d8e90c..e846d6e19ed9 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/01-hoststubgen-test-tiny-framework-orig-dump.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/01-hoststubgen-test-tiny-framework-orig-dump.txt @@ -3198,7 +3198,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 2 + interfaces: 0, fields: 0, methods: 3, attributes: 2 Constant pool: { public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller(); @@ -3229,6 +3229,22 @@ Constant pool: LocalVariableTable: Start Length Slot Name Signature 0 12 0 value I + + public static int bar(int); + descriptor: (I)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: iload_0 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: iconst_0 + x: aaload + x: invokevirtual #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 10 0 value I } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeInvisibleAnnotations: @@ -3242,7 +3258,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 2 + interfaces: 0, fields: 1, methods: 3, attributes: 2 Constant pool: { private final int mValue; @@ -3278,6 +3294,26 @@ Constant pool: LocalVariableTable: Start Length Slot Name Signature 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + + public static com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int); + descriptor: (I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=6, locals=1, args_size=1 + x: iconst_1 + x: anewarray #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iconst_0 + x: new #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iload_0 + x: invokespecial #x // Method "<init>":(I)V + x: aastore + x: areturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 16 0 value I } SourceFile: "TinyFrameworkToBeRenamed.java" RuntimeInvisibleAnnotations: diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/03-hoststubgen-test-tiny-framework-host-dump.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/03-hoststubgen-test-tiny-framework-host-dump.txt index 51a33554afa9..be95fe03d74f 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/03-hoststubgen-test-tiny-framework-host-dump.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/03-hoststubgen-test-tiny-framework-host-dump.txt @@ -3392,7 +3392,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 + interfaces: 0, fields: 0, methods: 3, attributes: 3 Constant pool: { public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller(); @@ -3429,6 +3429,25 @@ Constant pool: RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int bar(int); + descriptor: (I)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: iload_0 + x: invokestatic #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: iconst_0 + x: aaload + x: invokevirtual #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 10 0 value I + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeVisibleAnnotations: @@ -3867,7 +3886,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 3 + interfaces: 0, fields: 1, methods: 3, attributes: 3 Constant pool: { private final int mValue; @@ -3891,7 +3910,7 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 0 10 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; 0 10 1 value I RuntimeVisibleAnnotations: x: #x() @@ -3908,7 +3927,30 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 0 5 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int); + descriptor: (I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=6, locals=1, args_size=1 + x: iconst_1 + x: anewarray #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iconst_0 + x: new #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iload_0 + x: invokespecial #x // Method "<init>":(I)V + x: aastore + x: areturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 16 0 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/13-hoststubgen-test-tiny-framework-host-ext-dump.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/13-hoststubgen-test-tiny-framework-host-ext-dump.txt index a466a2e2c3a7..667981fcb7e8 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/13-hoststubgen-test-tiny-framework-host-ext-dump.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output.RELEASE_TARGET_JAVA_21/13-hoststubgen-test-tiny-framework-host-ext-dump.txt @@ -4241,7 +4241,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 3 + interfaces: 0, fields: 0, methods: 4, attributes: 3 Constant pool: { private static {}; @@ -4298,6 +4298,30 @@ Constant pool: RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int bar(int); + descriptor: (I)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller + x: ldc #x // String bar + x: ldc #x // String (I)I + x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.callMethodCallHook:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + x: iload_0 + x: invokestatic #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: iconst_0 + x: aaload + x: invokevirtual #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 10 0 value I + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeVisibleAnnotations: @@ -4947,7 +4971,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 3 + interfaces: 0, fields: 1, methods: 4, attributes: 3 Constant pool: { private final int mValue; @@ -4962,8 +4986,8 @@ Constant pool: flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onClassLoaded:(Ljava/lang/Class;Ljava/lang/String;)V x: return @@ -4972,7 +4996,7 @@ Constant pool: flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed x: ldc #x // String <init> x: ldc #x // String (I)V x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -4986,7 +5010,7 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 11 10 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; 11 10 1 value I RuntimeVisibleAnnotations: x: #x() @@ -4997,7 +5021,7 @@ Constant pool: flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed x: ldc #x // String getValue x: ldc #x // String ()I x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -5008,7 +5032,35 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 11 5 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int); + descriptor: (I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=6, locals=1, args_size=1 + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // String getArray + x: ldc #x // String (I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.callMethodCallHook:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + x: iconst_1 + x: anewarray #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iconst_0 + x: new #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iload_0 + x: invokespecial #x // Method "<init>":(I)V + x: aastore + x: areturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 16 0 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt index 78341d7afbb9..8f56f0e219a5 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/01-hoststubgen-test-tiny-framework-orig-dump.txt @@ -3219,7 +3219,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 2 + interfaces: 0, fields: 0, methods: 3, attributes: 2 Constant pool: { public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller(); @@ -3250,6 +3250,22 @@ Constant pool: LocalVariableTable: Start Length Slot Name Signature 0 12 0 value I + + public static int bar(int); + descriptor: (I)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: iload_0 + x: invokestatic #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: iconst_0 + x: aaload + x: invokevirtual #x // Method com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 10 0 value I } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeInvisibleAnnotations: @@ -3263,7 +3279,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 2 + interfaces: 0, fields: 1, methods: 3, attributes: 2 Constant pool: { private final int mValue; @@ -3299,6 +3315,26 @@ Constant pool: LocalVariableTable: Start Length Slot Name Signature 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + + public static com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int); + descriptor: (I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=6, locals=1, args_size=1 + x: iconst_1 + x: anewarray #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iconst_0 + x: new #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iload_0 + x: invokespecial #x // Method "<init>":(I)V + x: aastore + x: areturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 16 0 value I } SourceFile: "TinyFrameworkToBeRenamed.java" RuntimeInvisibleAnnotations: diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-dump.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-dump.txt index 2e0b1820a696..c918bf86fa40 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-dump.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/03-hoststubgen-test-tiny-framework-host-dump.txt @@ -3422,7 +3422,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 2, attributes: 3 + interfaces: 0, fields: 0, methods: 3, attributes: 3 Constant pool: { public com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClassCaller(); @@ -3459,6 +3459,25 @@ Constant pool: RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int bar(int); + descriptor: (I)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + x: iload_0 + x: invokestatic #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: iconst_0 + x: aaload + x: invokevirtual #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 10 0 value I + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeVisibleAnnotations: @@ -3897,7 +3916,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 2, attributes: 3 + interfaces: 0, fields: 1, methods: 3, attributes: 3 Constant pool: { private final int mValue; @@ -3921,7 +3940,7 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 0 10 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; 0 10 1 value I RuntimeVisibleAnnotations: x: #x() @@ -3938,7 +3957,30 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 0 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 0 5 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int); + descriptor: (I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=6, locals=1, args_size=1 + x: iconst_1 + x: anewarray #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iconst_0 + x: new #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iload_0 + x: invokespecial #x // Method "<init>":(I)V + x: aastore + x: areturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 0 16 0 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-dump.txt b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-dump.txt index 51f79258d53a..28065bf16d01 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-dump.txt +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/golden-output/13-hoststubgen-test-tiny-framework-host-ext-dump.txt @@ -4271,7 +4271,7 @@ public class com.android.hoststubgen.test.tinyframework.TinyFrameworkRenamedClas flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller super_class: #x // java/lang/Object - interfaces: 0, fields: 0, methods: 3, attributes: 3 + interfaces: 0, fields: 0, methods: 4, attributes: 3 Constant pool: { private static {}; @@ -4328,6 +4328,30 @@ Constant pool: RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static int bar(int); + descriptor: (I)I + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=4, locals=1, args_size=1 + x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller + x: ldc #x // String bar + x: ldc #x // String (I)I + x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.callMethodCallHook:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + x: iload_0 + x: invokestatic #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getArray:(I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: iconst_0 + x: aaload + x: invokevirtual #x // Method rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.getValue:()I + x: ireturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 10 0 value I + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep } SourceFile: "TinyFrameworkRenamedClassCaller.java" RuntimeVisibleAnnotations: @@ -4977,7 +5001,7 @@ public class rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFramew flags: (0x0021) ACC_PUBLIC, ACC_SUPER this_class: #x // rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed super_class: #x // java/lang/Object - interfaces: 0, fields: 1, methods: 3, attributes: 3 + interfaces: 0, fields: 1, methods: 4, attributes: 3 Constant pool: { private final int mValue; @@ -4992,8 +5016,8 @@ Constant pool: flags: (0x000a) ACC_PRIVATE, ACC_STATIC Code: stack=2, locals=0, args_size=0 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed - x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logClassLoaded x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.onClassLoaded:(Ljava/lang/Class;Ljava/lang/String;)V x: return @@ -5002,7 +5026,7 @@ Constant pool: flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=2, args_size=2 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed x: ldc #x // String <init> x: ldc #x // String (I)V x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -5016,7 +5040,7 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 10 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 11 10 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; 11 10 1 value I RuntimeVisibleAnnotations: x: #x() @@ -5027,7 +5051,7 @@ Constant pool: flags: (0x0001) ACC_PUBLIC Code: stack=4, locals=1, args_size=1 - x: ldc #x // class com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed x: ldc #x // String getValue x: ldc #x // String ()I x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall @@ -5038,7 +5062,35 @@ Constant pool: LineNumberTable: LocalVariableTable: Start Length Slot Name Signature - 11 5 0 this Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + 11 5 0 this Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + RuntimeVisibleAnnotations: + x: #x() + com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep + + public static rename_prefix.com.android.hoststubgen.test.tinyframework.TinyFrameworkToBeRenamed[] getArray(int); + descriptor: (I)[Lrename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + flags: (0x0009) ACC_PUBLIC, ACC_STATIC + Code: + stack=6, locals=1, args_size=1 + x: ldc #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: ldc #x // String getArray + x: ldc #x // String (I)[Lcom/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed; + x: ldc #x // String com.android.hoststubgen.hosthelper.HostTestUtils.logMethodCall + x: invokestatic #x // Method com/android/hoststubgen/hosthelper/HostTestUtils.callMethodCallHook:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + x: iconst_1 + x: anewarray #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iconst_0 + x: new #x // class rename_prefix/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed + x: dup + x: iload_0 + x: invokespecial #x // Method "<init>":(I)V + x: aastore + x: areturn + LineNumberTable: + LocalVariableTable: + Start Length Slot Name Signature + 11 16 0 value I RuntimeVisibleAnnotations: x: #x() com.android.hoststubgen.hosthelper.HostStubGenProcessedAsKeep diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java b/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java index 707bc0ebb4db..74e4610187c4 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkRenamedClassCaller.java @@ -25,4 +25,9 @@ public class TinyFrameworkRenamedClassCaller { // so this code should work as-is. return new TinyFrameworkToBeRenamed(value).getValue(); } + + /** Calls the class that'll be renamed. */ + public static int bar(int value) { + return TinyFrameworkToBeRenamed.getArray(value)[0].getValue(); + } } diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java b/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java index 8319ced6109a..7dcc83e79e26 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-framework/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkToBeRenamed.java @@ -31,4 +31,8 @@ public class TinyFrameworkToBeRenamed { public int getValue() { return mValue; } + + public static TinyFrameworkToBeRenamed[] getArray(int value) { + return new TinyFrameworkToBeRenamed[] { new TinyFrameworkToBeRenamed(value) }; + } } diff --git a/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java b/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java index 68673dc2a5b8..b8d6be4265c9 100644 --- a/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java +++ b/ravenwood/tools/hoststubgen/test-tiny-framework/tiny-test/src/com/android/hoststubgen/test/tinyframework/TinyFrameworkClassTest.java @@ -308,6 +308,11 @@ public class TinyFrameworkClassTest { } @Test + public void testTypeRenameArray() { + assertThat(TinyFrameworkRenamedClassCaller.bar(2)).isEqualTo(2); + } + + @Test public void testMethodCallReplaceNonStatic() throws Exception { assertThat(TinyFrameworkMethodCallReplace.nonStaticMethodCallReplaceTester()) .isEqualTo(true); diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java index 4b042489f3eb..47aa8f5736bf 100644 --- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java +++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java @@ -1115,14 +1115,12 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ if (svcConnTracingEnabled()) { logTraceSvcConn("performGlobalAction", "action=" + action); } - int currentUserId; synchronized (mLock) { if (!hasRightsToCurrentUserLocked()) { return false; } - currentUserId = mSystemSupport.getCurrentUserIdLocked(); } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); final long identity = Binder.clearCallingIdentity(); try { return mSystemActionPerformer.performSystemAction(action); @@ -2791,11 +2789,7 @@ abstract class AbstractAccessibilityServiceConnection extends IAccessibilityServ @RequiresNoPermission @Override public void setAnimationScale(float scale) { - int currentUserId; - synchronized (mLock) { - currentUserId = mSystemSupport.getCurrentUserIdLocked(); - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); final long identity = Binder.clearCallingIdentity(); try { Settings.Global.putFloat( diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index 9eb8442be783..42834ce20783 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1402,11 +1402,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @EnforcePermission(MANAGE_ACCESSIBILITY) public void registerSystemAction(RemoteAction action, int actionId) { registerSystemAction_enforcePermission(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".registerSystemAction", FLAGS_ACCESSIBILITY_MANAGER, "action=" + action + ";actionId=" + actionId); @@ -1423,11 +1419,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @EnforcePermission(MANAGE_ACCESSIBILITY) public void unregisterSystemAction(int actionId) { unregisterSystemAction_enforcePermission(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".unregisterSystemAction", FLAGS_ACCESSIBILITY_MANAGER, "actionId=" + actionId); @@ -1759,7 +1751,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mLock) { currentUserId = mCurrentUserId; } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonClicked", FLAGS_ACCESSIBILITY_MANAGER, @@ -1807,11 +1799,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub @EnforcePermission(STATUS_BAR_SERVICE) public void notifyAccessibilityButtonVisibilityChanged(boolean shown) { notifyAccessibilityButtonVisibilityChanged_enforcePermission(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (mTraceManager.isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_MANAGER)) { mTraceManager.logTrace(LOG_TAG + ".notifyAccessibilityButtonVisibilityChanged", FLAGS_ACCESSIBILITY_MANAGER, "shown=" + shown); @@ -2149,9 +2137,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub this, 0, oldUserState.mUserId)); } - // Announce user changes only if more than one exist. - final boolean announceNewUser = mUserManager.getUsers().size() > 1; - // The user changed. mCurrentUserId = userId; AccessibilityUserState userState = getCurrentUserStateLocked(); @@ -2178,13 +2163,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub // As an initialization step, update the shortcuts for the current user. updateShortcutsForCurrentNavigationMode(); - if (announceNewUser) { - // Schedule announcement of the current user if needed. - mMainHandler.sendMessageDelayed( - obtainMessage(AccessibilityManagerService::announceNewUserIfNeeded, this), - WAIT_FOR_USER_STATE_FULLY_INITIALIZED_MILLIS); - } - for (IUserInitializationCompleteCallback callback : mUserInitializationCompleteCallbacks) { try { @@ -2198,20 +2176,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } } - private void announceNewUserIfNeeded() { - synchronized (mLock) { - AccessibilityUserState userState = getCurrentUserStateLocked(); - if (userState.isHandlingAccessibilityEventsLocked()) { - String message = mContext.getString(R.string.user_switched, - mUserManager.getUserInfo(mCurrentUserId).name); - AccessibilityEvent event = AccessibilityEvent.obtain( - AccessibilityEvent.TYPE_ANNOUNCEMENT); - event.getText().add(message); - sendAccessibilityEventLocked(event, mCurrentUserId); - } - } - } - private void unlockUser(int userId) { synchronized (mLock) { int parentUserId = mSecurityPolicy.resolveProfileParentLocked(userId); @@ -5002,11 +4966,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub throws RemoteException { registerProxyForDisplay_enforcePermission(); mSecurityPolicy.checkForAccessibilityPermissionOrRole(); - int currentUserId; - synchronized (mLock) { - currentUserId = mCurrentUserId; - } - enforceCurrentUserIfVisibleBackgroundEnabled(currentUserId); + enforceCurrentUserIfVisibleBackgroundEnabled(); if (client == null) { return false; } diff --git a/services/art-profile b/services/art-profile index 712fca9c246e..2c7e754c94a2 100644 --- a/services/art-profile +++ b/services/art-profile @@ -49,7 +49,7 @@ HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleMessage(Landroid/os HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidActive(I)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler; HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidCached(IZ)V+]Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl$1;,Lcom/android/server/alarm/AlarmManagerService$7;,Lcom/android/server/job/controllers/BackgroundJobsController$2; HSPLcom/android/server/AppStateTrackerImpl$MyHandler;->removeUid(IZ)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler; -HPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController; +HSPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController; HSPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController; HSPLcom/android/server/AppStateTrackerImpl;->cloneListeners()[Lcom/android/server/AppStateTrackerImpl$Listener; HSPLcom/android/server/AppStateTrackerImpl;->findForcedAppStandbyUidPackageIndexLocked(ILjava/lang/String;)I @@ -57,12 +57,13 @@ HSPLcom/android/server/AppStateTrackerImpl;->isAppBackgroundRestricted(ILjava/la HSPLcom/android/server/AppStateTrackerImpl;->isRunAnyInBackgroundAppOpsAllowed(ILjava/lang/String;)Z+]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl; HSPLcom/android/server/AppStateTrackerImpl;->isRunAnyRestrictedLocked(ILjava/lang/String;)Z HSPLcom/android/server/AppStateTrackerImpl;->isUidActive(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; -HPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z +HSPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z HSPLcom/android/server/AppStateTrackerImpl;->setPowerSaveExemptionListAppIds([I[I[I)V+]Lcom/android/server/AppStateTrackerImpl$MyHandler;Lcom/android/server/AppStateTrackerImpl$MyHandler; HSPLcom/android/server/BatteryService$Led;->updateLightsLocked()V+]Lcom/android/server/lights/LogicalLight;Lcom/android/server/lights/LightsService$LightImpl; HSPLcom/android/server/BatteryService;->processValuesLocked(Z)V+]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/internal/logging/MetricsLogger;Lcom/android/internal/logging/MetricsLogger; HSPLcom/android/server/BatteryService;->rateLimitBatteryChangedBroadcast(Z)Z HSPLcom/android/server/BatteryService;->sendBatteryChangedIntentLocked(Z)V +HSPLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z HSPLcom/android/server/BatteryService;->traceBatteryChangedBroadcastEvent(Landroid/content/Intent;Z)V+]Landroid/content/Intent;Landroid/content/Intent; HSPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V+]Landroid/os/ConditionVariable;Landroid/os/ConditionVariable; HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->getCallingUid()I @@ -73,6 +74,7 @@ HPLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V+]L HSPLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked(IZ)V+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZJIILjava/lang/String;I)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I +HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I HSPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String; HSPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String; HSPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V+]Lcom/android/server/DropBoxManagerInternal$EntrySource;Lcom/android/server/DropBoxManagerService$SimpleEntrySource;]Lcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;Lcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;]Ljava/lang/Thread;Lcom/android/server/IoThread;,Lcom/android/server/ServiceThread;,Lcom/android/server/am/ActivityManagerService$13;,Ljava/lang/Thread; @@ -114,7 +116,7 @@ HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->isExte HSPLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->contains(I)Z HSPLcom/android/server/StorageManagerService;->getMountModeInternal(ILjava/lang/String;)I+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/internal/app/IAppOpsService;Lcom/android/server/appop/AppOpsService; HSPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService; -HSPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo; +HSPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;+]Lcom/android/server/storage/WatchedVolumeInfo;Lcom/android/server/storage/WatchedVolumeInfo;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/StorageManagerService;->isCeStorageUnlocked(I)Z+]Lcom/android/server/StorageManagerService$WatchedUnlockedUsers;Lcom/android/server/StorageManagerService$WatchedUnlockedUsers; HPLcom/android/server/StorageManagerService;->monitor()V+]Landroid/os/IVold;Landroid/os/IVold$Stub$Proxy; HSPLcom/android/server/StorageManagerService;->updateLegacyStorageApps(Ljava/lang/String;IZ)V+]Ljava/util/Set;Landroid/util/ArraySet; @@ -122,12 +124,12 @@ HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemCon HSPLcom/android/server/SystemConfig;->readPermissionAllowlist(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;Ljava/lang/String;)V HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context; -HSPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V+]Lcom/android/server/SystemService;megamorphic_types]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ThreadPoolExecutor; -HSPLcom/android/server/SystemServiceManager;->startBootPhase(Lcom/android/server/utils/TimingsTraceAndSlog;I)V +HPLcom/android/server/TelephonyRegistry$Record;->matchTelephonyCallbackEvent(I)Z+]Ljava/util/Set;Ljava/util/HashSet; HSPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;+]Landroid/os/IBinder;megamorphic_types]Lcom/android/server/TelephonyRegistry$ConfigurationProvider;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/internal/telephony/IPhoneStateListener;Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;,Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;,Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Ljava/util/HashSet; HSPLcom/android/server/ThreadPriorityBooster;->boost()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1; HSPLcom/android/server/ThreadPriorityBooster;->reset()V+]Ljava/lang/ThreadLocal;Lcom/android/server/ThreadPriorityBooster$1; +HSPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V+]Lcom/android/server/UiModeManagerService$IntProperty;Lcom/android/server/UiModeManagerService$1;,Lcom/android/server/UiModeManagerService$2;]Lcom/android/server/twilight/TwilightManager;Lcom/android/server/twilight/TwilightService$1; HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I+]Ljava/time/Clock;Landroid/os/SystemClock$1; HSPLcom/android/server/Watchdog$HandlerChecker;->isHandlerPolling()Z HSPLcom/android/server/Watchdog$HandlerChecker;->run()V+]Lcom/android/server/Watchdog$Monitor;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -136,6 +138,7 @@ HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->checker()Lcom/android HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->customTimeoutMillis()Ljava/util/Optional; HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I+]Lcom/android/server/Watchdog$HandlerChecker;Lcom/android/server/Watchdog$HandlerChecker;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/Watchdog;->run()V +HSPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;+]Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;]Lcom/android/server/accessibility/AccessibilityServiceConnection;Lcom/android/server/accessibility/AccessibilityServiceConnection;]Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/AccessibilityTraceManager;]Lcom/android/server/accessibility/ProxyManager;Lcom/android/server/accessibility/ProxyManager;]Lcom/android/server/accessibility/UiAutomationManager;Lcom/android/server/accessibility/UiAutomationManager;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/accounts/AccountManagerService$7;->onResult(Landroid/os/Bundle;)V HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V+]Landroid/accounts/IAccountAuthenticator;Landroid/accounts/IAccountAuthenticator$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession; @@ -149,13 +152,14 @@ HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClo HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V+]Landroid/accounts/IAccountManagerResponse;Landroid/accounts/IAccountManagerResponse$Stub$Proxy;]Lcom/android/server/accounts/AccountManagerService$Session;Lcom/android/server/accounts/AccountManagerService$12;,Lcom/android/server/accounts/AccountManagerService$7;,Lcom/android/server/accounts/AccountManagerService$RemoveAccountSession; HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V+]Landroid/content/Context;Landroid/app/ContextImpl; HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z+]Ljava/util/HashMap;Ljava/util/LinkedHashMap; +HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;I)[B+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate; HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V+]Landroid/app/INotificationManager;Lcom/android/server/notification/NotificationManagerService$12;,Lcom/android/server/notification/NotificationManagerService$13;]Lcom/android/server/accounts/AccountManagerService$Injector;Lcom/android/server/accounts/AccountManagerService$Injector; -HPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1; +HSPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/accounts/IAccountAuthenticatorCache;Lcom/android/server/accounts/AccountAuthenticatorCache;]Ljava/util/Collection;Ljava/util/Collections$UnmodifiableCollection;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1; HSPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedKeySet; HSPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager; HPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I+]Ljava/util/Map;Ljava/util/HashMap; HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager; -HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; HSPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;+]Ljava/util/Collection;Ljava/util/LinkedHashMap$LinkedValues;]Ljava/util/HashMap;Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedValueIterator; @@ -172,17 +176,18 @@ HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked HPLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z+]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;I[Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; HPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; -HPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; -HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; +HSPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService; -HPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z +HSPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap; HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb;]Ljava/util/Map;Ljava/util/HashMap; -HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager$NameNotFoundException;Landroid/content/pm/PackageManager$NameNotFoundException;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; +HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; HPLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb; HPLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService; HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService; HPLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;I)V+]Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;]Lcom/android/server/accounts/AccountsDb;Lcom/android/server/accounts/AccountsDb; +HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getWritableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase; HPLcom/android/server/accounts/AccountsDb;->beginTransaction()V+]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper; HPLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteOpenHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper; HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J+]Landroid/database/Cursor;Landroid/database/sqlite/SQLiteCursor;]Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper; @@ -200,7 +205,6 @@ HSPLcom/android/server/alarm/Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/la HSPLcom/android/server/alarm/Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z+]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2; HSPLcom/android/server/alarm/Alarm;->setPolicyElapsed(IJ)Z HSPLcom/android/server/alarm/Alarm;->updateWhenElapsed()Z -HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda13;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z HSPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z HPLcom/android/server/alarm/AlarmManagerService$4;->canScheduleExactAlarms(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService; @@ -210,7 +214,7 @@ HSPLcom/android/server/alarm/AlarmManagerService$7$$ExternalSyntheticLambda0;->u HSPLcom/android/server/alarm/AlarmManagerService$7;->updateAlarmsForUid(I)V+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore; HSPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;Lcom/android/server/alarm/AlarmManagerService$DeliveryTracker;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService; HSPLcom/android/server/alarm/AlarmManagerService$AlarmThread;->run()V -HPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue; +HSPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I+]Landroid/util/LongArrayQueue;Landroid/util/LongArrayQueue; HSPLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V+]Lcom/android/server/alarm/AlarmManagerService$Injector;Lcom/android/server/alarm/AlarmManagerService$Injector;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService; HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V HSPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/IAlarmListener;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/app/IAlarmListener$Stub$Proxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/IBinder;Landroid/app/AlarmManager$ListenerWrapper;,Landroid/os/BinderProxy;,Lcom/android/server/alarm/AlarmManagerService$2;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;Lcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService;]Lcom/android/server/alarm/AlarmStore;Lcom/android/server/alarm/LazyAlarmStore;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -224,7 +228,7 @@ HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getCurrentTimeMillis HSPLcom/android/server/alarm/AlarmManagerService$Injector;->getElapsedRealtimeMillis()J HSPLcom/android/server/alarm/AlarmManagerService$Injector;->isAlarmDriverPresent()Z HSPLcom/android/server/alarm/AlarmManagerService$Injector;->setAlarm(IJ)V -HPLcom/android/server/alarm/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V +HSPLcom/android/server/alarm/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V HSPLcom/android/server/alarm/AlarmManagerService$LocalService;->shouldGetBucketElevation(Ljava/lang/String;I)Z+]Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService; HPLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;-><init>(Lcom/android/server/alarm/Alarm;IJJ)V HPLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$WZFEMPWy81l-szSzhRJHOwNjF-M([ILcom/android/server/alarm/Alarm;)Z @@ -270,6 +274,7 @@ HSPLcom/android/server/alarm/LazyAlarmStore;->size()I+]Ljava/util/ArrayList;Ljav HSPLcom/android/server/alarm/LazyAlarmStore;->updateAlarmDeliveries(Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;)Z+]Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLcom/android/server/alarm/MetricsHelper;->pushAlarmScheduled(Lcom/android/server/alarm/Alarm;I)V HSPLcom/android/server/alarm/UserWakeupStore;->getNextWakeupTime()J+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray; +HSPLcom/android/server/alarm/UserWakeupStore;->getUserIdsToWakeup(J)[I+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray; HSPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getPid(Lcom/android/server/am/ProcessRecord;)I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->getPid(Ljava/lang/Object;)I+]Lcom/android/server/am/ActiveServices$ProcessAnrTimer;Lcom/android/server/am/ActiveServices$ProcessAnrTimer; @@ -335,7 +340,7 @@ HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V+]Landroid/u HSPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController; HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V+]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController; -HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/am/ServiceRecord$StartItem;Lcom/android/server/am/ServiceRecord$StartItem;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ActiveServices;->traceInstant(Ljava/lang/String;Lcom/android/server/am/ServiceRecord;)V HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;)V+]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z+]Landroid/app/IServiceConnection;Landroid/app/IServiceConnection$Stub$Proxy;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;]Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/ActivityManagerService$Injector;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -357,14 +362,15 @@ HSPLcom/android/server/am/ActivityManagerService$LocalService;->deletePendingTop HSPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentUserId()I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController; HSPLcom/android/server/am/ActivityManagerService$LocalService;->getRestrictionLevel(I)I HSPLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; +HSPLcom/android/server/am/ActivityManagerService$LocalService;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController; HSPLcom/android/server/am/ActivityManagerService$LocalService;->isAppBad(Ljava/lang/String;I)Z HSPLcom/android/server/am/ActivityManagerService$LocalService;->isAppStartModeDisabled(ILjava/lang/String;)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; -HSPLcom/android/server/am/ActivityManagerService$LocalService;->isAssociatedCompanionApp(II)Z+]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/ArraySet; +HPLcom/android/server/am/ActivityManagerService$LocalService;->isAssociatedCompanionApp(II)Z+]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/ArraySet; HSPLcom/android/server/am/ActivityManagerService$LocalService;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z HSPLcom/android/server/am/ActivityManagerService$LocalService;->isDeviceOwner(I)Z HSPLcom/android/server/am/ActivityManagerService$LocalService;->isPendingTopUid(I)Z HSPLcom/android/server/am/ActivityManagerService$LocalService;->isProfileOwner(I)Z -HPLcom/android/server/am/ActivityManagerService$LocalService;->isTempAllowlistedForFgsWhileInUse(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList; +HSPLcom/android/server/am/ActivityManagerService$LocalService;->isTempAllowlistedForFgsWhileInUse(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList; HSPLcom/android/server/am/ActivityManagerService$LocalService;->isUidActive(I)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; HSPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V HSPLcom/android/server/am/ActivityManagerService$LocalService;->onUidBlockedReasonsChanged(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; @@ -372,24 +378,25 @@ HPLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPac HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList; HSPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V HSPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V -HSPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$-BaOH0nhWmB1j4fAdRCLVwJvRCA(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V+]Landroid/app/ActivityManagerInternal$BindServiceEventListener;Lcom/android/server/am/AppBindServiceEventsTracker; HSPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$bz9CTa7TXqawLiiOdBfpNP_dnbI(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V+]Landroid/app/ActivityManagerInternal$BroadcastEventListener;Lcom/android/server/am/AppBroadcastEventsTracker; -HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/IUiAutomationConnection;Landroid/app/IUiAutomationConnection$Stub$Proxy;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; +HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; HSPLcom/android/server/am/ActivityManagerService$PendingTempAllowlist;-><init>(IJILjava/lang/String;II)V HSPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppErrors;Lcom/android/server/am/AppErrors; HSPLcom/android/server/am/ActivityManagerService;->$r8$lambda$Dp0egYYO_wvfUqcu1s5QAPQddjA([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/ActivityManagerService;->addCreatorToken(Landroid/content/Intent;Ljava/lang/String;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/Set;Landroid/util/ArraySet; HSPLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V+]Landroid/os/DropBoxManager;Landroid/os/DropBoxManager;]Landroid/os/incremental/IncrementalMetrics;Landroid/os/incremental/IncrementalMetrics;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;]Lcom/android/server/am/DropboxRateLimiter;Lcom/android/server/am/DropboxRateLimiter;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService; HSPLcom/android/server/am/ActivityManagerService;->addStartInfoTimestampInternal(IJII)V HSPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;ZLjava/lang/String;)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; +HSPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;J)V HSPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/autofill/AutofillManagerInternal;Lcom/android/server/autofill/AutofillManagerService$LocalService;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderHelper;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/contentcapture/ContentCaptureManagerInternal;Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;]Lcom/android/server/graphics/fonts/FontManagerInternal;Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I HSPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster; HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForProcLockedSection()V+]Lcom/android/server/ThreadPriorityBooster;Lcom/android/server/ThreadPriorityBooster; HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController; -HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController; +HSPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController; HSPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIIZ)I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I @@ -434,8 +441,9 @@ HSPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava HSPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;[I)Z+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl; HSPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z HSPLcom/android/server/am/ActivityManagerService;->isUidActiveLOSP(I)Z +HPLcom/android/server/am/ActivityManagerService;->lambda$checkExcessivePowerUsage$22(JJZZLcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; +HSPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V HSPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;Z)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; -HSPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/stats/pull/StatsPullAtomServiceInternal;Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomServiceInternalImpl; HSPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; HPLcom/android/server/am/ActivityManagerService;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl; HSPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -457,7 +465,7 @@ HSPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IAp HSPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; HSPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;IJLandroid/content/ComponentName;Ljava/lang/String;)V HPLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; -HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HSPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z HSPLcom/android/server/am/ActivityManagerService;->tempAllowlistUidLocked(IJILjava/lang/String;II)V+]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList; HSPLcom/android/server/am/ActivityManagerService;->traceBegin(JLjava/lang/String;Ljava/lang/String;)V HSPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -473,6 +481,7 @@ HSPLcom/android/server/am/AppErrors;->isBadProcess(Ljava/lang/String;I)Z+]Lcom/a HSPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getExitInfosLocked(IILjava/util/List;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V HSPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/function/BiFunction;Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda10;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda14;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;,Lcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda6; HSPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/List;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessaryLocked$2(II[ZLjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Long;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -491,7 +500,7 @@ HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedApps HSPLcom/android/server/am/AppProfiler;->$r8$lambda$O0KXijwG7-p0M_PB8ZuTBcOSGho(Lcom/android/server/am/ProcessRecord;)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/AppProfiler;->collectRssInBackground()V+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/am/AppProfiler;->isLastMemoryLevelNormal()Z -HPLcom/android/server/am/AppProfiler;->isProfilingPss()Z +HSPLcom/android/server/am/AppProfiler;->isProfilingPss()Z HPLcom/android/server/am/AppProfiler;->recordRssSampleLPf(Lcom/android/server/am/ProcessProfileRecord;IJIJJ)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap; HPLcom/android/server/am/AppProfiler;->requestPssLPf(Lcom/android/server/am/ProcessProfileRecord;I)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;+]Landroid/app/IApplicationThread;Landroid/app/IApplicationThread$Stub$Proxy;]Lcom/android/server/am/AppProfiler$ProfileData;Lcom/android/server/am/AppProfiler$ProfileData;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -499,20 +508,23 @@ HSPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V+]Lcom/android/inter HSPLcom/android/server/am/AppProfiler;->updateLowMemStateLSP(IIIJ)V+]Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService; HSPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService; HSPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector; -HSPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerService()Lcom/android/server/am/ActivityManagerService; HSPLcom/android/server/am/AppRestrictionController$Injector;->getAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal; HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->update(III)I HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->forEachPackageInUidLocked(ILcom/android/internal/util/function/TriConsumer;)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/internal/util/function/TriConsumer;Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3; HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(I)I+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap; +HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadOneFromXml(Lcom/android/modules/utils/TypedXmlPullParser;J[JZ)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController; HSPLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController; HSPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IILjava/lang/String;IZZ)Landroid/util/Pair;+]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/apphibernation/AppHibernationManagerInternal;Lcom/android/server/apphibernation/AppHibernationService$LocalService; HSPLcom/android/server/am/AppRestrictionController;->getBackgroundRestrictionExemptionReason(I)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector; HSPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(I)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService; -HSPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(ILjava/lang/String;)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Ljava/util/Set;Ljava/util/Collections$EmptySet; -HSPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExemptionReason(ILjava/lang/String;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector; -HSPLcom/android/server/am/AppRestrictionController;->isCarrierApp(Ljava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; -HSPLcom/android/server/am/AppRestrictionController;->isOnDeviceIdleAllowlist(I)Z +HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(ILjava/lang/String;)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Ljava/util/Set;Ljava/util/Collections$EmptySet; +HPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExemptionReason(ILjava/lang/String;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector; +HSPLcom/android/server/am/AppRestrictionController;->handleUidInactive(IZ)V+]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/am/AppRestrictionController;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z +HPLcom/android/server/am/AppRestrictionController;->isCarrierApp(Ljava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; +HPLcom/android/server/am/AppRestrictionController;->isOnDeviceIdleAllowlist(I)Z HSPLcom/android/server/am/AppRestrictionController;->isOnSystemDeviceIdleAllowlist(I)Z +HPLcom/android/server/am/AppRestrictionController;->isSystemModule(Ljava/lang/String;)Z+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/AppRestrictionController$Injector;]Ljava/io/File;Ljava/io/File;]Ljava/util/HashMap;Ljava/util/HashMap; HSPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUser(III)V HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addTimestampToStartLocked(IJ)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -521,19 +533,18 @@ HSPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->readFromPr HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/AppStartInfoTracker;->addBaseFieldsFromProcessRecord(Landroid/app/ApplicationStartInfo;Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/AppStartInfoTracker;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)Landroid/app/ApplicationStartInfo;+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap; +HSPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Lcom/android/server/am/ProcessRecord;JI)V HSPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Ljava/lang/String;IJI)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap; HSPLcom/android/server/am/ApplicationThreadDeferred;-><init>(Landroid/app/IApplicationThread;Z)V HSPLcom/android/server/am/ApplicationThreadDeferred;->asBinder()Landroid/os/IBinder;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy; -HSPLcom/android/server/am/BaseAppStateEvents;->getEarliest(J)J+]Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;,Lcom/android/server/am/AppFGSTracker$AppFGSPolicy;,Lcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy; -HSPLcom/android/server/am/BaseAppStateEvents;->getTotalEvents(JI)I+]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents; +HPLcom/android/server/am/BaseAppStateEvents;->getEarliest(J)J+]Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;,Lcom/android/server/am/AppFGSTracker$AppFGSPolicy;,Lcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy; HSPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->getMaxTrackingDuration()J HSPLcom/android/server/am/BaseAppStateEventsTracker;->isUidOnTop(I)Z -HSPLcom/android/server/am/BaseAppStatePolicy;->isEnabled()Z HSPLcom/android/server/am/BaseAppStatePolicy;->shouldExemptUid(I)I -HSPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(JI)V+]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/LinkedList;Ljava/util/LinkedList; -HSPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJI)I+]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/Iterator;Ljava/util/LinkedList$DescendingIterator;]Ljava/util/LinkedList;Ljava/util/LinkedList; -HSPLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(JI)V+]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/LinkedList;Ljava/util/LinkedList; -HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getNumOfEventsThreshold()I +HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(JI)V+]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/LinkedList;Ljava/util/LinkedList; +HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJI)I+]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/Iterator;Ljava/util/LinkedList$DescendingIterator;]Ljava/util/LinkedList;Ljava/util/LinkedList; +HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(JI)V+]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Ljava/util/LinkedList;Ljava/util/LinkedList; +HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getNumOfEventsThreshold()I HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->shouldExempt(Ljava/lang/String;I)I+]Lcom/android/server/am/BaseAppStateEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStatePolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy; HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker; HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->handleNewEvent(Ljava/lang/String;I)V+]Lcom/android/server/am/BaseAppStateEvents$Factory;Lcom/android/server/am/AppBindServiceEventsTracker;,Lcom/android/server/am/AppBroadcastEventsTracker;]Lcom/android/server/am/BaseAppStateEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEvents;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;]Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;,Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;]Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker$Injector;]Lcom/android/server/am/UidProcessMap;Lcom/android/server/am/UidProcessMap; @@ -542,25 +553,25 @@ HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;-><ini HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;->run()V -HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V +HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V -HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V +HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda25;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda25;->run()V HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda29;->run()V -HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;->run()V +HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V -HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;->run()V +HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda58;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda58;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V -HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V +HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IIJJ)V -HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;->run()V +HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda64;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;->run()V @@ -570,8 +581,8 @@ HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;-><init HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;->run()V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;->run()V +HSPLcom/android/server/am/BatteryStatsService$LocalService;->getOwnerUid(I)I+]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver; HPLcom/android/server/am/BatteryStatsService$StatsPerUidLogger;->addStatsForPowerComponent(Ljava/util/List;Lcom/android/server/am/BatteryStatsService$StatsPerUidLogger$SessionInfo;IIFJLandroid/os/BatteryConsumer;I)Z+]Landroid/os/BatteryConsumer;Landroid/os/AggregateBatteryConsumer;,Landroid/os/UidBatteryConsumer; -HPLcom/android/server/am/BatteryStatsService$StatsPerUidLogger;->clampPowerMah(DLjava/lang/String;)F HPLcom/android/server/am/BatteryStatsService$StatsPerUidLogger;->logStats(Landroid/os/BatteryUsageStats;Ljava/util/List;)I+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; @@ -580,10 +591,11 @@ HSPLcom/android/server/am/BatteryStatsService;->fillLowPowerStats(Lcom/android/i HSPLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String;+]Landroid/power/PowerStatsInternal;Lcom/android/server/powerstats/PowerStatsService$LocalService;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture; HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartLaunch$107(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartRunning$105(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; -HSPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$108(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; +HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$108(ILjava/lang/String;Ljava/lang/String;JJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelock$24(IILjava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelock$25(IILjava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/am/BatteryStatsService;->lambda$noteUidProcessState$14(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/wakeups/CpuWakeupStats;Lcom/android/server/power/stats/wakeups/CpuWakeupStats; +HSPLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$97(IIIIIIIIJJJJ)V+]Lcom/android/server/power/stats/BatteryExternalStatsWorker;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HPLcom/android/server/am/BatteryStatsService;->monitor()V HSPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V+]Landroid/content/Context;Landroid/app/ContextImpl; @@ -594,7 +606,7 @@ HSPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I HSPLcom/android/server/am/BatteryStatsService;->noteServiceStartLaunch(ILjava/lang/String;Ljava/lang/String;)V HSPLcom/android/server/am/BatteryStatsService;->noteServiceStartRunning(ILjava/lang/String;Ljava/lang/String;)V HSPLcom/android/server/am/BatteryStatsService;->noteServiceStopLaunch(ILjava/lang/String;Ljava/lang/String;)V -HPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V +HSPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V HSPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V @@ -613,12 +625,13 @@ HSPLcom/android/server/am/BroadcastController$1;->isPackageForFilter(Ljava/lang/ HSPLcom/android/server/am/BroadcastController$1;->newResult(Lcom/android/server/pm/Computer;Lcom/android/server/am/BroadcastFilter;IIJ)Lcom/android/server/am/BroadcastFilter; HSPLcom/android/server/am/BroadcastController$1;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;+]Lcom/android/server/am/BroadcastController$1;Lcom/android/server/am/BroadcastController$1; HSPLcom/android/server/am/BroadcastController;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V +HPLcom/android/server/am/BroadcastController;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I HSPLcom/android/server/am/BroadcastController;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I HSPLcom/android/server/am/BroadcastController;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;Lcom/android/server/am/BroadcastSentEventRecord;)I+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;megamorphic_types]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/am/BroadcastController;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController; HSPLcom/android/server/am/BroadcastController;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/am/BroadcastController;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;II[I[I)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ComponentAliasResolver$Resolution;Lcom/android/server/am/ComponentAliasResolver$Resolution;]Lcom/android/server/am/ComponentAliasResolver;Lcom/android/server/am/ComponentAliasResolver;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList; -HSPLcom/android/server/am/BroadcastController;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; +HSPLcom/android/server/am/BroadcastController;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V+]Landroid/app/BroadcastOptions;Landroid/app/BroadcastOptions; HSPLcom/android/server/am/BroadcastController;->enforceBroadcastOptionPermissionsInternal(Landroid/os/Bundle;I)V HSPLcom/android/server/am/BroadcastController;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl; HSPLcom/android/server/am/BroadcastController;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet; @@ -628,13 +641,13 @@ HSPLcom/android/server/am/BroadcastController;->isInstantApp(Lcom/android/server HSPLcom/android/server/am/BroadcastController;->notifyBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V HSPLcom/android/server/am/BroadcastController;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent; HSPLcom/android/server/am/BroadcastController;->registerReceiverWithFeatureTraced(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/app/IApplicationThread;Landroid/app/ActivityThread$ApplicationThread;,Landroid/app/IApplicationThread$Stub$Proxy;,Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastQueueImpl;,Lcom/android/server/am/BroadcastQueueModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/sdksandbox/SdkSandboxManagerLocal;Lcom/android/server/sdksandbox/SdkSandboxManagerService$LocalImpl;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator; -HPLcom/android/server/am/BroadcastController;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Ljava/util/HashMap;Ljava/util/HashMap; +HSPLcom/android/server/am/BroadcastController;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/IntentResolver;Lcom/android/server/am/BroadcastController$1;]Ljava/util/HashMap;Ljava/util/HashMap; HSPLcom/android/server/am/BroadcastController;->rotateBroadcastStatsIfNeededLocked()V HSPLcom/android/server/am/BroadcastController;->traceBroadcastIntentBegin(Landroid/content/Intent;Landroid/content/IIntentReceiver;ZZIII)I+]Landroid/content/Intent;Landroid/content/Intent; HSPLcom/android/server/am/BroadcastController;->traceBroadcastIntentEnd(I)V HSPLcom/android/server/am/BroadcastController;->traceRegistrationBegin(Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;I)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy; -HPLcom/android/server/am/BroadcastController;->traceUnregistrationBegin(Landroid/content/IIntentReceiver;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy; -HPLcom/android/server/am/BroadcastController;->unregisterReceiverTraced(Landroid/content/IIntentReceiver;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;]Ljava/util/HashMap;Ljava/util/HashMap; +HSPLcom/android/server/am/BroadcastController;->traceUnregistrationBegin(Landroid/content/IIntentReceiver;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy; +HSPLcom/android/server/am/BroadcastController;->unregisterReceiverTraced(Landroid/content/IIntentReceiver;)V+]Landroid/content/IIntentReceiver;Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;,Landroid/content/IIntentReceiver$Stub$Proxy;]Lcom/android/server/am/BroadcastController;Lcom/android/server/am/BroadcastController;]Ljava/util/HashMap;Ljava/util/HashMap; HSPLcom/android/server/am/BroadcastController;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;+]Landroid/content/Intent;Landroid/content/Intent; HSPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZZZLandroid/content/pm/ApplicationInfo;Lcom/android/server/compat/PlatformCompat;)V HSPLcom/android/server/am/BroadcastFilter;->calculateAdjustedPriority(IILandroid/content/pm/ApplicationInfo;Lcom/android/server/compat/PlatformCompat;)I+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; @@ -799,13 +812,16 @@ HSPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/a HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/CachedAppOptimizer;->getPerProcessAggregatedCompactStat(Ljava/lang/String;)Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap; +HPLcom/android/server/am/CachedAppOptimizer;->getPerSourceAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;+]Ljava/util/EnumMap;Ljava/util/EnumMap; HPLcom/android/server/am/CachedAppOptimizer;->lambda$binderErrorInternal$3(Ljava/lang/Integer;Ljava/lang/Integer;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer; +HSPLcom/android/server/am/CachedAppOptimizer;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/CachedAppOptimizer;->onOomAdjustChanged(IILcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer; HPLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/CachedAppOptimizer;->postUidFrozenMessage(IZ)V HPLcom/android/server/am/CachedAppOptimizer;->traceAppFreeze(Ljava/lang/String;II)V HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/Freezer;Lcom/android/server/am/Freezer;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;IZ)V +HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer; HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;IJ)V+]Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer; HPLcom/android/server/am/CachedAppOptimizer;->updateEarliestFreezableTime(Lcom/android/server/am/ProcessRecord;J)J HSPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z @@ -826,7 +842,7 @@ HSPLcom/android/server/am/ConnectionRecord;->trackProcState(II)V HSPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V HSPLcom/android/server/am/ContentProviderConnection;->adjustCounts(II)V HPLcom/android/server/am/ContentProviderConnection;->decrementCount(Z)I -HPLcom/android/server/am/ContentProviderConnection;->incrementCount(Z)I +HSPLcom/android/server/am/ContentProviderConnection;->incrementCount(Z)I HSPLcom/android/server/am/ContentProviderConnection;->initializeCount(Z)V HSPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V @@ -859,10 +875,10 @@ HSPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ HSPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z HSPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z HSPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;Z)Landroid/app/ContentProviderHolder; -HSPLcom/android/server/am/ContentProviderRecord;->onProviderPublishStatusLocked(Z)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJJIIJ)V HSPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/am/FgsTempAllowList;->get(I)Landroid/util/Pair;+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList; +HSPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z+]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList; HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeUid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats;Landroid/os/BatteryStats$Uid;)V+]Landroid/os/BatteryStats$ControllerActivityCounter;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Landroid/os/BatteryStats$LongCounter;Lcom/android/server/power/stats/BatteryStatsImpl$1;,Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;,Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Landroid/os/BatteryStats$Uid$Sensor;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/os/BatteryStats$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Landroid/os/BatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl;]Landroid/os/health/HealthStatsWriter;Landroid/os/health/HealthStatsWriter;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/HealthStatsBatteryStatsWriter;Lcom/android/server/am/HealthStatsBatteryStatsWriter;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet; HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V @@ -880,7 +896,7 @@ HSPLcom/android/server/am/OomAdjuster;->checkAndEnqueueOomAdjTargetLocked(Lcom/a HPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z+]Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/OomAdjuster;->computeProviderHostOomAdjLSP(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; -HSPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityServiceConnectionsHolder;Lcom/android/server/wm/ActivityServiceConnectionsHolder; +HSPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/OomAdjuster;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V HSPLcom/android/server/am/OomAdjuster;->enqueuePendingTopAppIfNecessaryLSP()I+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService; HSPLcom/android/server/am/OomAdjuster;->evaluateConnectionPrelude(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; @@ -896,12 +912,12 @@ HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V+]Landroid/os/PowerManag HSPLcom/android/server/am/OomAdjuster;->isBackupProcess(Lcom/android/server/am/ProcessRecord;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/am/OomAdjuster;->isDeviceFullyAwake()Z HSPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; -HPLcom/android/server/am/OomAdjuster;->maybeSetProcessFollowUpUpdateLocked(Lcom/android/server/am/ProcessRecord;JJ)V +HSPLcom/android/server/am/OomAdjuster;->maybeSetProcessFollowUpUpdateLocked(Lcom/android/server/am/ProcessRecord;JJ)V HSPLcom/android/server/am/OomAdjuster;->maybeUpdateLastTopTime(Lcom/android/server/am/ProcessStateRecord;J)V HSPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/OomAdjuster;->oomAdjReasonToString(I)Ljava/lang/String; HSPLcom/android/server/am/OomAdjuster;->postUpdateOomAdjInnerLSP(ILcom/android/server/am/ActiveUids;JJJZ)V+]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl; -HPLcom/android/server/am/OomAdjuster;->scheduleFollowUpOomAdjusterUpdateLocked(JJ)V +HSPLcom/android/server/am/OomAdjuster;->scheduleFollowUpOomAdjusterUpdateLocked(JJ)V HSPLcom/android/server/am/OomAdjuster;->setAttachingProcessStatesLSP(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/OomAdjuster$Injector;Lcom/android/server/am/OomAdjuster$Injector;]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/OomAdjuster;->setIntermediateAdjLSP(Lcom/android/server/am/ProcessRecord;III)I HSPLcom/android/server/am/OomAdjuster;->setIntermediateProcStateLSP(Lcom/android/server/am/ProcessRecord;II)V @@ -962,16 +978,17 @@ HSPLcom/android/server/am/PackageList;->containsKey(Ljava/lang/Object;)Z HSPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/BiConsumer;)V+]Ljava/util/function/BiConsumer;Lcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1; HSPLcom/android/server/am/PackageList;->getPackageList()[Ljava/lang/String; HSPLcom/android/server/am/PackageList;->searchEachPackage(Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;Lcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2; -HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController; -HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;ZI)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/util/HashMap;Ljava/util/HashMap; -HSPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; +HSPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController; +HSPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;ZI)V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/util/HashMap;Ljava/util/HashMap; +HSPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/HashMap;Ljava/util/HashMap; -HSPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer; -HPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;I)V+]Lcom/android/server/AlarmManagerInternal;Lcom/android/server/alarm/AlarmManagerService$LocalService; +HSPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; +HSPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;I)V+]Lcom/android/server/AlarmManagerInternal;Lcom/android/server/alarm/AlarmManagerService$LocalService; HSPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/os/IBinder;Lcom/android/server/wm/ActivityRecord$Token; HSPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z+]Landroid/content/Intent;Landroid/content/Intent; HSPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I HSPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentRecord$Key;I)V +HSPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V+]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Ljava/util/HashMap;Ljava/util/HashMap; HPLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;+]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService; HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Landroid/content/IIntentReceiver;Landroid/app/PendingIntent$FinishedDispatcher;,Landroid/content/IIntentReceiver$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentController;]Lcom/android/server/am/UserController;Lcom/android/server/am/UserController;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions; HSPLcom/android/server/am/PendingStartActivityUids;->delete(IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; @@ -992,6 +1009,7 @@ HSPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(ZZII HSPLcom/android/server/am/ProcessErrorStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V HSPLcom/android/server/am/ProcessErrorStateRecord;->isCrashing()Z HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V +HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;->run()V HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;->run()V HSPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService; @@ -1010,6 +1028,7 @@ HSPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBind HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J HSPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V HSPLcom/android/server/am/ProcessList;->getNumForegroundServices()Landroid/util/Pair;+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl; HSPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(ZIZII)Ljava/util/List;+]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ProcessList;->getUidProcStateLOSP(I)I @@ -1025,6 +1044,7 @@ HPLcom/android/server/am/ProcessList;->offerLruProcessInternalLSP(Lcom/android/s HSPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/FgsTempAllowList;Lcom/android/server/am/FgsTempAllowList;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;,Lcom/android/server/am/ActiveServices$$ExternalSyntheticLambda7; +HPLcom/android/server/am/ProcessList;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/AppZygote;Landroid/os/AppZygote;]Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTrackerImpl;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;IZZLjava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/storage/StorageManagerInternal;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;]Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -1054,6 +1074,7 @@ HSPLcom/android/server/am/ProcessReceiverRecord;->addReceiver(Lcom/android/serve HSPLcom/android/server/am/ProcessReceiverRecord;->numberOfReceivers()I HSPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z +HSPLcom/android/server/am/ProcessRecord;->forEachConnectionHost(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda13;,Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda14; HSPLcom/android/server/am/ProcessRecord;->getActiveInstrumentation()Lcom/android/server/am/ActiveInstrumentation; HSPLcom/android/server/am/ProcessRecord;->getHostingRecord()Lcom/android/server/am/HostingRecord; HSPLcom/android/server/am/ProcessRecord;->getLastActivityTime()J @@ -1071,6 +1092,7 @@ HSPLcom/android/server/am/ProcessRecord;->getThread()Landroid/app/IApplicationTh HSPLcom/android/server/am/ProcessRecord;->getUidRecord()Lcom/android/server/am/UidRecord; HSPLcom/android/server/am/ProcessRecord;->getWaitingToKill()Ljava/lang/String; HSPLcom/android/server/am/ProcessRecord;->getWindowProcessController()Lcom/android/server/wm/WindowProcessController; +HSPLcom/android/server/am/ProcessRecord;->hasActiveInstrumentation()Z HSPLcom/android/server/am/ProcessRecord;->hasActivities()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/ProcessRecord;->hasActivitiesOrRecentTasks()Z+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/ProcessRecord;->isCached()Z @@ -1085,8 +1107,8 @@ HSPLcom/android/server/am/ProcessRecord;->isThreadReady()Z HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/ProcessRecord;->makeActive(Lcom/android/server/am/ApplicationThreadDeferred;Lcom/android/server/am/ProcessStatsService;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z+]Lcom/android/server/am/OomAdjuster;Lcom/android/server/am/OomAdjusterModernImpl;]Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/server/am/ProcessErrorStateRecord;]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/am/ProcessStateController;Lcom/android/server/am/ProcessStateController; -HPLcom/android/server/am/ProcessRecord;->onProcessUnfrozen()V HSPLcom/android/server/am/ProcessRecord;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V+]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; +HSPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V HSPLcom/android/server/am/ProcessRecord;->setBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V HSPLcom/android/server/am/ProcessRecord;->setLastActivityTime(J)V HSPLcom/android/server/am/ProcessRecord;->setLruSeq(I)V @@ -1094,7 +1116,7 @@ HSPLcom/android/server/am/ProcessRecord;->setPid(I)V+]Lcom/android/server/am/Pro HSPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V HSPLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/ProcessServiceRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V -HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; +HPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUidsOfNewService(Lcom/android/server/am/ServiceRecord;)V+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/am/ProcessServiceRecord;->addConnection(Lcom/android/server/am/ConnectionRecord;)V HSPLcom/android/server/am/ProcessServiceRecord;->addSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V @@ -1145,6 +1167,7 @@ HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHeavyWeight()Z+]Lcom/a HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsHomeProcess()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsPreviousProcess()Z+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/am/ProcessStateRecord;->getCachedIsReceivingBroadcast([I)Z+]Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService; +HSPLcom/android/server/am/ProcessStateRecord;->getCurCapability()I HSPLcom/android/server/am/ProcessStateRecord;->getCurProcState()I HSPLcom/android/server/am/ProcessStateRecord;->getSetAdj()I HSPLcom/android/server/am/ProcessStateRecord;->getSetProcState()I @@ -1208,7 +1231,6 @@ HSPLcom/android/server/am/UidObserverController;->enqueueUidChange(Lcom/android/ HSPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/am/UidRecord;-><init>(ILcom/android/server/am/ActivityManagerService;)V HSPLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z -HSPLcom/android/server/am/UidRecord;->forEachProcess(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;Lcom/android/server/am/ActiveUids$$ExternalSyntheticLambda0;,Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda3; HSPLcom/android/server/am/UidRecord;->getMinProcAdj()I+]Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord; HSPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService; HSPLcom/android/server/am/UserController;->exists(I)Z+]Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/UserController$Injector;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService; @@ -1258,13 +1280,14 @@ HSPLcom/android/server/appop/AppOpsService;->checkOperationImpl(IILjava/lang/Str HSPLcom/android/server/appop/AppOpsService;->checkOperationRawForDevice(IILjava/lang/String;Ljava/lang/String;I)I HSPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I HSPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;ZI)V+]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList$Builder$1;,Lcom/android/server/appop/AppOpsService$8;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[ILjava/lang/String;)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl; -HPLcom/android/server/appop/AppOpsService;->doForAllAttributedOpsInUidLocked(ILjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda17;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda18;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda19; +HSPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[ILjava/lang/String;)Ljava/util/ArrayList;+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/Map;Landroid/util/ArrayMap; +HPLcom/android/server/appop/AppOpsService;->doForAllAttributedOpsInUidLocked(ILjava/util/function/Consumer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda17;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda18;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda19;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda20; HSPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/appop/AppOpsService;->filterAppAccessUnlocked(Ljava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; HSPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;)V HSPLcom/android/server/appop/AppOpsService;->finishOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V HSPLcom/android/server/appop/AppOpsService;->finishOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/server/appop/AppOpsService;->getAppOpMode(IILjava/lang/String;Ljava/lang/String;IZZ)I+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator; HSPLcom/android/server/appop/AppOpsService;->getBypassforPackage(Lcom/android/server/pm/pkg/PackageState;)Landroid/app/AppOpsManager$RestrictionBypass;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Op; HSPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IIZ)Lcom/android/server/appop/AppOpsService$Op; @@ -1281,7 +1304,7 @@ HSPLcom/android/server/appop/AppOpsService;->isOpAllowedForUid(I)Z HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedDueToSuspend(ILjava/lang/String;I)Z+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$RestrictionBypass;Z)Z HSPLcom/android/server/appop/AppOpsService;->isSpecialPackage(ILjava/lang/String;)Z -HSPLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService; +HSPLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z HSPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp; HSPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp; HSPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZLjava/lang/String;ZI)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator; @@ -1293,12 +1316,11 @@ HSPLcom/android/server/appop/AppOpsService;->onUidStateChanged(IIZ)V+]Landroid/u HSPLcom/android/server/appop/AppOpsService;->readAttributionOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser; HSPLcom/android/server/appop/AppOpsService;->readOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser; HSPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAsyncLocked(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V -HSPLcom/android/server/appop/AppOpsService;->resolveUid(Ljava/lang/String;)I HSPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IZII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;III)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/appop/AppOpsService;->scheduleWriteLocked()V -HPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator; +HSPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator; HSPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp; HSPLcom/android/server/appop/AppOpsService;->startOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService; HSPLcom/android/server/appop/AppOpsService;->startOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IIZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;+]Lcom/android/server/appop/AppOpsCheckingServiceInterface;Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService; @@ -1306,16 +1328,15 @@ HSPLcom/android/server/appop/AppOpsService;->startWatchingModeWithFlags(ILjava/l HSPLcom/android/server/appop/AppOpsService;->switchPackageIfBootTimeOrRarelyUsedLocked(Ljava/lang/String;)V+]Ljava/util/concurrent/ThreadLocalRandom;Ljava/util/concurrent/ThreadLocalRandom; HPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V+]Lcom/android/server/appop/AppOpsUidStateTracker;Lcom/android/server/appop/AppOpsUidStateTrackerImpl; -HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult; -HSPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/compat/IPlatformCompat;Lcom/android/server/compat/PlatformCompat;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V+]Landroid/content/Context;Landroid/app/ContextImpl; HPLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V+]Landroid/util/AtomicFile;Landroid/util/AtomicFile;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V -HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13; +HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda12;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;,Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda14; HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;->run()V +HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda1;->run()V HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->execute(Ljava/lang/Runnable;)V -HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->executeDelayed(Ljava/lang/Runnable;J)V +HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->executeDelayed(Ljava/lang/Runnable;J)V HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog; HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog; HSPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+]Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog; @@ -1339,10 +1360,19 @@ HSPLcom/android/server/appop/AttributedOp;->accessed(JJILjava/lang/String;Ljava/ HSPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; HSPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; HSPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/Pools$SimplePool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService; +HSPLcom/android/server/appop/AttributedOp;->isRunning()Z HSPLcom/android/server/appop/AttributedOp;->onUidStateChanged(I)V HSPLcom/android/server/appop/AttributedOp;->rejected(II)V HSPLcom/android/server/appop/AttributedOp;->rejected(JII)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; HSPLcom/android/server/appop/AttributedOp;->startedOrPaused(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIZZ)V+]Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService;]Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool; +HSPLcom/android/server/appop/DiscreteOpsRegistry;->isDiscreteOp(II)Z +HPLcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteDeviceOp;->addDiscreteAccess(Ljava/lang/String;IIJJII)V+]Ljava/util/List;Ljava/util/ArrayList; +HPLcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteOp;->getOrCreateDiscreteDeviceOp(Ljava/lang/String;)Lcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteDeviceOp; +HPLcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteOps;->getOrCreateDiscreteUidOps(I)Lcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteUidOps; +HPLcom/android/server/appop/DiscreteOpsXmlRegistry$DiscretePackageOps;->getOrCreateDiscreteOp(I)Lcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteOp; +HPLcom/android/server/appop/DiscreteOpsXmlRegistry$DiscreteUidOps;->getOrCreateDiscretePackageOps(Ljava/lang/String;)Lcom/android/server/appop/DiscreteOpsXmlRegistry$DiscretePackageOps; +HSPLcom/android/server/appop/DiscreteOpsXmlRegistry;->recordDiscreteAccess(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;IIJJIII)V +HPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/LinkedList;]Ljava/util/Set;Landroid/util/ArraySet;,Ljava/util/Collections$EmptySet; HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser; HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser; HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser; @@ -1369,11 +1399,13 @@ HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersFor HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager; HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;+]Ljava/util/ArrayList;Ljava/util/ArrayList; -HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseAppWidgetProviderInfo(Landroid/content/Context;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/appwidget/AppWidgetProviderInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Ljava/lang/CharSequence;Ljava/lang/String; HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeProvider(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Z)V+]Landroid/util/IntArray;Landroid/util/IntArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToStreamLocked(Ljava/io/OutputStream;I)Z+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator; HPLcom/android/server/appwidget/AppWidgetXmlUtil;->writeAppWidgetProviderInfoLocked(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/appwidget/AppWidgetProviderInfo;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; HSPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService;]Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SystemServerAdapter;]Ljava/util/Set;Ljava/util/TreeSet; +HSPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I+]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService; HSPLcom/android/server/audio/AudioService;->getDeviceSetForStream(I)Ljava/util/Set;+]Lcom/android/server/audio/AudioService$VolumeStreamState;Lcom/android/server/audio/AudioService$VolumeStreamState;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService; +HSPLcom/android/server/audio/AudioService;->getStreamVolume(II)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/audio/AudioService$VolumeStreamState;Lcom/android/server/audio/AudioService$VolumeStreamState;]Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService; HSPLcom/android/server/audio/AudioService;->getVssForStreamOrDefault(I)Lcom/android/server/audio/AudioService$VolumeStreamState;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/audio/AudioService;->selectOneAudioDevice(Ljava/util/Set;)I+]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/Set;Ljava/util/TreeSet; HSPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributesImpl(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;+]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; @@ -1384,6 +1416,7 @@ HPLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHas HSPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService; HPLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;+]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet; HPLcom/android/server/backup/TransportManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V+]Ljava/util/Map;Landroid/util/ArrayMap; +HPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray; HPLcom/android/server/backup/UserBackupManagerService;->isAppEligibleForBackup(Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/TransportManager;]Lcom/android/server/backup/utils/BackupEligibilityRules;Lcom/android/server/backup/utils/BackupEligibilityRules; HPLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/TransportManager; HPLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Handler;)V @@ -1397,7 +1430,9 @@ HPLcom/android/server/backup/transport/TransportConnection;->unbind(Ljava/lang/S HPLcom/android/server/backup/transport/TransportConnectionManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)V+]Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection;]Ljava/util/Map;Ljava/util/WeakHashMap; HPLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)Lcom/android/server/backup/transport/TransportConnection;+]Ljava/util/Map;Ljava/util/WeakHashMap; HPLcom/android/server/backup/transport/TransportUtils;->formatMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/backup/utils/BackupEligibilityRules;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/backup/utils/BackupEligibilityRules;Lcom/android/server/backup/utils/BackupEligibilityRules;]Ljava/util/Set;Ljava/util/HashSet; HPLcom/android/server/backup/utils/SparseArrayUtils;->union(Landroid/util/SparseArray;)Ljava/util/HashSet;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HPLcom/android/server/biometrics/PreAuthInfo;->create(Landroid/app/trust/ITrustManager;Landroid/app/admin/DevicePolicyManager;Lcom/android/server/biometrics/BiometricService$SettingObserver;Ljava/util/List;ILandroid/hardware/biometrics/PromptInfo;Ljava/lang/String;ZLandroid/content/Context;Lcom/android/server/biometrics/BiometricCameraManager;Landroid/os/UserManager;)Lcom/android/server/biometrics/PreAuthInfo;+]Landroid/app/trust/ITrustManager;Lcom/android/server/trust/TrustManagerService$3;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/hardware/biometrics/PromptInfo;Landroid/hardware/biometrics/PromptInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/biometrics/BiometricService$SettingObserver;Lcom/android/server/biometrics/BiometricService$SettingObserver;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/List;Ljava/util/concurrent/CopyOnWriteArrayList; HSPLcom/android/server/biometrics/sensors/BiometricServiceRegistry;->getProviderForSensor(I)Lcom/android/server/biometrics/sensors/BiometricServiceProvider;+]Lcom/android/server/biometrics/sensors/BiometricServiceProvider;Lcom/android/server/biometrics/sensors/face/aidl/FaceProvider;,Lcom/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForPackageForUser(Landroid/content/pm/PackageStats;Ljava/lang/String;Landroid/os/UserHandle;Z)V HPLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;->augmentStatsForUid(Landroid/content/pm/PackageStats;IZ)V @@ -1421,9 +1456,9 @@ HSPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/Str HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUid(JI)Z+]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternal(JI)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; -HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternalNoLogging(JI)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/compat/PlatformCompat;Lcom/android/server/compat/PlatformCompat; HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLandroid/content/pm/ApplicationInfo;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter; HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternalNoLogging(JLandroid/content/pm/ApplicationInfo;)Z +HSPLcom/android/server/compat/config/Change;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Change; HPLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->getNetworkCapabilities(I)Landroid/net/NetworkCapabilities;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(JZ)V+]Lcom/android/internal/util/RingBuffer;Lcom/android/internal/util/RingBuffer;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback; @@ -1442,6 +1477,7 @@ HSPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLoc HSPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/List;Landroid/net/Uri$PathSegments; HSPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Ljava/util/List;Landroid/net/Uri$PathSegments; HSPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z+]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;,Landroid/database/IContentObserver$Stub$Proxy;]Lcom/android/internal/os/BinderDeathDispatcher;Lcom/android/internal/os/BinderDeathDispatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HPLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine; HSPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HPLcom/android/server/content/ContentService;->getSyncAdapterPackageAsUser(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager; HSPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager; @@ -1454,9 +1490,13 @@ HSPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lan HSPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager; HSPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V +HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger; +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation; +HPLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I+]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine; HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V+]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger;]Lcom/android/server/content/SyncManager$SyncTimeTracker;Lcom/android/server/content/SyncManager$SyncTimeTracker; HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V+]Landroid/accounts/Account;Landroid/accounts/Account;]Landroid/app/NotificationManager;Landroid/app/NotificationManager;]Landroid/content/ISyncAdapter;Landroid/content/ISyncAdapter$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/content/SyncLogger;Lcom/android/server/content/SyncLogger;]Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncManager$SyncHandler;]Lcom/android/server/content/SyncManagerConstants;Lcom/android/server/content/SyncManagerConstants;]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation; +HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;ZZ)I+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/SyncAdaptersCache;Landroid/content/SyncAdaptersCache; HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/job/JobScheduler;Landroid/app/JobSchedulerImpl;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine; @@ -1473,6 +1513,7 @@ HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String; HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String; HSPLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;+]Ljava/util/HashMap;Ljava/util/HashMap; +HPLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I HSPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;+]Ljava/util/HashMap;Ljava/util/HashMap; HPLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J+]Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;]Lcom/android/server/content/SyncStorageEngine;Lcom/android/server/content/SyncStorageEngine;]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/content/SyncStorageEngine;->reportChange(ILjava/lang/String;I)V+]Landroid/content/ISyncStatusObserver;Landroid/content/ISyncStatusObserver$Stub$Proxy;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList; @@ -1488,6 +1529,7 @@ HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->delta(Lcom/android/serve HSPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->getTotalTimeMillis()J HSPLcom/android/server/cpu/CpuInfoReader;->calculateAvgCpuFreq(Landroid/util/LongSparseLongArray;)J+]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray; HSPLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/cpu/CpuInfoReader;->readCpuFreqKHz(Ljava/io/File;)J+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/cpu/CpuInfoReader;->readCumulativeCpuUsageStats()Landroid/util/SparseArray;+]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/cpu/CpuInfoReader;->readDynamicPolicyInfo()Landroid/util/SparseArray;+]Landroid/util/IntArray;Landroid/util/IntArray;]Landroid/util/SparseArray;Landroid/util/SparseArray; @@ -1496,24 +1538,25 @@ HSPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->populateLatestCpuAvail HSPLcom/android/server/cpu/CpuMonitorService;->monitorCpuStats()V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HPLcom/android/server/devicepolicy/ActiveAdmin;->getUid()I HSPLcom/android/server/devicepolicy/ActiveAdmin;->getUserHandle()Landroid/os/UserHandle; -HSPLcom/android/server/devicepolicy/ActiveAdmin;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Landroid/util/ArraySet; HSPLcom/android/server/devicepolicy/CallerIdentity;-><init>(ILjava/lang/String;Landroid/content/ComponentName;)V HSPLcom/android/server/devicepolicy/CallerIdentity;->getUserId()I HSPLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->writeLocalPoliciesInner(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/app/admin/PolicyKey;Landroid/app/admin/NoArgsPolicyKey;,Landroid/app/admin/PackagePolicyKey;,Landroid/app/admin/UserRestrictionPolicyKey;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda37;->getOrThrow()Ljava/lang/Object; +HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda79;->getOrThrow()Ljava/lang/Object; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I +HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal; +HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveDeviceOwner(I)Z HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveProfileOwner(I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureLocked()V HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/ActiveAdmin;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(I)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForUserAndItsManagedProfilesLocked(ILjava/util/function/Predicate;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector; -HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List;+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;+]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners; -HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponentOnUser(I)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponentOnUser(I)Landroid/content/ComponentName;+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I+]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;+]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger; HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; @@ -1523,6 +1566,8 @@ HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParen HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyData;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyData; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z +HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasFullCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasPermission(Ljava/lang/String;Ljava/lang/String;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/List;Ljava/util/ImmutableCollections$ListN; HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDefaultDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerLocked(Lcom/android/server/devicepolicy/CallerIdentity;)Z+]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners; @@ -1530,26 +1575,28 @@ HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfil HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUidProfileOwnerLocked(I)Z+]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Ljava/lang/String;)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getActiveAdminsForUserAndItsManagedProfilesLocked$21(ILjava/util/ArrayList;Ljava/util/function/Predicate;)V+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/devicepolicy/ActiveAdmin;Lcom/android/server/devicepolicy/ActiveAdmin;]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda114;,Lcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda116; +HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$86(I)Ljava/lang/Integer;+]Landroid/os/UserManager;Landroid/os/UserManager; HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z+]Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationExemptions(Ljava/lang/String;Ljava/lang/String;[I)V+]Landroid/app/admin/DevicePolicyEventLogger;Landroid/app/admin/DevicePolicyEventLogger;]Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector; -HSPLcom/android/server/devicepolicy/EnforcingAdmin;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I HSPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName; HSPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z HSPLcom/android/server/devicepolicy/Owners;->isProfileOwnerOfOrganizationOwnedDevice(I)Z -HSPLcom/android/server/display/AutomaticBrightnessController;->configure(ILandroid/hardware/display/BrightnessConfiguration;FZFZIIZZ)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/BrightnessThrottler;Lcom/android/server/display/BrightnessThrottler;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController; +HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F +HSPLcom/android/server/display/AutomaticBrightnessController;->configure(ILandroid/hardware/display/BrightnessConfiguration;FZFZIIZZ)V+]Lcom/android/server/display/AutomaticBrightnessController;Lcom/android/server/display/AutomaticBrightnessController;]Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Lcom/android/server/display/brightness/clamper/BrightnessClamperController; HSPLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/NormalBrightnessModeController;Lcom/android/server/display/NormalBrightnessModeController; HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;->run()V HSPLcom/android/server/display/DisplayBrightnessState$Builder;-><init>()V HSPLcom/android/server/display/DisplayBrightnessState$Builder;->from(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState$Builder; HSPLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;)V+]Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState$Builder; HSPLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice; -HSPLcom/android/server/display/DisplayDeviceConfig;->getNitsFromBacklight(F)F+]Landroid/util/Spline;Landroid/util/Spline$LinearSpline;,Landroid/util/Spline$MonotoneCubicSpline; HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V HSPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String; +HSPLcom/android/server/display/DisplayDeviceRepository;->containsLocked(Lcom/android/server/display/DisplayDevice;)Z+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/display/DisplayGroup;->getIdLocked(I)I+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/display/DisplayGroup;->getSizeLocked()I+]Ljava/util/List;Ljava/util/ArrayList; @@ -1558,8 +1605,7 @@ HSPLcom/android/server/display/DisplayManagerService$1;->requestDisplayState(IIF HSPLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds(Z)[I+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo; -HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z -HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->shouldSendDisplayEvent(I)Z +HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/input/InputManagerInternal;Lcom/android/server/input/InputManagerService$LocalService;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo; @@ -1568,19 +1614,12 @@ HSPLcom/android/server/display/DisplayManagerService$LocalService;->performTrave HSPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIFFZZZ)V HSPLcom/android/server/display/DisplayManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(Landroid/util/SparseArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportanceUnflagged(II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/display/DisplayManagerService;->applyDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/HighBrightnessModeMetadataMapper;Lcom/android/server/display/HighBrightnessModeMetadataMapper; -HSPLcom/android/server/display/DisplayManagerService;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(ILandroid/util/ArraySet;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/display/DisplayManagerService;->deliverEventUnflagged(Lcom/android/server/display/DisplayManagerService$CallbackRecord;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoForFrameRateOverride([Landroid/view/DisplayEventReceiver$FrameRateOverride;Landroid/view/DisplayInfo;I)Landroid/view/DisplayInfo; HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; -HSPLcom/android/server/display/DisplayManagerService;->getViewportLocked(ILjava/lang/String;)Landroid/hardware/display/DisplayViewport;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/display/DisplayManagerService;->isMinimalPostProcessingAllowed()Z -HSPLcom/android/server/display/DisplayManagerService;->isUidCached(I)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService; HSPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; -HSPLcom/android/server/display/DisplayManagerService;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; -HSPLcom/android/server/display/DisplayManagerService;->populateViewportLocked(IILcom/android/server/display/DisplayDevice;Lcom/android/server/display/DisplayDeviceInfo;)V HSPLcom/android/server/display/DisplayManagerService;->requestDisplayStateInternal(IIFF)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Ljava/lang/Runnable;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1; HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventIfEnabledLocked(Lcom/android/server/display/LogicalDisplay;I)V @@ -1602,13 +1641,15 @@ HSPLcom/android/server/display/DisplayPowerState$4;->run()V HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(IFF)Z HSPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V +HSPLcom/android/server/display/HighBrightnessModeController;->calculateRemainingTime(J)J+]Lcom/android/server/display/HbmEvent;Lcom/android/server/display/HbmEvent;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator; +HSPLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMax()F+]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController; +HSPLcom/android/server/display/HighBrightnessModeController;->onBrightnessChanged(FFI)V+]Lcom/android/server/display/DisplayManagerService$Clock;Lcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;]Lcom/android/server/display/HighBrightnessModeController;Lcom/android/server/display/HighBrightnessModeController;]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata; +HSPLcom/android/server/display/HighBrightnessModeController;->recalculateTimeAllowance()V+]Lcom/android/server/display/DisplayManagerService$Clock;Lcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;]Lcom/android/server/display/HbmEvent;Lcom/android/server/display/HbmEvent;]Lcom/android/server/display/HighBrightnessModeMetadata;Lcom/android/server/display/HighBrightnessModeMetadata;]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayMode;)Z HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(FF)V+]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;]Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags; HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceConfig()Lcom/android/server/display/DisplayDeviceConfig; HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getLogicalDensity()I+]Lcom/android/server/display/DensityMapping;Lcom/android/server/display/DensityMapping;]Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/DisplayDeviceConfig;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags; -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(IFFLcom/android/server/display/DisplayOffloadSessionImpl;)Ljava/lang/Runnable; -HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V HSPLcom/android/server/display/LogicalDisplay;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;Z)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice; HSPLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;+]Lcom/android/server/display/DisplayInfoProxy;Lcom/android/server/display/DisplayInfoProxy; @@ -1616,16 +1657,14 @@ HSPLcom/android/server/display/LogicalDisplay;->getMaskingInsets(Lcom/android/se HSPLcom/android/server/display/LogicalDisplay;->updateFrameRateOverrides(Lcom/android/server/display/DisplayDeviceInfo;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/mode/SyntheticModeManager;)V+]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/DisplayDeviceRepository;]Lcom/android/server/display/DisplayInfoProxy;Lcom/android/server/display/DisplayInfoProxy;]Lcom/android/server/display/mode/SyntheticModeManager;Lcom/android/server/display/mode/SyntheticModeManager; HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupLocked(Lcom/android/server/display/LogicalDisplay;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayDevice;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;,Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; -HSPLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;Z)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/function/Consumer;megamorphic_types HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupIdFromDisplayIdLocked(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupLocked(I)Lcom/android/server/display/DisplayGroup;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsLocked(IZ)[I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(I)Lcom/android/server/display/LogicalDisplay;+]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(IZ)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;Z)Lcom/android/server/display/LogicalDisplay;+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags; -HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForGroupsLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener; -HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper;]Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/feature/DisplayManagerFlags; +HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; +HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/display/DisplayGroup;Lcom/android/server/display/DisplayGroup;]Lcom/android/server/display/LogicalDisplayMapper;Lcom/android/server/display/LogicalDisplayMapper; HPLcom/android/server/display/RampAnimator$DualRampAnimator$1;->run()V+]Lcom/android/server/display/RampAnimator$DualRampAnimator;Lcom/android/server/display/RampAnimator$DualRampAnimator;]Lcom/android/server/display/RampAnimator$Listener;Lcom/android/server/display/DisplayPowerController$3;]Lcom/android/server/display/RampAnimator;Lcom/android/server/display/RampAnimator; HPLcom/android/server/display/RampAnimator;->performNextAnimationStep(J)V HSPLcom/android/server/display/RampAnimator;->setPropertyValue(F)V+]Landroid/util/FloatProperty;Lcom/android/server/display/DisplayPowerState$2;,Lcom/android/server/display/DisplayPowerState$3; @@ -1647,7 +1686,6 @@ HSPLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->s HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->-$$Nest$misEnabled(Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;)Z HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->isEnabled()Z HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequest(IIFFF)V+]Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/VotesStorage; -HSPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->equals(Ljava/lang/Object;)Z HSPLcom/android/server/display/mode/DisplayModeDirector;->getModeSwitchingType()I HSPLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/display/mode/VotesStatsReporter;Lcom/android/server/display/mode/VotesStatsReporter;]Lcom/android/server/display/mode/VotesStorage$Listener;Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;]Ljava/lang/Object;megamorphic_types HSPLcom/android/server/display/state/DisplayStateController;->updateDisplayState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ZZ)Landroid/util/Pair; @@ -1662,6 +1700,7 @@ HSPLcom/android/server/firewall/IntentFirewall;->getPackageManager()Landroid/con HSPLcom/android/server/grammaticalinflection/GrammaticalInflectionUtils;->checkSystemGrammaticalGenderPermission(Landroid/permission/PermissionManager;Landroid/content/AttributionSource;)Z HSPLcom/android/server/health/HealthServiceWrapperAidl;->getProperty(ILandroid/os/BatteryProperty;)I HSPLcom/android/server/health/HealthServiceWrapperAidl;->getPropertyInternal(ILandroid/os/BatteryProperty;)I+]Landroid/hardware/health/IHealth;Landroid/hardware/health/IHealth$Stub$Proxy;]Landroid/os/BatteryProperty;Landroid/os/BatteryProperty; +HSPLcom/android/server/infra/AbstractMasterSystemService;->assertCalledByPackageOwner(Ljava/lang/String;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceListForUserLocked(I)Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/infra/AbstractMasterSystemService;megamorphic_types]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;,Lcom/android/server/infra/SecureSettingsServiceNameResolver;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda1;,Lcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;,Lcom/android/server/input/KeyboardLayoutManager$2;]Ljava/lang/CharSequence;Ljava/lang/String; @@ -1670,6 +1709,7 @@ HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSu HSPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsAndSubtypeList()Ljava/util/List; HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getInputMethodAndSubtypeListForHardwareKeyboard(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodSettings;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getSortedInputMethodAndSubtypeList(ZZZLandroid/content/Context;Lcom/android/server/inputmethod/InputMethodSettings;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/inputmethod/RawInputMethodMap;->toInputMethodMap(Lcom/android/server/inputmethod/AdditionalSubtypeMap;IZ)Lcom/android/server/inputmethod/InputMethodMap;+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter; HSPLcom/android/server/inputmethod/UserDataRepository;->getOrCreate(I)Lcom/android/server/inputmethod/UserData; HSPLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V @@ -1779,7 +1819,7 @@ HSPLcom/android/server/job/JobSchedulerService;->isCurrentlyRunningLocked(Lcom/a HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/PendingJobQueue;Lcom/android/server/job/PendingJobQueue; HSPLcom/android/server/job/JobSchedulerService;->lambda$new$2(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category; -HSPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$4(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$4(Lcom/android/server/job/controllers/JobStatus;)V HSPLcom/android/server/job/JobSchedulerService;->maybeProcessBuggyJob(Lcom/android/server/job/controllers/JobStatus;I)V+]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController;]Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$1; HSPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V+]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; HSPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged(Landroid/util/ArraySet;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; @@ -1793,6 +1833,7 @@ HSPLcom/android/server/job/JobSchedulerService;->standbyBucketToBucketIndex(I)I HSPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobConcurrencyManager;]Lcom/android/server/job/controllers/StateController;megamorphic_types]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V HSPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V HSPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; HSPLcom/android/server/job/JobServiceContext;->canGetNetworkInformation(Lcom/android/server/job/controllers/JobStatus;)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; @@ -1802,6 +1843,7 @@ HSPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/Stri HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem;+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters; HSPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters; HSPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;I)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; +HSPLcom/android/server/job/JobServiceContext;->getRunningJobLocked()Lcom/android/server/job/controllers/JobStatus; HSPLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V HSPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V+]Landroid/app/job/IJobService;Landroid/app/job/IJobService$Stub$Proxy;,Landroid/app/job/JobServiceEngine$JobInterface; HSPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V+]Landroid/app/job/JobParameters;Landroid/app/job/JobParameters;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; @@ -1816,6 +1858,7 @@ HPLcom/android/server/job/JobStore$2$CopyConsumer;->prepare()V+]Landroid/util/Sp HPLcom/android/server/job/JobStore$2;->addAttributesToJobTag(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; HPLcom/android/server/job/JobStore$2;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;+]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; HPLcom/android/server/job/JobStore$2;->run()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Ljava/io/File;Ljava/io/File;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock; +HPLcom/android/server/job/JobStore$2;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; HPLcom/android/server/job/JobStore$2;->writeConstraintsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/net/NetworkRequest;Landroid/net/NetworkRequest;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; HPLcom/android/server/job/JobStore$2;->writeDebugInfoToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; HPLcom/android/server/job/JobStore$2;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;,Ljava/time/Clock$SystemClock;]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; @@ -1833,11 +1876,11 @@ HSPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/Jo HSPLcom/android/server/job/JobStore;->countJobsForUid(I)I HSPLcom/android/server/job/JobStore;->getJobByUidAndJobId(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus; HPLcom/android/server/job/JobStore;->intArrayToString([I)Ljava/lang/String; -HPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V +HSPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V HSPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; HPLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;->clear()V -HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->$r8$lambda$g0OYYwC3jkCSkqvBk21tiP7tdvI(Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; +HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->$r8$lambda$g0OYYwC3jkCSkqvBk21tiP7tdvI(Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;)I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->addAll(Ljava/util/List;)V+]Landroid/util/Pools$Pool;Landroid/util/Pools$SimplePool;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/job/PendingJobQueue$AppJobQueue;->indexOf(Lcom/android/server/job/controllers/JobStatus;)I+]Ljava/util/List;Ljava/util/ArrayList; @@ -1865,10 +1908,12 @@ HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJo HSPLcom/android/server/job/controllers/BatteryController;->hasTopExemptionLocked(Lcom/android/server/job/controllers/JobStatus;)Z+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; HSPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; HSPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HSPLcom/android/server/job/controllers/BatteryController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; HSPLcom/android/server/job/controllers/ComponentController;->getServiceProcessLocked(Lcom/android/server/job/controllers/JobStatus;)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseArrayMap;Landroid/util/SparseArrayMap;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; HSPLcom/android/server/job/controllers/ComponentController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V HSPLcom/android/server/job/controllers/ComponentController;->updateComponentEnabledStateLocked(Lcom/android/server/job/controllers/JobStatus;)Z HSPLcom/android/server/job/controllers/ConnectivityController$CcHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; +HPLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->onBlockedStatusChanged(Landroid/net/Network;I)V HSPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; HSPLcom/android/server/job/controllers/ConnectivityController;->getNetworkLocked(Lcom/android/server/job/controllers/JobStatus;)Landroid/net/Network;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/job/controllers/ConnectivityController;->getNetworkMetadata(Landroid/net/Network;)Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata; @@ -1892,7 +1937,7 @@ HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs HPLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator; HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V -HSPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; +HSPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService;]Lcom/android/server/job/StateChangedListener;Lcom/android/server/job/JobSchedulerService; @@ -1929,9 +1974,9 @@ HSPLcom/android/server/job/controllers/JobStatus;->constraintsToPendingJobReason HSPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/job/controllers/JobStatus;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Ljava/time/Clock;Lcom/android/server/job/JobSchedulerService$2; HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V+]Landroid/content/Intent;Landroid/content/Intent;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/job/controllers/JobStatus;->generateLoggingId(Ljava/lang/String;I)J HSPLcom/android/server/job/controllers/JobStatus;->generateNamespaceHash(Ljava/lang/String;)Ljava/lang/String;+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate; HSPLcom/android/server/job/controllers/JobStatus;->getAppTraceTag()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; -HSPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J HSPLcom/android/server/job/controllers/JobStatus;->getEffectivePriority()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; HSPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService; HSPLcom/android/server/job/controllers/JobStatus;->getFilteredDebugTags()[Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; @@ -1947,7 +1992,7 @@ HSPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlamePackageName()L HSPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlameUserId()I HSPLcom/android/server/job/controllers/JobStatus;->getUid()I HSPLcom/android/server/job/controllers/JobStatus;->getUserId()I -HSPLcom/android/server/job/controllers/JobStatus;->getWakelockTag()Ljava/lang/String; +HSPLcom/android/server/job/controllers/JobStatus;->getWakelockTag()Ljava/lang/String;+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; HSPLcom/android/server/job/controllers/JobStatus;->getWorkCount()I+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z HSPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z @@ -1969,6 +2014,7 @@ HSPLcom/android/server/job/controllers/JobStatus;->readinessStatusWithConstraint HSPLcom/android/server/job/controllers/JobStatus;->setBackgroundNotRestrictedConstraintSatisfied(JZZ)Z HSPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z+]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList; HSPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(JZZ)Z +HSPLcom/android/server/job/controllers/JobStatus;->setExpeditedJobQuotaApproved(JZ)Z HSPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsExpeditedJob()Z HSPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsUserInitiatedJob()Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo; HSPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -2038,15 +2084,19 @@ HSPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLock HSPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JLandroid/os/WorkSource;)V HSPLcom/android/server/job/restrictions/ThermalStatusRestriction;->isJobRestricted(Lcom/android/server/job/controllers/JobStatus;I)Z+]Landroid/app/job/JobInfo;Landroid/app/job/JobInfo;]Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService; HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V +HPLcom/android/server/locales/LocaleManagerService;->getApplicationLocales(Ljava/lang/String;I)Landroid/os/LocaleList;+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService; +HSPLcom/android/server/location/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/location/provider/LocationProviderManager;+]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; HSPLcom/android/server/location/LocationManagerService;->isLocationEnabledForUser(I)Z+]Lcom/android/server/location/injector/Injector;Lcom/android/server/location/LocationManagerService$SystemInjector;]Lcom/android/server/location/injector/SettingsHelper;Lcom/android/server/location/injector/SystemSettingsHelper; -HPLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubTransactionCallback;)I+]Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubInfo;]Lcom/android/server/location/contexthub/ContextHubEventLogger;Lcom/android/server/location/contexthub/ContextHubEventLogger;]Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; -HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B+]Lcom/android/server/location/contexthub/ContextHubClientBroker;Lcom/android/server/location/contexthub/ContextHubClientBroker;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->doSendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubTransactionCallback;)I+]Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubInfo;]Lcom/android/server/location/contexthub/ContextHubEventLogger;Lcom/android/server/location/contexthub/ContextHubEventLogger;]Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; +HSPLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B +HSPLcom/android/server/location/contexthub/ContextHubServiceUtil;->createNanoAppStateList([Landroid/hardware/contexthub/NanoappInfo;)Ljava/util/List; +HSPLcom/android/server/location/contexthub/NanoAppStateManager;->getNanoAppHandle(IJ)I+]Landroid/hardware/location/NanoAppInstanceInfo;Landroid/hardware/location/NanoAppInstanceInfo;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator; HSPLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog; HSPLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(ZILjava/lang/Object;)V+]Lcom/android/server/location/eventlog/LocalEventLog;Lcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;,Lcom/android/server/location/eventlog/LocationEventLog; +HSPLcom/android/server/location/eventlog/LocalEventLog;->createEntry(ZI)I HSPLcom/android/server/location/eventlog/LocationEventLog;->getAggregateStats(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/eventlog/LocationEventLog$AggregateStats; HPLcom/android/server/location/injector/SystemAppOpsHelper;->noteOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager; HSPLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->getValueForUser(II)I+]Landroid/content/Context;Landroid/app/ContextImpl; -HSPLcom/android/server/location/injector/SystemSettingsHelper;->isLocationEnabled(I)Z+]Lcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;Lcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting; HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard; HSPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->close()V+]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry; HSPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer; @@ -2058,7 +2108,9 @@ HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistra HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->onPostExecute(Z)V HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$2;->operate(Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;)V+]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport; HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->acceptLocationChange(Landroid/location/LocationResult;)Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;+]Lcom/android/server/location/injector/AppOpsHelper;Lcom/android/server/location/injector/SystemAppOpsHelper;]Lcom/android/server/location/provider/LocationProviderManager$Registration;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;,Lcom/android/server/location/provider/PassiveLocationProviderManager; +HPLcom/android/server/location/provider/LocationProviderManager;->getLastLocationUnsafe(IIZJ)Landroid/location/Location;+]Landroid/location/Location;Landroid/location/Location;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/location/injector/UserInfoHelper;Lcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;]Lcom/android/server/location/provider/LocationProviderManager$LastLocation;Lcom/android/server/location/provider/LocationProviderManager$LastLocation;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager; HSPLcom/android/server/location/provider/LocationProviderManager;->isEnabled(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; +HSPLcom/android/server/location/provider/LocationProviderManager;->onAppForegroundChanged(IZ)V HPLcom/android/server/location/provider/LocationProviderManager;->onReportLocation(Landroid/location/LocationResult;)V+]Landroid/location/Location;Landroid/location/Location;]Lcom/android/server/location/eventlog/LocationEventLog;Lcom/android/server/location/eventlog/LocationEventLog;]Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager;]Lcom/android/server/location/provider/PassiveLocationProviderManager;Lcom/android/server/location/provider/PassiveLocationProviderManager; HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I @@ -2081,10 +2133,10 @@ HSPLcom/android/server/net/NetworkManagementService;->updateFirewallUidRuleLocke HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->tempPowerSaveWlChanged(IZILjava/lang/String;)V HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidFirewallRuleChanged(III)V HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidStateChanged(IIJI)V +HSPLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(IZILjava/lang/String;)V HSPLcom/android/server/net/NetworkPolicyLogger;->uidFirewallRuleChanged(III)V HSPLcom/android/server/net/NetworkPolicyLogger;->uidStateChanged(IIJI)V -HSPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V -HSPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService; +HSPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager;]Landroid/os/RemoteCallbackList;Landroid/os/RemoteCallbackList;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService; HSPLcom/android/server/net/NetworkPolicyManagerService$16;->handleMessage(Landroid/os/Message;)Z+]Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService; HSPLcom/android/server/net/NetworkPolicyManagerService$4;->isUidStateChangeRelevant(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;IJI)Z HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; @@ -2099,10 +2151,10 @@ HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidExemptFromBackgrou HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForAllowlistRulesUL(I)Z +HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForDenylistRulesUL(I)Z HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForRulesUL(I)Z HSPLcom/android/server/net/NetworkPolicyManagerService;->postBlockedReasonsChangedMsg(III)V HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V+]Landroid/os/INetworkManagementService;Lcom/android/server/net/NetworkManagementService;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/net/NetworkPolicyLogger;Lcom/android/server/net/NetworkPolicyLogger; -HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V+]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Lcom/android/internal/util/StatLogger;Lcom/android/internal/util/StatLogger; HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager;]Landroid/net/Network;Landroid/net/Network;]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V+]Landroid/app/usage/NetworkStatsManager;Landroid/app/usage/NetworkStatsManager; HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V+]Landroid/net/NetworkPolicy;Landroid/net/NetworkPolicy;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/time/Clock;Landroid/os/BestClock; @@ -2123,17 +2175,19 @@ HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(L HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleMessage(Landroid/os/Message;)V HSPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper; HSPLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/BubbleExtractor;Lcom/android/server/notification/BubbleExtractor;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper; +HSPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles; HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getService()Landroid/os/IInterface; HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->hashCode()I HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSameUser(I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +HSPLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;+]Landroid/os/IInterface;Landroid/service/notification/ConditionProviderService$Provider;,Landroid/service/notification/IConditionProvider$Stub$Proxy;,Landroid/service/notification/INotificationListener$Stub$Proxy;,Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List; HSPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(Ljava/lang/String;I)Z HSPLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z HSPLcom/android/server/notification/ManagedServices;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/ConditionProviders;,Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;,Lcom/android/server/notification/NotificationManagerService$NotificationListeners; -HPLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; +HSPLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/media/AudioManager;Landroid/media/AudioManager;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;Lcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/media/AudioAttributes$Builder;Landroid/media/AudioAttributes$Builder;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper; HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; @@ -2143,35 +2197,47 @@ HSPLcom/android/server/notification/NotificationManagerService$CancelNotificatio HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->enqueueNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/TimeToLiveHelper;Lcom/android/server/notification/TimeToLiveHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/service/notification/INotificationListener;Landroid/service/notification/INotificationListener$Stub$Proxy;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getNotificationListenerFilter(Landroid/util/Pair;)Landroid/service/notification/NotificationListenerFilter; +HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z+]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isUidTrusted(I)Z +HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/internal/logging/InstanceIdSequence;Lcom/android/internal/logging/InstanceIdSequence;]Lcom/android/server/notification/GroupHelper;Lcom/android/server/notification/GroupHelper;]Lcom/android/server/notification/ManagedServices$UserProfiles;Lcom/android/server/notification/ManagedServices$UserProfiles;]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;-><init>(Landroid/os/PowerManager$WakeLock;)V +HSPLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->finish()J+]Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;]Ljava/lang/Runnable;Lcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda7;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->isInLockDownMode(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; HSPLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners; HSPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleCancelNotification(Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;I)V HPLcom/android/server/notification/NotificationManagerService;->applyAdjustmentLocked(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;Z)V+]Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; HSPLcom/android/server/notification/NotificationManagerService;->areNotificationsEnabledForPackageInt(I)Z HSPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V+]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler; -HSPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;III)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService; +HSPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;III)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService; +HPLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;J)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$Archive;Lcom/android/server/notification/NotificationManagerService$Archive;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/TimeToLiveHelper;Lcom/android/server/notification/TimeToLiveHelper; HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;II)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService; HSPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;ZZ)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification$Action;Landroid/app/Notification$Action;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats; +HSPLcom/android/server/notification/NotificationManagerService;->checkRemoteViews(Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;)V HSPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;ZZ)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/DeviceIdleInternal;Lcom/android/server/DeviceIdleController$LocalService;]Lcom/android/server/job/JobSchedulerInternal;Lcom/android/server/job/JobSchedulerService$LocalService;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Lcom/android/server/notification/ShortcutHelper;Lcom/android/server/notification/ShortcutHelper;]Ljava/util/Set;Ljava/util/ImmutableCollections$SetN; HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; HSPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;IIILandroid/app/ActivityManagerInternal$ServiceNotificationPolicy;Z)V+]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/Notification$CallStyle;Landroid/app/Notification$CallStyle;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Ljava/util/List;Ljava/util/ArrayList; +HPLcom/android/server/notification/NotificationManagerService;->getNotificationCount(Ljava/lang/String;IILjava/lang/String;)I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService;->getPackageImportanceWithIdentity(Ljava/lang/String;)I+]Landroid/app/ActivityManager;Landroid/app/ActivityManager; +HSPLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; +HSPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/NotificationManagerService$WorkerHandler;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/server/notification/NotificationRecordLoggerImpl;]Lcom/android/server/notification/RankingHelper;Lcom/android/server/notification/RankingHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z+]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService; +HSPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrSystemUi()Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService; HSPLcom/android/server/notification/NotificationManagerService;->isInLockDownMode(I)Z+]Lcom/android/server/notification/NotificationManagerService$StrongAuthTracker;Lcom/android/server/notification/NotificationManagerService$StrongAuthTracker; HSPLcom/android/server/notification/NotificationManagerService;->isInteractionVisibleToListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z+]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; HSPLcom/android/server/notification/NotificationManagerService;->isRecordBlockedLocked(Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper; HSPLcom/android/server/notification/NotificationManagerService;->isServiceTokenValid(Landroid/os/IInterface;)Z+]Lcom/android/server/notification/ManagedServices;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants; HSPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z HSPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z+]Landroid/service/notification/NotificationListenerFilter;Landroid/service/notification/NotificationListenerFilter;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService; +HSPLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;]Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationHistoryManager;Lcom/android/server/notification/NotificationHistoryManager; HSPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z -HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper; +HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager; HSPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V+]Lcom/android/server/uri/UriGrantsManagerInternal;Lcom/android/server/uri/UriGrantsManagerService$LocalService; HSPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V+]Ljava/lang/Object;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; @@ -2179,7 +2245,12 @@ HSPLcom/android/server/notification/NotificationRecord;->calculateGrantableUris( HSPLcom/android/server/notification/NotificationRecord;->calculateImportance()V HSPLcom/android/server/notification/NotificationRecord;->calculateInitialImportance()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; +HSPLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; +HSPLcom/android/server/notification/NotificationRecord;->calculateUserSentiment()V HSPLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; +HSPLcom/android/server/notification/NotificationRecord;->getFlags()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; +HSPLcom/android/server/notification/NotificationRecord;->getImportance()I HSPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence; HSPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; @@ -2190,6 +2261,7 @@ HSPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/Us HSPLcom/android/server/notification/NotificationRecord;->getUserId()I+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationRecord;->isConversation()Z+]Landroid/app/Notification;Landroid/app/Notification; HSPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V +HPLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;ZZ)V+]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification; HSPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair; HSPLcom/android/server/notification/NotificationRecordLoggerImpl;->writeNotificationReportedAtom(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; @@ -2197,43 +2269,54 @@ HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationSta HSPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; HSPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;+]Ljava/util/Map;Ljava/util/HashMap; HSPLcom/android/server/notification/PermissionHelper;->hasPermission(I)Z+]Landroid/content/Context;Landroid/app/ContextImpl; +HSPLcom/android/server/notification/PermissionHelper;->isPermissionFixed(Ljava/lang/String;I)Z+]Landroid/permission/IPermissionManager;Lcom/android/server/pm/permission/PermissionManagerService; HSPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>()V -HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; +HSPLcom/android/server/notification/PreferencesHelper;->bubblesEnabled(Landroid/os/UserHandle;)Z+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; +HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z+]Landroid/metrics/LogMaker;Landroid/metrics/LogMaker;]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap; +HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZIZ)V+]Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/server/notification/NotificationChannelLoggerImpl;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap; HSPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel; -HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; -HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZZLjava/util/Set;)Landroid/content/pm/ParceledListSlice;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/Set;Ljava/util/HashSet; +HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;+]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap; HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock; HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZIJ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;+]Ljava/time/Clock;Ljava/time/Clock$SystemClock; HSPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences; HSPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(Ljava/lang/String;I)Ljava/lang/String; -HSPLcom/android/server/notification/PreferencesHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V HSPLcom/android/server/notification/PreferencesHelper;->restoreChannel(Lcom/android/modules/utils/TypedXmlPullParser;ZLcom/android/server/notification/PreferencesHelper$PackagePreferences;)V -HSPLcom/android/server/notification/PreferencesHelper;->restorePackage(Lcom/android/modules/utils/TypedXmlPullParser;ZILjava/lang/String;ZZ)V +HSPLcom/android/server/notification/PreferencesHelper;->restorePackage(Lcom/android/modules/utils/TypedXmlPullParser;ZILjava/lang/String;ZZ)V+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser;]Ljava/time/Clock;Ljava/time/Clock$SystemClock;]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; HSPLcom/android/server/notification/PreferencesHelper;->writePackageXml(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Lcom/android/modules/utils/TypedXmlSerializer;Landroid/util/ArrayMap;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;,Ljava/util/concurrent/ConcurrentHashMap$ValuesView;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/concurrent/ConcurrentHashMap; HSPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Lcom/android/server/notification/PreferencesHelper;Lcom/android/server/notification/PreferencesHelper;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; +HSPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HSPLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V+]Lcom/android/server/notification/NotificationSignalExtractor;megamorphic_types]Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/NotificationManagerService$RankingHandlerWorker; HSPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V+]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/notification/ShortcutHelper;->maybeListenForShortcutChangesForBubbles(Lcom/android/server/notification/NotificationRecord;Z)V+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Ljava/util/HashMap;Ljava/util/HashMap; HSPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z+]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet; HSPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator; HSPLcom/android/server/notification/TimeToLiveHelper;->removeMatchingEntry(Ljava/lang/String;)V+]Ljava/util/Iterator;Ljava/util/TreeMap$KeyIterator;]Ljava/util/TreeSet;Ljava/util/TreeSet; HSPLcom/android/server/notification/TimeToLiveHelper;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;J)V+]Landroid/app/Notification;Landroid/app/Notification;]Ljava/util/TreeSet;Ljava/util/TreeSet; HSPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/ValidateNotificationPeople;Lcom/android/server/notification/ValidateNotificationPeople; HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationUsageStats;]Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration; HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator; HSPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLcom/android/server/notification/VibratorHelper;->getFloatArray(Landroid/content/res/Resources;I)[F+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLcom/android/server/notification/VibratorHelper;->getLongArray(Landroid/content/res/Resources;II[J)[J+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/PreferencesHelper; +HSPLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;+]Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper; +HSPLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z+]Lcom/android/server/notification/ZenModeFiltering;Lcom/android/server/notification/ZenModeFiltering; HSPLcom/android/server/notification/ZenModeHelper;->zenRuleToAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Landroid/app/AutomaticZenRule; HSPLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/om/CriticalOverlayInfo;II)Z +HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmUserId(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I HSPLcom/android/server/om/OverlayManagerSettings;->forEachMatching(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;Lcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda1; HSPLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/Pair;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl; HSPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;)Landroid/util/ArraySet; HSPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V+]Lcom/android/server/om/OverlayReferenceMapper$Provider;Lcom/android/server/om/OverlayReferenceMapper$1;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Collection;Landroid/util/MapCollections$ValuesCollection;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;,Ljava/util/Collections$UnmodifiableCollection$1;,Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;]Ljava/util/Map$Entry;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;]Ljava/util/Map;Landroid/util/ArrayMap;,Ljava/util/Collections$EmptyMap;,Ljava/util/Collections$UnmodifiableMap;,Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;,Ljava/util/Collections$UnmodifiableSet;,Ljava/util/HashSet; -HPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V -HPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V +HSPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z HSPLcom/android/server/os/NativeTombstoneManager;->collectTombstones(Ljava/util/ArrayList;III)V HSPLcom/android/server/permission/access/AccessCheckingService;->access$getState$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessState; HSPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/AccessState;)V HSPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/AccessState;I)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/MutableSystemState;,Lcom/android/server/permission/access/MutableUserState; +HSPLcom/android/server/permission/access/AccessPersistence;->writeSystemState(Lcom/android/server/permission/access/AccessState;)V HSPLcom/android/server/permission/access/AccessPersistence;->writeUserState(Lcom/android/server/permission/access/AccessState;I)V HSPLcom/android/server/permission/access/AccessPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/SchemePolicy;Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;,Lcom/android/server/permission/access/appop/PackageAppOpPolicy;,Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;,Lcom/android/server/permission/access/permission/DevicePermissionPolicy; HSPLcom/android/server/permission/access/AccessPolicy;->serializePackageVersions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer; @@ -2243,6 +2326,7 @@ HSPLcom/android/server/permission/access/AccessState;->getSystemState()Lcom/andr HSPLcom/android/server/permission/access/AccessState;->getUserStates()Lcom/android/server/permission/access/immutable/IntReferenceMap; HSPLcom/android/server/permission/access/AccessState;->toMutable()Lcom/android/server/permission/access/MutableAccessState; HSPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNames()Lcom/android/server/permission/access/immutable/IntReferenceMap; +HSPLcom/android/server/permission/access/ExternalState;->getPackageStates()Ljava/util/Map; HSPLcom/android/server/permission/access/GetStateScope;-><init>(Lcom/android/server/permission/access/AccessState;)V HSPLcom/android/server/permission/access/GetStateScope;->getState()Lcom/android/server/permission/access/AccessState; HSPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/AccessState;)V @@ -2251,11 +2335,13 @@ HSPLcom/android/server/permission/access/MutableSystemState;->mutatePermissions( HSPLcom/android/server/permission/access/MutateStateScope;->getNewState()Lcom/android/server/permission/access/MutableAccessState; HSPLcom/android/server/permission/access/SystemState;->getPermissions()Lcom/android/server/permission/access/immutable/IndexedMap; HSPLcom/android/server/permission/access/SystemState;->getWriteMode()I +HSPLcom/android/server/permission/access/UserState;->getAppIdAppOpModes()Lcom/android/server/permission/access/immutable/IntReferenceMap; HSPLcom/android/server/permission/access/UserState;->getAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/IntReferenceMap; HSPLcom/android/server/permission/access/UserState;->getWriteMode()I HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap; HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V+]Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener; +HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->setAppOpMode(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;I)Z+]Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;->onStateMutated()V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/appop/AppOpService$OnPermissionFlagsChangedListener;->onStateMutated()V+]Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;Lcom/android/server/appop/AppOpsService$2;]Ljava/lang/Number;Ljava/lang/Integer; @@ -2267,7 +2353,8 @@ HSPLcom/android/server/permission/access/appop/AppOpService;->getPackageModes(Lj HSPLcom/android/server/permission/access/appop/AppOpService;->getUidMode(ILjava/lang/String;I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/permission/access/appop/AppOpService;->getUidModeFromPermissionState(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I+]Ljava/util/Set;Ljava/util/ImmutableCollections$Set12; HSPLcom/android/server/permission/access/appop/AppOpService;->getUidModes(I)Landroid/util/ArrayMap; -HPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(ILjava/lang/String;II)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState; +HSPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(ILjava/lang/String;II)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState; +HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOp(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer; HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V+]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;ILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;I)Lcom/android/server/permission/access/immutable/IndexedMap; @@ -2287,9 +2374,10 @@ HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->get(I)Lcom/ HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->keyAt(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/permission/access/immutable/MutableIndexedList;->add(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/permission/access/immutable/MutableReference;-><init>(Lcom/android/server/permission/access/immutable/Immutable;Lcom/android/server/permission/access/immutable/Immutable;)V +HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/android/server/permission/access/immutable/MutableReference;->get()Lcom/android/server/permission/access/immutable/Immutable; HSPLcom/android/server/permission/access/immutable/MutableReference;->mutate()Lcom/android/server/permission/access/immutable/Immutable;+]Lcom/android/server/permission/access/immutable/Immutable;megamorphic_types +HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parsePermission(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer;]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermission(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer; HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V+]Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/modules/utils/BinaryXmlSerializer; @@ -2300,7 +2388,7 @@ HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->chec HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackageAndUser(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILcom/android/server/pm/pkg/PackageState;)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Iterable;Ljava/util/Collections$UnmodifiableSet;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1; HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionState(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V+]Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->findPermissionTree(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;)Lcom/android/server/permission/access/permission/Permission; -HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getAppIdTargetSdkVersion(Lcom/android/server/permission/access/MutateStateScope;ILjava/lang/String;Lcom/android/server/permission/access/AccessState;)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; +HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getAppIdTargetSdkVersion(Lcom/android/server/permission/access/MutateStateScope;ILjava/lang/String;Lcom/android/server/permission/access/AccessState;)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap; HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/AccessState;IILjava/lang/String;)I+]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissions(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap; @@ -2342,7 +2430,7 @@ HSPLcom/android/server/permission/access/permission/PermissionService;->getGidsF HSPLcom/android/server/permission/access/permission/PermissionService;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Ljava/lang/Number;Ljava/lang/Integer; HSPLcom/android/server/permission/access/permission/PermissionService;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set; HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting; -HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I+]Ljava/util/Set;Ljava/util/ImmutableCollections$Set12; +HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I HSPLcom/android/server/permission/access/permission/PermissionService;->getPermissionInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/PackageManagerLocal;Lcom/android/server/pm/local/PackageManagerLocalImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;II)Z+]Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl; HSPLcom/android/server/permission/access/permission/PermissionService;->isPermissionGranted(Lcom/android/server/permission/access/GetStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; @@ -2361,6 +2449,7 @@ HSPLcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;->closeFina HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/pm/SigningDetails;,Landroid/util/ArraySet;,Ljava/lang/Integer;,Ljava/lang/String; HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V +HSPLcom/android/server/pinner/PinnerService$4;->onUidActive(I)V HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActivePackageNameForApexModuleName(Ljava/lang/String;)Ljava/lang/String; HSPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V HSPLcom/android/server/pm/AppDataHelper;->lambda$prepareAppData$2(Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/os/CreateAppDataResult;Ljava/lang/Throwable;)V+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting; @@ -2369,11 +2458,10 @@ HSPLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String; HSPLcom/android/server/pm/AppIdSettingMap;-><init>(Lcom/android/server/pm/AppIdSettingMap;)V HSPLcom/android/server/pm/AppIdSettingMap;->getSetting(I)Lcom/android/server/pm/SettingBase;+]Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray; HSPLcom/android/server/pm/AppsFilterBase;-><init>()V -HPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray; -HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponent(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray; -HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaPackage(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray; +HSPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray; +HSPLcom/android/server/pm/AppsFilterBase;->isQueryableViaPackage(II)Z+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray; HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting; -HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting; +HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z+]Lcom/android/server/om/OverlayReferenceMapper;Lcom/android/server/om/OverlayReferenceMapper;]Lcom/android/server/pm/AppsFilterBase;Lcom/android/server/pm/AppsFilterImpl;,Lcom/android/server/pm/AppsFilterSnapshotImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/FeatureConfig;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/pm/SharedUserSetting; HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationUsingCache(III)Z+]Lcom/android/server/utils/WatchedSparseBooleanMatrix;Lcom/android/server/utils/WatchedSparseBooleanMatrix; HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;)V HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isGloballyEnabled()Z @@ -2420,7 +2508,6 @@ HSPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z HSPLcom/android/server/pm/ComputerEngine;->canViewInstantApps(II)Z+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLcom/android/server/pm/ComputerEngine;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/ComputerEngine;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl; -HPLcom/android/server/pm/ComputerEngine;->createForwardingResolveInfoUnchecked(Lcom/android/server/pm/WatchedIntentFilter;II)Landroid/content/pm/ResolveInfo;+]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/pm/WatchedIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter; HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl; HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZLjava/lang/String;)V HSPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V+]Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerServiceInjector; @@ -2436,7 +2523,6 @@ HSPLcom/android/server/pm/ComputerEngine;->getApplicationEnabledSetting(Ljava/la HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo; HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService; HSPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternalBody(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; -HPLcom/android/server/pm/ComputerEngine;->getBlockUninstallForUser(Ljava/lang/String;I)Z+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings; HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSetting(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine; HSPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSettingInternal(Landroid/content/ComponentName;II)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService; HSPLcom/android/server/pm/ComputerEngine;->getComponentResolver()Lcom/android/server/pm/resolution/ComponentResolverApi; @@ -2463,7 +2549,7 @@ HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/St HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings; HSPLcom/android/server/pm/ComputerEngine;->getPackageStates()Landroid/util/ArrayMap;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings; HSPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService; -HSPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; +HSPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUid(I)[Ljava/lang/String; HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternal(II)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked; HSPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;+]Lcom/android/server/pm/ComputerEngine$Settings;Lcom/android/server/pm/ComputerEngine$Settings;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; @@ -2481,6 +2567,7 @@ HSPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(Ljava/la HSPLcom/android/server/pm/ComputerEngine;->getVersion()I HSPLcom/android/server/pm/ComputerEngine;->hasCrossUserPermission(IIIZZ)Z HSPLcom/android/server/pm/ComputerEngine;->hasNonNegativePriority(Ljava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/pm/ComputerEngine;->hasSigningCertificate(Ljava/lang/String;[BI)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/ComputerEngine;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo; HSPLcom/android/server/pm/ComputerEngine;->isApexPackage(Ljava/lang/String;)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/ComputerEngine;->isCallerInstallerOfRecord(Lcom/android/server/pm/pkg/AndroidPackage;I)Z+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting; @@ -2527,7 +2614,6 @@ HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveInfoFromCros HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IJLjava/lang/String;ZZLjava/util/function/Function;)Ljava/util/List; HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileResolver;Lcom/android/server/pm/DefaultCrossProfileResolver;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/HashSet; HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Ljava/util/List;Ljava/util/ArrayList; -HSPLcom/android/server/pm/DefaultCrossProfileResolver;->createForwardingResolveInfo(Lcom/android/server/pm/Computer;Lcom/android/server/pm/CrossProfileIntentFilter;Landroid/content/Intent;Ljava/lang/String;JILjava/util/function/Function;)Lcom/android/server/pm/CrossProfileDomainInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/CrossProfileIntentFilter;Lcom/android/server/pm/CrossProfileIntentFilter;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot;]Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationService;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/function/Function;Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda0; HSPLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(II)V+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl; HSPLcom/android/server/pm/IPackageManagerBase;->checkUidPermission(Ljava/lang/String;I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl; HSPLcom/android/server/pm/IPackageManagerBase;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/IPackageManagerBase;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl; @@ -2574,14 +2660,19 @@ HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->generateLauncherActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;,Ljava/util/ImmutableCollections$List12; HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfoForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl; HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/LauncherActivityInfoInternal;Landroid/content/pm/LauncherActivityInfoInternal;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/ParceledListSlice;Landroid/content/pm/ParceledListSlice;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;Landroid/content/pm/ShortcutQueryWrapper;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Landroid/content/pm/ShortcutServiceInternal;Lcom/android/server/pm/ShortcutService$LocalService;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl; HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isHiddenProfile(Landroid/os/UserHandle;)Z+]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl; +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->lambda$getApplicationInfoForArchivedApp$2(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;+]Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl; -HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList; +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList; HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V HSPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths; HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; HPLcom/android/server/pm/PackageInstallerSession;->generateInfoInternal(ZZ)Landroid/content/pm/PackageInstaller$SessionInfo;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageInstaller$SessionParams;Landroid/content/pm/PackageInstaller$SessionParams;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/pm/PackageInstallerSession;->write(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/io/File;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;Lcom/android/server/pm/PackageInstallerSession$PerFileChecksum;]Lcom/android/server/pm/PackageInstallerSession;Lcom/android/server/pm/PackageInstallerSession;]Ljava/io/File;Ljava/io/File; HSPLcom/android/server/pm/PackageKeySetData;-><init>()V HSPLcom/android/server/pm/PackageKeySetData;-><init>(Lcom/android/server/pm/PackageKeySetData;)V HSPLcom/android/server/pm/PackageManagerInternalBase;->canQueryPackage(ILjava/lang/String;)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine; @@ -2590,12 +2681,14 @@ HSPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationEnabledStat HSPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationInfo(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine; HSPLcom/android/server/pm/PackageManagerInternalBase;->getInstantAppPackageName(I)Ljava/lang/String;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked; HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked; +HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine; HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;,Lcom/android/server/pm/ComputerLocked; HSPLcom/android/server/pm/PackageManagerInternalBase;->getPackageUid(Ljava/lang/String;JI)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine; HSPLcom/android/server/pm/PackageManagerInternalBase;->getUidTargetSdkVersion(I)I+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine; HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZ)V HSPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService; -HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; +HSPLcom/android/server/pm/PackageManagerInternalBase;->isInstantApp(Ljava/lang/String;I)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine; +HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl; HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageFrozen(Ljava/lang/String;II)Z+]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService; HSPLcom/android/server/pm/PackageManagerInternalBase;->isPackageSuspended(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; HSPLcom/android/server/pm/PackageManagerInternalBase;->isPermissionsReviewRequired(Ljava/lang/String;I)Z+]Lcom/android/server/pm/PackageManagerInternalBase;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl; @@ -2662,11 +2755,11 @@ HSPLcom/android/server/pm/PackageSetting;->getBoolean(I)Z HSPLcom/android/server/pm/PackageSetting;->getCategoryOverride()I HSPLcom/android/server/pm/PackageSetting;->getCpuAbiOverride()Ljava/lang/String; HSPLcom/android/server/pm/PackageSetting;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserStateInternal;Lcom/android/server/pm/pkg/PackageUserStateImpl;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet; +HSPLcom/android/server/pm/PackageSetting;->getEnabled(I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateImpl; HSPLcom/android/server/pm/PackageSetting;->getInstallSource()Lcom/android/server/pm/InstallSource; HSPLcom/android/server/pm/PackageSetting;->getKeySetData()Lcom/android/server/pm/PackageKeySetData; HSPLcom/android/server/pm/PackageSetting;->getLastUpdateTime()J -HSPLcom/android/server/pm/PackageSetting;->getLoadingCompletedTime()J -HSPLcom/android/server/pm/PackageSetting;->getLoadingProgress()F +HSPLcom/android/server/pm/PackageSetting;->getLegacyPermissionState()Lcom/android/server/pm/permission/LegacyPermissionState; HSPLcom/android/server/pm/PackageSetting;->getPackageName()Ljava/lang/String; HSPLcom/android/server/pm/PackageSetting;->getPkg()Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal; HSPLcom/android/server/pm/PackageSetting;->getPkgState()Lcom/android/server/pm/pkg/PackageStateUnserialized; @@ -2674,10 +2767,13 @@ HSPLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbi()Ljava/lang/String; HSPLcom/android/server/pm/PackageSetting;->getSeInfo()Ljava/lang/String;+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized; HSPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbi()Ljava/lang/String; HSPLcom/android/server/pm/PackageSetting;->getSharedLibraryDependencies()Ljava/util/List;+]Lcom/android/server/pm/pkg/PackageStateUnserialized;Lcom/android/server/pm/pkg/PackageStateUnserialized; +HSPLcom/android/server/pm/PackageSetting;->getSignatures()Lcom/android/server/pm/PackageSignatures; HSPLcom/android/server/pm/PackageSetting;->getSigningDetails()Landroid/content/pm/SigningDetails; HSPLcom/android/server/pm/PackageSetting;->getStateForUser(Landroid/os/UserHandle;)Lcom/android/server/pm/pkg/PackageUserState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/pm/PackageSetting;->getTransientState()Lcom/android/server/pm/pkg/PackageStateUnserialized; HSPLcom/android/server/pm/PackageSetting;->getUserStates()Landroid/util/SparseArray; +HSPLcom/android/server/pm/PackageSetting;->getUsesSdkLibraries()[Ljava/lang/String; +HSPLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesVersionsMajor()[J HSPLcom/android/server/pm/PackageSetting;->getUsesStaticLibrariesVersions()[J HSPLcom/android/server/pm/PackageSetting;->getVolumeUuid()Ljava/lang/String; HSPLcom/android/server/pm/PackageSetting;->hasSharedUser()Z @@ -2702,6 +2798,8 @@ HSPLcom/android/server/pm/ParallelPackageParser;->lambda$submit$0(Ljava/io/File; HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; HSPLcom/android/server/pm/PreferredActivityHelper;->replacePreferredActivity(Lcom/android/server/pm/Computer;Lcom/android/server/pm/WatchedIntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService;]Lcom/android/server/pm/PreferredComponent;Lcom/android/server/pm/PreferredComponent;]Lcom/android/server/pm/WatchedIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLcom/android/server/pm/ProtectedPackages;->isOwnerProtectedPackage(ILjava/lang/String;)Z +HSPLcom/android/server/pm/ProtectedPackages;->isPackageProtectedForUser(ILjava/lang/String;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Set;Landroid/util/ArraySet; HSPLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z HSPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z HSPLcom/android/server/pm/ReconcilePackageUtils;->reconcilePackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/Settings;Lcom/android/server/SystemConfig;)Ljava/util/List; @@ -2709,6 +2807,7 @@ HSPLcom/android/server/pm/ReconciledPackage;-><init>(Ljava/util/List;Ljava/util/ HSPLcom/android/server/pm/ReconciledPackage;->getCombinedAvailablePackages()Ljava/util/Map; HSPLcom/android/server/pm/ResilientAtomicFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;ILjava/lang/String;Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;)V HSPLcom/android/server/pm/ResilientAtomicFile;->close()V +HSPLcom/android/server/pm/ResilientAtomicFile;->finishWrite(Ljava/io/FileOutputStream;Z)V+]Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;]Ljava/io/File;Ljava/io/File;]Ljava/io/FileInputStream;Ljava/io/FileInputStream;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream; HSPLcom/android/server/pm/ResilientAtomicFile;->startWrite()Ljava/io/FileOutputStream;+]Ljava/io/File;Ljava/io/File; HSPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/server/pm/UserNeedsBadgingCache;Lcom/android/server/pm/UserNeedsBadgingCache;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList;]Ljava/util/function/Supplier;Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38; HSPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List; @@ -2719,6 +2818,7 @@ HSPLcom/android/server/pm/RestrictionsSet;->getRestrictions(I)Landroid/os/Bundle HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;+]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/pm/SaferIntentUtils$IntentArgs;-><init>(Landroid/content/Intent;Ljava/lang/String;ZZII)V HSPLcom/android/server/pm/SaferIntentUtils;->blockNullAction(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Lcom/android/server/pm/SaferIntentUtils$IntentArgs;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList; +HSPLcom/android/server/pm/SaferIntentUtils;->enforceIntentFilterMatchingWithIntentMatchingFlags(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl;]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerEngine;]Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Lcom/android/server/pm/SaferIntentUtils$IntentArgs;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/pm/SaferIntentUtils;->filterNonExportedComponents(Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Ljava/util/List;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Lcom/android/server/pm/SaferIntentUtils$IntentArgs;Lcom/android/server/pm/SaferIntentUtils$IntentArgs;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/pm/SaferIntentUtils;->infoToComponent(Landroid/content/pm/ComponentInfo;Lcom/android/server/pm/resolution/ComponentResolverApi;Z)Lcom/android/internal/pm/pkg/component/ParsedMainComponent;+]Landroid/content/pm/ComponentInfo;Landroid/content/pm/ActivityInfo;,Landroid/content/pm/ServiceInfo;]Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/pm/resolution/ComponentResolverSnapshot; HSPLcom/android/server/pm/ScanPackageUtils;->applyPolicy(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ILcom/android/server/pm/pkg/AndroidPackage;Z)V @@ -2737,10 +2837,12 @@ HSPLcom/android/server/pm/SettingBase;->registerObserver(Lcom/android/server/uti HSPLcom/android/server/pm/Settings$1;->onChange(Lcom/android/server/utils/Watchable;)V HSPLcom/android/server/pm/Settings$2;->createSnapshot()Lcom/android/server/pm/Settings;+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchableImpl; HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPackagePermissions(ILcom/android/server/utils/WatchedArrayMap;)Ljava/util/Map;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSync(ILcom/android/server/pm/Settings$VersionInfo;Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Ljava/io/File;)V HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;)V HSPLcom/android/server/pm/Settings;->dispatchChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchableImpl; HSPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I+]Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; +HSPLcom/android/server/pm/Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;+]Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray; HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; @@ -2768,8 +2870,6 @@ HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/Shar HSPLcom/android/server/pm/SharedUserSetting;->getPackageStates()Landroid/util/ArraySet;+]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet; HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;Z)V HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V -HPLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda31;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V+]Lcom/android/server/pm/ShortcutLauncher;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutPackageInfo;Lcom/android/server/pm/ShortcutPackageInfo;]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService; HPLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V+]Ljava/util/function/Function;Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda23;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda28;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda31;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;,Lcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda3; HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/ArtBinaryXmlPullParser; @@ -2779,14 +2879,15 @@ HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/ HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlSerializer;Z)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;,Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Base64$Encoder;Ljava/util/Base64$Encoder; HPLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;+]Ljava/io/File;Ljava/io/File; HPLcom/android/server/pm/ShortcutPackageItem;->saveShortcutPackageItem()V+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;,Lcom/android/server/pm/ShortcutPackage;]Ljava/io/File;Ljava/io/File; -HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList; +HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/pm/ShortcutService$4;->onUidStateChanged(IIJI)V+]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService; HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda3;-><init>(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V HPLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z -HPLcom/android/server/pm/ShortcutService$LocalService;->$r8$lambda$4oN-teeezN_bMPNKBELK1aAUWLM(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;+]Lcom/android/server/pm/ShortcutPackageItem;Lcom/android/server/pm/ShortcutLauncher;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser; HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V+]Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutPackage;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService;]Lcom/android/server/pm/ShortcutUser;Lcom/android/server/pm/ShortcutUser; HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService; +HSPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService; +HPLcom/android/server/pm/ShortcutService;->injectHasAccessShortcutsPermission(II)Z+]Landroid/content/Context;Landroid/app/ContextImpl; HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService; HSPLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService; @@ -2837,7 +2938,6 @@ HSPLcom/android/server/pm/UserManagerService;->hasManageUsersOrPermission(Ljava/ HSPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission(I)Z HSPLcom/android/server/pm/UserManagerService;->hasQueryOrCreateUsersPermission()Z HSPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService; -HSPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z HSPLcom/android/server/pm/UserManagerService;->isSameProfileGroupNoChecks(II)Z HSPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z+]Lcom/android/server/pm/UserManagerService$LocalService;Lcom/android/server/pm/UserManagerService$LocalService; HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String; @@ -2853,7 +2953,6 @@ HSPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/ HSPLcom/android/server/pm/UserVisibilityMediator;->isCurrentUserOrRunningProfileOfCurrentUser(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/pm/UserVisibilityMediator;->isUserVisible(I)Z HSPLcom/android/server/pm/WatchedIntentFilter;->getIntentFilter()Landroid/content/IntentFilter; -HSPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl-IA;)V HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->checkClosed()V @@ -2875,8 +2974,8 @@ HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;+]Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService; HSPLcom/android/server/pm/parsing/PackageCacher;->getCacheKey(Ljava/io/File;I)Ljava/lang/String; HSPLcom/android/server/pm/parsing/PackageCacher;->isCacheFileUpToDate(Ljava/io/File;Ljava/io/File;)Z -HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I -HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I +HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl; +HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlagsExt(ILcom/android/server/pm/pkg/PackageStateInternal;)I+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;)V+]Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;,Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;,Lcom/android/internal/pm/pkg/component/ParsedServiceImpl; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V @@ -2887,7 +2986,7 @@ HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateApplicationInfo(Lco HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionInfo(Lcom/android/internal/pm/pkg/component/ParsedPermission;J)Landroid/content/pm/PermissionInfo;+]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProviderInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedProvider;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ProviderInfo;+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;+]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl; -HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateWithComponents(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Landroid/util/ArraySet;,Lcom/android/server/permission/jarjar/kotlin/collections/EmptySet;,Ljava/util/Collections$UnmodifiableSet; +HSPLcom/android/server/pm/parsing/PackageInfoUtils;->generateWithComponents(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/internal/pm/pkg/component/ParsedAttribution;Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl;]Lcom/android/internal/pm/pkg/component/ParsedPermission;Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl;]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/internal/pm/pkg/component/ParsedService;Lcom/android/internal/pm/pkg/component/ParsedServiceImpl;]Lcom/android/internal/pm/pkg/component/ParsedUsesPermission;Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/ArchiveState;Lcom/android/server/pm/pkg/ArchiveState;]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/Set;Landroid/util/ArraySet;,Lcom/android/server/permission/jarjar/kotlin/collections/EmptySet;,Ljava/util/Collections$UnmodifiableSet; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->getDataDir(Lcom/android/server/pm/pkg/PackageStateInternal;I)Ljava/io/File;+]Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->getDeprecatedSignatures(Landroid/content/pm/SigningDetails;J)[Landroid/content/pm/Signature; HSPLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V+]Lcom/android/internal/pm/parsing/pkg/PackageImpl;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; @@ -2900,6 +2999,7 @@ HSPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isMatchForSystemOnly HSPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer; HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector; HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->verifyCallerCanCheckAccess(Ljava/lang/String;Ljava/lang/String;II)V+]Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector; +HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissions(Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/pm/permission/LegacyPermissionState;-><init>()V HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray; HSPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; @@ -2923,6 +3023,7 @@ HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFla HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService; HSPLcom/android/server/pm/permission/PermissionManagerService;->getPersistentDeviceId(I)Ljava/lang/String;+]Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService; HSPLcom/android/server/pm/permission/PermissionManagerService;->isRegisteredAttributionSource(Landroid/content/AttributionSourceState;)Z +HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V+]Lcom/android/server/pm/permission/PermissionManagerServiceInterface;Lcom/android/server/permission/access/permission/PermissionService; HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserState;+]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->getApexModuleName()Ljava/lang/String; @@ -2960,7 +3061,6 @@ HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isStopped()Z HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isSuspended()Z HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isVirtualPreload()Z HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged()V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl; -HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setBoolean(IZ)V HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDisabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl; HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl; HSPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserState;J)Z+]Lcom/android/server/pm/pkg/PackageUserState;Lcom/android/server/pm/pkg/PackageUserStateDefault;,Lcom/android/server/pm/pkg/PackageUserStateImpl; @@ -3004,8 +3104,6 @@ HSPLcom/android/server/pm/resolution/ComponentResolver;->$r8$lambda$UVMyfxjaimXr HSPLcom/android/server/pm/resolution/ComponentResolver;->addActivitiesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; HSPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/Computer;)V+]Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedActivityImpl;]Lcom/android/server/pm/Computer;Lcom/android/server/pm/ComputerLocked;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/internal/pm/pkg/component/ParsedProvider;Lcom/android/internal/pm/pkg/component/ParsedProviderImpl;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; -HSPLcom/android/server/pm/resolution/ComponentResolver;->addReceiversLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; -HSPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V+]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; HSPLcom/android/server/pm/resolution/ComponentResolver;->snapshot()Lcom/android/server/pm/resolution/ComponentResolverApi; HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getActivity(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity; HSPLcom/android/server/pm/resolution/ComponentResolverBase;->getReceiver(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity; @@ -3031,7 +3129,7 @@ HSPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String; HSPLcom/android/server/policy/AppOpsPolicy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ILcom/android/internal/util/function/HexConsumer;)V+]Lcom/android/internal/util/function/HexConsumer;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11; HSPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZILcom/android/internal/util/function/NonaFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/NonaFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5; HSPLcom/android/server/policy/AppOpsPolicy;->resolveDatasourceOp(IILjava/lang/String;Ljava/lang/String;)I -HSPLcom/android/server/policy/AppOpsPolicy;->resolveRecordAudioOp(II)I+]Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;]Landroid/service/voice/VoiceInteractionManagerInternal;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService; +HSPLcom/android/server/policy/AppOpsPolicy;->resolveRecordAudioOp(II)I HSPLcom/android/server/policy/AppOpsPolicy;->resolveSandboxedServiceOp(II)I HSPLcom/android/server/policy/AppOpsPolicy;->resolveUid(II)I+]Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;Landroid/service/voice/VoiceInteractionManagerInternal$HotwordDetectionServiceIdentity;]Landroid/service/voice/VoiceInteractionManagerInternal;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService; HSPLcom/android/server/policy/AppOpsPolicy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZIILcom/android/internal/util/function/DodecFunction;)Landroid/app/SyncNotedAppOp;+]Lcom/android/internal/util/function/DodecFunction;Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7; @@ -3047,7 +3145,6 @@ HSPLcom/android/server/policy/PhoneWindowManager;->setAllowLockscreenWhenOn(IZ)V HSPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V+]Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/HashSet;Ljava/util/HashSet; HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; -HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZZ)I+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I+]Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z+]Lcom/android/server/policy/keyguard/KeyguardServiceWrapper;Lcom/android/server/policy/keyguard/KeyguardServiceWrapper; HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isOccluded()Z @@ -3058,6 +3155,8 @@ HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z HSPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->$r8$lambda$iHIoFGt-sugSqlklSHHOwdIQL9Y(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/content/pm/Signature;Landroid/content/pm/Signature;]Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/parsing/pkg/PackageImpl;]Ljava/io/DataOutputStream;Ljava/io/DataOutputStream;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; HSPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J+]Landroid/attention/AttentionManagerInternal;Lcom/android/server/attention/AttentionManagerService$LocalService;]Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector;]Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/wm/WindowManagerService$LocalService; HSPLcom/android/server/power/FaceDownDetector;->onSensorChanged(Landroid/hardware/SensorEvent;)V +HSPLcom/android/server/power/FrameworkStatsLogger;->wakelockStateChanged(ILjava/lang/String;ILcom/android/server/power/FrameworkStatsLogger$WakelockEventType;)V +HSPLcom/android/server/power/FrameworkStatsLogger;->wakelockStateChanged(Ljava/lang/String;Landroid/os/WorkSource$WorkChain;ILcom/android/server/power/FrameworkStatsLogger$WakelockEventType;)V HSPLcom/android/server/power/InattentiveSleepWarningController;->isShown()Z HSPLcom/android/server/power/Notifier$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/Notifier;ZLjava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;JLandroid/os/IWakeLockCallback;)V HSPLcom/android/server/power/Notifier$$ExternalSyntheticLambda2;->run()V @@ -3066,7 +3165,7 @@ HPLcom/android/server/power/Notifier$$ExternalSyntheticLambda5;->run()V HSPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V HSPLcom/android/server/power/Notifier$RealInjector;->currentTimeMillis()J HSPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I -HSPLcom/android/server/power/Notifier;->lambda$notifyWakeLockListener$9(ZLjava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;JLandroid/os/IWakeLockCallback;)V+]Landroid/os/IWakeLockCallback;Landroid/os/IWakeLockCallback$Stub$Proxy;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags; +HSPLcom/android/server/power/Notifier;->lambda$notifyWakeLockListener$9(ZLjava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;JLandroid/os/IWakeLockCallback;)V+]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags; HSPLcom/android/server/power/Notifier;->logWakelockStateChanged(ILjava/lang/String;ILandroid/os/WorkSource;Lcom/android/server/power/FrameworkStatsLogger$WakelockEventType;)V+]Landroid/os/BatteryStatsInternal;Lcom/android/server/am/BatteryStatsService$LocalService;]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/FrameworkStatsLogger;Lcom/android/server/power/FrameworkStatsLogger;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/Notifier;->notifyWakeLockListener(Landroid/os/IWakeLockCallback;Ljava/lang/String;ZIIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;)V+]Lcom/android/server/power/Notifier$Injector;Lcom/android/server/power/Notifier$RealInjector; HSPLcom/android/server/power/Notifier;->notifyWakelockAcquisition(Ljava/lang/String;IIILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;J)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Lcom/android/internal/app/IBatteryStats;Lcom/android/server/am/BatteryStatsService; @@ -3095,7 +3194,7 @@ HSPLcom/android/server/power/PowerGroup;->setWakeLockSummaryLocked(I)V HSPLcom/android/server/power/PowerGroup;->supportsSandmanLocked()Z HSPLcom/android/server/power/PowerGroup;->updateLocked(FLjava/lang/CharSequence;ZZIIFZZLandroid/os/PowerSaveState;ZZZZZZ)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/power/Notifier;Lcom/android/server/power/Notifier;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup; HSPLcom/android/server/power/PowerGroup;->updateScreenPolicyLocked(ZZZZZ)V+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags; -HSPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags; +HSPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/os/WorkSource;Landroid/os/WorkSource; HSPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z HSPLcom/android/server/power/PowerManagerService$BinderService;->isDisplayInteractive(I)Z HSPLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z @@ -3134,6 +3233,7 @@ HSPLcom/android/server/power/PowerManagerService;->isAttentiveTimeoutExpired(Lco HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked(Lcom/android/server/power/PowerGroup;)Z+]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup; HSPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z HSPLcom/android/server/power/PowerManagerService;->isInteractiveInternal(II)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup; +HSPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked(Lcom/android/server/power/PowerGroup;)Z+]Lcom/android/server/power/PowerManagerService$Clock;Lcom/android/server/power/PowerManagerService$Injector$2; HSPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z HSPLcom/android/server/power/PowerManagerService;->maybeHideInattentiveSleepWarningLocked(JJ)Z+]Lcom/android/server/power/InattentiveSleepWarningController;Lcom/android/server/power/InattentiveSleepWarningController; HSPLcom/android/server/power/PowerManagerService;->needSuspendBlockerLocked()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/PowerGroup;Lcom/android/server/power/PowerGroup; @@ -3198,6 +3298,7 @@ HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;->isEnabled()Z HSPLcom/android/server/power/feature/PowerManagerFlags;->improveWakelockLatency()Z HSPLcom/android/server/power/feature/PowerManagerFlags;->isFrameworkWakelockInfoEnabled()Z HSPLcom/android/server/power/feature/PowerManagerFlags;->isPolicyReasonInDisplayPowerRequestEnabled()Z +HSPLcom/android/server/power/feature/PowerManagerFlags;->isScreenTimeoutPolicyListenerApiEnabled()Z HSPLcom/android/server/power/hint/HintManagerService$AppHintSession;-><init>(Lcom/android/server/power/hint/HintManagerService;III[ILandroid/os/IBinder;JJLjava/lang/Integer;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy; HPLcom/android/server/power/hint/HintManagerService$AppHintSession;->close()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Landroid/util/ArraySet; HSPLcom/android/server/power/hint/HintManagerService$BinderService;->createHintSessionWithConfig(Landroid/os/IBinder;ILandroid/os/SessionCreationConfig;Landroid/hardware/power/SessionConfig;)Landroid/os/IHintManager$SessionCreationReturn;+]Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;Lcom/android/server/power/hint/HintManagerService$AppHintSessionSnapshot;]Lcom/android/server/power/hint/HintManagerService$NativeWrapper;Lcom/android/server/power/hint/HintManagerService$NativeWrapper;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Landroid/util/ArraySet; @@ -3216,16 +3317,17 @@ HSPLcom/android/server/power/stats/BatteryStatsImpl$2;->retrieveTopActivityTimes HSPLcom/android/server/power/stats/BatteryStatsImpl$4;->retrieveUidWakelockDuration(Lcom/android/server/power/stats/WakelockPowerStatsCollector$WakelockDurationRetriever$Callback;)V+]Landroid/os/BatteryStats$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Landroid/os/BatteryStats$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/WakelockPowerStatsCollector$WakelockDurationRetriever$Callback;Lcom/android/server/power/stats/WakelockPowerStatsCollector$$ExternalSyntheticLambda0; HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->addCpuClusterSpeedDurationsMs(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;IIJ)V+]Lcom/android/server/power/stats/CpuPowerCalculator;Lcom/android/server/power/stats/CpuPowerCalculator; HPLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;->getOrCreateUidCpuClusterCharges(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)[D +HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase; HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer; +HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase; HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->uidProcessStateChanged(II)V -HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase; HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V HPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([JZ)V @@ -3251,7 +3353,7 @@ HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->readSummaryFromParce HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;megamorphic_types HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; -HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; +HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/server/power/stats/BatteryStatsImpl$Timer; @@ -3263,15 +3365,18 @@ HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTi HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getOrCreateEnergyConsumerStatsIfSupportedLocked()Lcom/android/internal/power/EnergyConsumerStats; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J+]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiBatchedScanTime(IJI)J +HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiControllerActivity()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->maybeScheduleExternalStatsSync(II)V+]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid; -HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase; +HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid; +HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->reset(JJI)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z+]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid; HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(IJJ)V+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid; @@ -3281,26 +3386,27 @@ HSPLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryUptimeLocked(J)J HSPLcom/android/server/power/stats/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;+]Ljava/util/HashMap;Ljava/util/HashMap; HSPLcom/android/server/power/stats/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;JJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;+]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(IJJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HPLcom/android/server/power/stats/BatteryStatsImpl;->lambda$readKernelUidCpuFreqTimesLocked$4(JJZZZII[ILcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;I[J)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;]Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;Lcom/android/server/am/BatteryStatsService$3;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl;->mapUid(I)I+]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver; HPLcom/android/server/power/stats/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/List;Ljava/util/ArrayList; -HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; -HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; +HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; +HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver; HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V+]Landroid/os/WorkSource;Landroid/os/WorkSource;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/feature/PowerManagerFlags;Lcom/android/server/power/feature/PowerManagerFlags;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V+]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; -HPLcom/android/server/power/stats/BatteryStatsImpl;->noteWakeupReasonLocked(Ljava/lang/String;JJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordPowerStats(Lcom/android/internal/os/PowerStats;)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1; HSPLcom/android/server/power/stats/BatteryStatsImpl;->reportChangesToStatsLog(III)V+]Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger; HSPLcom/android/server/power/stats/BatteryStatsImpl;->retrieveBluetoothScanTimesLocked(Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever$Callback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever$Callback;Lcom/android/server/power/stats/BluetoothPowerStatsCollector$$ExternalSyntheticLambda0; HSPLcom/android/server/power/stats/BatteryStatsImpl;->retrieveWifiScanTimesLocked(Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiStatsRetriever$Callback;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/WifiPowerStatsCollector$WifiStatsRetriever$Callback;Lcom/android/server/power/stats/WifiPowerStatsCollector$$ExternalSyntheticLambda1; -HSPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; +HSPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;Lcom/android/server/power/stats/BatteryExternalStatsWorker;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Lcom/android/server/power/stats/BatteryUsageStatsProvider;Lcom/android/server/power/stats/BatteryUsageStatsProvider; HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateClusterSpeedTimes(Landroid/util/SparseLongArray;ZLcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;Lcom/android/server/power/stats/BatteryStatsImpl$CpuDeltaPowerAccumulator;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl; HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V+]Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/CpuScalingPolicies;]Lcom/android/internal/os/KernelCpuSpeedReader;Lcom/android/internal/os/KernelCpuSpeedReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;]Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;]Lcom/android/internal/power/EnergyConsumerStats;Lcom/android/internal/power/EnergyConsumerStats;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;,Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V+]Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Landroid/util/ArrayMap;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet; +HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateWifiBatteryStats(Landroid/os/connectivity/WifiActivityEnergyInfo;Landroid/net/NetworkStats;JJJ)V+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/PowerProfile;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/Iterator;Landroid/net/NetworkStats$1; HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/internal/os/MonotonicClock;Lcom/android/internal/os/MonotonicClock;]Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;]Lcom/android/server/power/stats/BatteryStatsImpl$Counter;Lcom/android/server/power/stats/BatteryStatsImpl$Counter;]Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;,Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;]Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;]Lcom/android/server/power/stats/BatteryStatsImpl$Timer;Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;,Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;]Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;]Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$EntryIterator;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$Node;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet;,Ljava/util/HashMap$EntrySet; HSPLcom/android/server/power/stats/BluetoothPowerStatsCollector;->collectBluetoothActivityInfo()Landroid/bluetooth/BluetoothActivityEnergyInfo;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/BluetoothPowerStatsCollector$BluetoothStatsRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothStatsRetrieverImpl;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BluetoothPowerStatsLayout;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/power/stats/CpuPowerCalculator;->calculatePerCpuFreqPowerMah(IIJ)D+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator; @@ -3310,33 +3416,38 @@ HSPLcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector;->sch HSPLcom/android/server/power/stats/EnergyConsumerSnapshot;->updateAndGetDelta([Landroid/hardware/power/stats/EnergyConsumerResult;I)Lcom/android/server/power/stats/EnergyConsumerSnapshot$EnergyConsumerDeltaData;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray; HSPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$ValueIterator; HSPLcom/android/server/power/stats/KernelWakelockReader;->updateWakelockStats([Landroid/system/suspend/internal/WakeLockInfo;Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;+]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats; +HSPLcom/android/server/power/stats/MobileRadioPowerStatsCollector;->collectModemActivityInfo()Landroid/telephony/ModemActivityInfo;+]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Ljava/util/function/LongSupplier;Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda3;,Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda4; HSPLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->collectConsumedEnergy(Lcom/android/internal/os/PowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;)Z+]Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetriever;Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyRetrieverImpl; HSPLcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;->populatePowerStats(Lcom/android/internal/os/PowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;[Landroid/hardware/power/stats/EnergyConsumerResult;II)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/PowerStatsLayout;megamorphic_types -HSPLcom/android/server/power/stats/PowerStatsCollector;->deliverStats(Lcom/android/internal/os/PowerStats;)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;,Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector$$ExternalSyntheticLambda0; +HSPLcom/android/server/power/stats/PowerStatsCollector;->deliverStats(Lcom/android/internal/os/PowerStats;)V+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda3;,Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda8;,Lcom/android/server/power/stats/CustomEnergyConsumerPowerStatsCollector$$ExternalSyntheticLambda0; HSPLcom/android/server/power/stats/PowerStatsCollector;->schedule()Z+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1; HSPLcom/android/server/power/stats/PowerStatsUidResolver;->mapUid(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/power/stats/ScreenPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1;]Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;Lcom/android/server/power/stats/PowerStatsCollector$ConsumedEnergyHelper;]Lcom/android/server/power/stats/ScreenPowerStatsCollector$ScreenUsageTimeRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$2;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout; +HSPLcom/android/server/power/stats/ScreenPowerStatsCollector;->lambda$collectStats$0(IJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout; HSPLcom/android/server/power/stats/UsageBasedPowerEstimator;->calculatePower(J)D +HSPLcom/android/server/power/stats/WifiPowerStatsCollector;->collectNetworkStats()Landroid/net/NetworkStats;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/PowerStatsUidResolver;Lcom/android/server/power/stats/PowerStatsUidResolver;]Lcom/android/server/power/stats/WifiPowerStatsCollector$Injector;Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/WifiPowerStatsLayout;]Lcom/android/server/power/stats/format/WifiPowerStatsLayout;Lcom/android/server/power/stats/format/WifiPowerStatsLayout;]Ljava/util/function/Supplier;Lcom/android/server/power/stats/BatteryStatsImpl$PowerStatsCollectorInjector$$ExternalSyntheticLambda1; HSPLcom/android/server/power/stats/format/BluetoothPowerStatsLayout;->getUidRxBytes([J)J HSPLcom/android/server/power/stats/format/BluetoothPowerStatsLayout;->getUidTxBytes([J)J HSPLcom/android/server/power/stats/format/CpuPowerStatsLayout;->getCpuPowerBracketCount()I HSPLcom/android/server/power/stats/format/CpuPowerStatsLayout;->getTimeByScalingStep([JI)J HSPLcom/android/server/power/stats/format/CpuPowerStatsLayout;->setUidTimeByPowerBracket([JIJ)V +HSPLcom/android/server/power/stats/format/PowerStatsLayout;-><init>()V HSPLcom/android/server/power/stats/format/PowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V HSPLcom/android/server/power/stats/format/PowerStatsLayout;->appendFormat(Ljava/lang/StringBuilder;IILjava/lang/String;I)V HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidConsumedEnergy([JI)J -HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidPowerEstimate([J)D HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUidUsageDuration([J)J +HSPLcom/android/server/power/stats/format/PowerStatsLayout;->getUsageDuration([J)J HSPLcom/android/server/power/stats/format/PowerStatsLayout;->setUidPowerEstimate([JD)V HSPLcom/android/server/power/stats/format/PowerStatsLayout;->toExtras(Landroid/os/PersistableBundle;)V HSPLcom/android/server/power/stats/format/ScreenPowerStatsLayout;-><init>(Lcom/android/internal/os/PowerStats$Descriptor;)V HSPLcom/android/server/power/stats/format/WifiPowerStatsLayout;->getUidRxPackets([J)J HSPLcom/android/server/power/stats/format/WifiPowerStatsLayout;->getUidTxPackets([J)J +HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;Landroid/util/SparseBooleanArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->addClockUpdate(JJ)V+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->addPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->getPowerComponentStats()Ljava/util/List;+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->isCompatible(Lcom/android/internal/os/PowerStats;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->noteStateChange(Landroid/os/BatteryStats$HistoryItem;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; +HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->reset()V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/AggregatedPowerStats;->setUidState(IIIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->getDeviceStateConfig()[Lcom/android/server/power/stats/processor/MultiStateStats$States; HSPLcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;->getUidStateConfig()[Lcom/android/server/power/stats/processor/MultiStateStats$States; @@ -3345,11 +3456,13 @@ HSPLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;- HSPLcom/android/server/power/stats/processor/AmbientDisplayPowerStatsProcessor;->lambda$finish$0(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[I)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/AmbientDisplayPowerStatsLayout;]Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;Lcom/android/server/power/stats/format/ScreenPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/AudioPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I HSPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/power/stats/format/BasePowerStatsLayout;Lcom/android/server/power/stats/format/BasePowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BasePowerStatsLayout;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->noteBatteryLevel(IIJ)V HSPLcom/android/server/power/stats/processor/BasePowerStatsProcessor;->setUidState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;IIIJ)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->combineDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeDevicePowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Z)V+]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeUidActivityTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->ensureInitialized()V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/BinaryStatePowerStatsLayout;,Lcom/android/server/power/stats/format/GnssPowerStatsLayout; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->flushPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Lcom/android/server/power/stats/processor/BinaryStatePowerStatsProcessor;megamorphic_types @@ -3380,7 +3493,7 @@ HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->co HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->computeUidRxTxTotals(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;ILcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;)V+]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor;->lambda$computeDevicePowerEstimates$0(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[ILcom/android/server/power/stats/processor/MobileRadioPowerStatsProcessor$Intermediates;I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/UsageBasedPowerEstimator;Lcom/android/server/power/stats/UsageBasedPowerEstimator;]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; -HPLcom/android/server/power/stats/processor/MultiStateStats$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V +HSPLcom/android/server/power/stats/processor/MultiStateStats$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;-><init>(I[Lcom/android/server/power/stats/processor/MultiStateStats$States;)V HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->create()Lcom/android/server/power/stats/processor/MultiStateStats; HSPLcom/android/server/power/stats/processor/MultiStateStats$Factory;->getSerialState([I)I+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory; @@ -3392,17 +3505,19 @@ HSPLcom/android/server/power/stats/processor/MultiStateStats$States;->isTracked( HSPLcom/android/server/power/stats/processor/MultiStateStats;-><init>(Lcom/android/server/power/stats/processor/MultiStateStats$Factory;I)V HSPLcom/android/server/power/stats/processor/MultiStateStats;->getStats([J[I)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory; HSPLcom/android/server/power/stats/processor/MultiStateStats;->increment([JJ)V +HSPLcom/android/server/power/stats/processor/MultiStateStats;->lambda$writeXml$0(Lcom/android/modules/utils/TypedXmlSerializer;[J[I)V HSPLcom/android/server/power/stats/processor/MultiStateStats;->setState(IIJ)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory; HSPLcom/android/server/power/stats/processor/MultiStateStats;->setStats([I[J)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory; -HPLcom/android/server/power/stats/processor/MultiStateStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V -HPLcom/android/server/power/stats/processor/MultiStateStats;->writeXmlForStates(Lcom/android/modules/utils/TypedXmlSerializer;[I[J)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory; +HSPLcom/android/server/power/stats/processor/MultiStateStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V +HSPLcom/android/server/power/stats/processor/MultiStateStats;->writeXmlForStates(Lcom/android/modules/utils/TypedXmlSerializer;[I[J)V+]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory; +HSPLcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; +HSPLcom/android/server/power/stats/processor/PhoneCallPowerStatsProcessor;->lambda$finish$0(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[I)V+]Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;Lcom/android/server/power/stats/format/MobileRadioPowerStatsLayout;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/PhoneCallPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->addPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->addProcessedPowerStats(Lcom/android/internal/os/PowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->collectUids(Ljava/util/Collection;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Collection;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createDeviceStats(J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->createUidStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats$UidStats;J)V+]Lcom/android/server/power/stats/processor/MultiStateStats$Factory;Lcom/android/server/power/stats/processor/MultiStateStats$Factory;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; -HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->finish(J)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getDeviceStats([J[I)Z+]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getUidStats(I)Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats$UidStats;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->getUidStats([JI[I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; @@ -3413,7 +3528,7 @@ HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setState(IIJ)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setUidState(IIIJ)V+]Lcom/android/server/power/stats/processor/PowerStatsProcessor;megamorphic_types HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->setUidStats(I[I[J)V+]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; -HPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; +HSPLcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/os/PowerStats$Descriptor;Lcom/android/internal/os/PowerStats$Descriptor;]Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/ArtBinaryXmlSerializer;]Lcom/android/server/power/stats/processor/MultiStateStats;Lcom/android/server/power/stats/processor/MultiStateStats; HSPLcom/android/server/power/stats/processor/PowerStatsAggregator;->aggregatePowerStats(Lcom/android/internal/os/BatteryStatsHistory;JJLjava/util/function/Consumer;)V+]Lcom/android/internal/os/BatteryStatsHistory;Lcom/android/internal/os/BatteryStatsHistory;]Lcom/android/internal/os/BatteryStatsHistoryIterator;Lcom/android/internal/os/BatteryStatsHistoryIterator;]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Ljava/util/function/Consumer;Lcom/android/server/power/stats/processor/MultiStatePowerAttributor$$ExternalSyntheticLambda17;,Lcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda0; HSPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/processor/PowerStatsExporter;IILcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;[J[DLcom/android/server/power/stats/format/PowerStatsLayout;[JZLcom/android/server/power/stats/processor/PowerStatsExporter$BatteryLevelInfo;)V HSPLcom/android/server/power/stats/processor/PowerStatsExporter$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V @@ -3428,10 +3543,14 @@ HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatter HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryUsageStatsBuilder(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/AggregatedPowerStats;)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStats;Lcom/android/server/power/stats/processor/AggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateBatteryUsageStatsBuilder(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/PowerStatsExporter;->populateUidBatteryConsumers(Landroid/os/BatteryUsageStats$Builder;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/format/PowerStatsLayout;Ljava/util/List;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;[JZII)V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;-><init>(Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;)V +HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->addDeviceStateEstimations()V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->addUidStateEstimations()V+]Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;Lcom/android/server/power/stats/processor/AggregatedPowerStatsConfig$PowerComponent;]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->getCombinedDeviceStateEstimate([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)Lcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;+]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->getUidStateEstimate(Lcom/android/server/power/stats/processor/PowerStatsProcessor$CombinedDeviceStateEstimate;)Lcom/android/server/power/stats/processor/PowerStatsProcessor$UidStateEstimate;+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;->resetIntermediates()V+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->concatLabels([Lcom/android/server/power/stats/processor/MultiStateStats$States;[I)Ljava/lang/String;+]Lcom/android/server/power/stats/processor/MultiStateStats$States;Lcom/android/server/power/stats/processor/MultiStateStats$States; +HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->getAllTrackedStateCombinations([Lcom/android/server/power/stats/processor/MultiStateStats$States;)[[I HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V HSPLcom/android/server/power/stats/processor/PowerStatsProcessor;->setUidState(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;IIIJ)V+]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; HSPLcom/android/server/power/stats/processor/ScreenPowerStatsProcessor;->combineDeviceStateEstimates()V+]Ljava/util/List;Ljava/util/ArrayList; @@ -3443,6 +3562,7 @@ HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->compute HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->computeUidPowerEstimates(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Ljava/util/List;)V+]Landroid/hardware/SensorManager;Landroid/hardware/SystemSensorManager;]Lcom/android/server/power/stats/format/PowerStatsLayout;Lcom/android/server/power/stats/format/SensorPowerStatsLayout;]Lcom/android/server/power/stats/format/SensorPowerStatsLayout;Lcom/android/server/power/stats/format/SensorPowerStatsLayout;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$UnmodifiableRandomAccessList; HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->finish(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;]Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;Lcom/android/server/power/stats/processor/PowerStatsProcessor$PowerEstimationPlan;]Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor;Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor; HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->flushPowerStats(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats; +HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->makeLabel(Landroid/hardware/Sensor;Ljava/util/List;)Ljava/lang/String;+]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->noteStateChange(Lcom/android/server/power/stats/processor/PowerComponentAggregatedPowerStats;Landroid/os/BatteryStats$HistoryItem;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor;Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor; HSPLcom/android/server/power/stats/processor/SensorPowerStatsProcessor;->recordUsageDuration(Lcom/android/server/power/stats/processor/SensorPowerStatsProcessor$SensorState;J)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/power/stats/format/SensorPowerStatsLayout;Lcom/android/server/power/stats/format/SensorPowerStatsLayout; HSPLcom/android/server/power/stats/processor/VideoPowerStatsProcessor;->getBinaryState(Landroid/os/BatteryStats$HistoryItem;)I @@ -3457,7 +3577,6 @@ HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory; HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->logWakeupAttribution(Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Wakeup;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteUidProcessState(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; -HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakeupTimeAndReason(JJLjava/lang/String;)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/powerstats/PowerStatsService$LocalService;->getEnergyConsumedAsync([I)Ljava/util/concurrent/CompletableFuture; HSPLcom/android/server/powerstats/PowerStatsService;->getHandler()Landroid/os/Handler; @@ -3465,10 +3584,12 @@ HSPLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->pullOnDevicePowerM HSPLcom/android/server/selinux/RateLimiter;->tryAcquire()Z+]Lcom/android/internal/os/Clock;Lcom/android/internal/os/Clock$1; HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->addPath(Ljava/util/List;)V+]Lcom/android/server/slice/DirtyTracker;Lcom/android/server/slice/SliceClientPermissions;]Ljava/util/List;Landroid/net/Uri$PathSegments; HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->isPathPrefixMatch([Ljava/lang/String;[Ljava/lang/String;)Z +HPLcom/android/server/slice/SliceManagerService;->getProviderPkg(Landroid/net/Uri;I)Ljava/lang/String;+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri; HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->equals(Ljava/lang/Object;)Z HPLcom/android/server/slice/SlicePermissionManager;->grantSliceAccess(Ljava/lang/String;ILjava/lang/String;ILandroid/net/Uri;)V+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;]Lcom/android/server/slice/SliceClientPermissions;Lcom/android/server/slice/SliceClientPermissions;]Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;]Lcom/android/server/slice/SliceProviderPermissions;Lcom/android/server/slice/SliceProviderPermissions; HSPLcom/android/server/smartspace/SmartspaceManagerService$SmartspaceManagerStub;->runForUserLocked(Ljava/lang/String;Landroid/app/smartspace/SmartspaceSessionId;Ljava/util/function/Consumer;)V+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Lcom/android/server/infra/ServiceNameResolver;Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;]Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/wm/ActivityTaskManagerService$LocalService;]Ljava/util/function/Consumer;megamorphic_types HPLcom/android/server/soundtrigger/SoundTriggerService$MyAppOpsListener;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Ljava/util/function/Consumer;Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService$SessionImpl$$ExternalSyntheticLambda2; +HSPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller$$ExternalSyntheticLambda1;->run()V HSPLcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;->noteUidProcessState(IIJJ)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HPLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda18;->onUidCpuTime(ILjava/lang/Object;)V HPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I+]Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;Lcom/android/server/stats/pull/AggregatedMobileDataStatsPuller;]Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService; @@ -3483,6 +3604,7 @@ HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDataBytesTransferLoc HPLcom/android/server/stats/pull/StatsPullAtomService;->pullKernelWakelockLocked(ILjava/util/List;)I+]Lcom/android/server/power/stats/KernelWakelockReader;Lcom/android/server/power/stats/KernelWakelockReader;]Ljava/util/HashMap;Lcom/android/server/power/stats/KernelWakelockStats;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; HPLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfoLocked(ILjava/util/List;)I+]Landroid/telephony/TelephonyManager;Landroid/telephony/TelephonyManager;]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/stats/pull/StatsPullAtomService;->removeEmptyEntries(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;+]Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry; +HPLcom/android/server/stats/pull/StatsPullAtomService;->sampleAppOps(Ljava/util/List;Ljava/util/List;II)I+]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;+]Ljava/util/function/Function;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda6;,Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda7; HSPLcom/android/server/stats/pull/netstats/NetworkStatsAccumulator;->snapshotPlusFollowingStats(JLcom/android/server/stats/pull/netstats/NetworkStatsAccumulator$StatsQueryFunction;)Landroid/net/NetworkStats;+]Lcom/android/server/stats/pull/netstats/NetworkStatsAccumulator$StatsQueryFunction;Lcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5; HSPLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZZZILcom/android/server/stats/pull/netstats/SubInfo;IZ)V @@ -3490,7 +3612,8 @@ HPLcom/android/server/stats/pull/netstats/NetworkStatsExt;->hasSameSlicing(Lcom/ HSPLcom/android/server/stats/pull/netstats/NetworkStatsUtils;->fromBucket(Landroid/app/usage/NetworkStats$Bucket;)Landroid/net/NetworkStats$Entry;+]Landroid/app/usage/NetworkStats$Bucket;Landroid/app/usage/NetworkStats$Bucket; HSPLcom/android/server/stats/pull/netstats/NetworkStatsUtils;->fromPublicNetworkStats(Landroid/app/usage/NetworkStats;)Landroid/net/NetworkStats; HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(IZ)V+]Lcom/android/internal/statusbar/IStatusBar;Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy; -HSPLcom/android/server/storage/DeviceStorageMonitorService;->checkLow()V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Ljava/io/File;Ljava/io/File;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; +HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;+]Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/usage/UsageStatsService$LocalService;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/PackageManager;Landroid/app/ApplicationPackageManager;]Landroid/os/UserManager;Landroid/os/UserManager;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/storage/DeviceStorageMonitorService;->checkLow()V+]Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager;]Landroid/os/storage/VolumeInfo;Landroid/os/storage/VolumeInfo;]Ljava/io/File;Ljava/io/File;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/trust/TrustManagerService$3;->isDeviceLocked(II)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService; HSPLcom/android/server/trust/TrustManagerService$3;->isDeviceSecure(II)Z+]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils; HSPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V+]Landroid/app/ActivityManager;Landroid/app/ActivityManager;]Landroid/app/admin/DevicePolicyManager;Landroid/app/admin/DevicePolicyManager;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;]Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;]Landroid/os/UserManager;Landroid/os/UserManager;]Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/widget/LockPatternUtils;]Lcom/android/server/trust/TrustAgentWrapper;Lcom/android/server/trust/TrustAgentWrapper;]Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;]Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; @@ -3526,9 +3649,11 @@ HSPLcom/android/server/usage/AppStandbyController;->isInParole()Z HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/usage/AppStandbyController$Injector;Lcom/android/server/usage/AppStandbyController$Injector;]Ljava/util/List;Ljava/util/ArrayList;,Ljava/util/Collections$EmptyList; HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(Ljava/lang/String;IJI)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory; HSPLcom/android/server/usage/AppStandbyController;->setLastJobRunTime(Ljava/lang/String;IJ)V+]Lcom/android/server/usage/AppIdleHistory;Lcom/android/server/usage/AppIdleHistory; +HSPLcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;->logNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V+]Lcom/android/server/usage/BroadcastResponseStatsLogger$Data;Lcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent; HPLcom/android/server/usage/IntervalStats;-><init>()V HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList; HPLcom/android/server/usage/IntervalStats;->deobfuscateUsageStats(Lcom/android/server/usage/PackagesTokenData;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; +HPLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats; HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats; HPLcom/android/server/usage/IntervalStats;->obfuscateEventsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList; HPLcom/android/server/usage/IntervalStats;->obfuscateUsageStatsData(Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; @@ -3551,7 +3676,9 @@ HPLcom/android/server/usage/UsageStatsProtoV2;->parseEvent(Landroid/util/proto/P HPLcom/android/server/usage/UsageStatsProtoV2;->parseUsageStats(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageStats; HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;Z)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray; HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Landroid/util/SparseArray;Landroid/util/SparseArray; +HPLcom/android/server/usage/UsageStatsProtoV2;->writeObfuscatedData(Ljava/io/OutputStream;Lcom/android/server/usage/PackagesTokenData;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/usage/UsageStatsProtoV2;->writeOffsetTimestamp(Landroid/util/proto/ProtoOutputStream;JJJ)V +HSPLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z HSPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJI)V HPLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/app/IActivityManager;Lcom/android/server/am/ActivityManagerService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/usage/AppStandbyInternal;Lcom/android/server/usage/AppStandbyController; HPLcom/android/server/usage/UsageStatsService$BinderService;->hasQueryPermission(Ljava/lang/String;)Z+]Landroid/app/AppOpsManager;Landroid/app/AppOpsManager;]Landroid/content/Context;Landroid/app/ContextImpl; @@ -3566,7 +3693,8 @@ HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/U HSPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/concurrent/CopyOnWriteArraySet;Ljava/util/concurrent/CopyOnWriteArraySet; HPLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Ljava/util/List;Ljava/util/ArrayList; HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z+]Landroid/app/usage/EventList;Landroid/app/usage/EventList;]Ljava/util/List;Ljava/util/ArrayList; -HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;+]Ljava/util/List;Ljava/util/ArrayList; +HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J +HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;+]Lcom/android/server/usage/UsageStatsDatabase$StatCombiner;megamorphic_types]Lcom/android/server/usage/UsageStatsDatabase;Lcom/android/server/usage/UsageStatsDatabase; HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V+]Lcom/android/server/usage/IntervalStats;Lcom/android/server/usage/IntervalStats;]Lcom/android/server/usage/UnixCalendar;Lcom/android/server/usage/UnixCalendar; HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->$r8$lambda$a9G3NCnbGSjGaU6KBkUKenfyhOo(Landroid/util/Pair;Landroid/util/Pair;)I @@ -3593,6 +3721,7 @@ HSPLcom/android/server/utils/WatchableImpl;->registerObserver(Lcom/android/serve HSPLcom/android/server/utils/WatchableImpl;->seal()V HSPLcom/android/server/utils/WatchedArrayList$1;->onChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayList; HSPLcom/android/server/utils/WatchedArrayList;->get(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/utils/WatchedArrayList;->size()I+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/utils/WatchedArrayList;->snapshot(Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayList;]Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/utils/WatchedArrayMap$1;->onChange(Lcom/android/server/utils/Watchable;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/utils/WatchedArrayMap;-><init>(IZ)V @@ -3602,7 +3731,7 @@ HSPLcom/android/server/utils/WatchedArrayMap;->get(Ljava/lang/Object;)Ljava/lang HSPLcom/android/server/utils/WatchedArrayMap;->keyAt(I)Ljava/lang/Object; HSPLcom/android/server/utils/WatchedArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/android/server/utils/WatchedArrayMap;->putAll(Ljava/util/Map;)V+]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Map;Lcom/android/server/utils/WatchedArrayMap;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; -HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/pm/SharedUserSetting;,Lcom/android/server/utils/WatchedLongSparseArray; +HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting;,Lcom/android/server/storage/WatchedVolumeInfo;,Lcom/android/server/utils/WatchedLongSparseArray; HSPLcom/android/server/utils/WatchedArrayMap;->size()I HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArrayMap;]Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap; HSPLcom/android/server/utils/WatchedArrayMap;->untrackedStorage()Landroid/util/ArrayMap; @@ -3613,6 +3742,7 @@ HSPLcom/android/server/utils/WatchedArraySet;->clear()V HSPLcom/android/server/utils/WatchedArraySet;->contains(Ljava/lang/Object;)Z HSPLcom/android/server/utils/WatchedArraySet;->registerChild(Ljava/lang/Object;)V+]Lcom/android/server/utils/Watchable;Lcom/android/server/pm/PackageSetting; HSPLcom/android/server/utils/WatchedArraySet;->registerObserver(Lcom/android/server/utils/Watcher;)V +HSPLcom/android/server/utils/WatchedArraySet;->size()I HSPLcom/android/server/utils/WatchedArraySet;->snapshot(Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;)V+]Lcom/android/server/utils/WatchableImpl;Lcom/android/server/utils/WatchedArraySet;]Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet; HSPLcom/android/server/utils/WatchedArraySet;->untrackedStorage()Landroid/util/ArraySet; HSPLcom/android/server/utils/WatchedArraySet;->valueAt(I)Ljava/lang/Object; @@ -3637,7 +3767,7 @@ HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAt(II)Z HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAtInternal(II)Z HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>(Lcom/android/server/utils/WatchedSparseSetArray;)V+]Lcom/android/server/utils/WatchedSparseSetArray;Lcom/android/server/utils/WatchedSparseSetArray; HSPLcom/android/server/utils/WatchedSparseSetArray;->add(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray; -HPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray; +HSPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z+]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray; HSPLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z HSPLcom/android/server/utils/quota/Category;->hashCode()I HSPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats; @@ -3655,7 +3785,7 @@ HSPLcom/android/server/vibrator/VibrationSettings$VibrationUidObserver;->onUidSt HPLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/VibrationSession$Status;Lcom/android/server/vibrator/VibrationStats;)V HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->grantVisibilityToCaller(Ljava/lang/String;I)V+]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; HSPLcom/android/server/wm/AccessibilityController;->hasCallbacks()Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HSPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V +HSPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V+]Landroid/app/ActivityOptions$SceneTransitionInfo;Landroid/app/ActivityOptions$SceneTransitionInfo;]Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister; HSPLcom/android/server/wm/ActivityRecord;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/ActivityRecord;->canBeTopRunning()Z HSPLcom/android/server/wm/ActivityRecord;->canReceiveKeys()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; @@ -3664,6 +3794,7 @@ HSPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z+]Lja HSPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Predicate;Z)Z+]Ljava/util/function/Predicate;megamorphic_types HSPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;+]Ljava/util/function/Predicate;megamorphic_types HSPLcom/android/server/wm/ActivityRecord;->getAppCompatState(Z)I+]Lcom/android/server/wm/AppCompatAspectRatioPolicy;Lcom/android/server/wm/AppCompatAspectRatioPolicy;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Lcom/android/server/wm/AppCompatSizeCompatModePolicy;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy; HSPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy; @@ -3672,6 +3803,7 @@ HSPLcom/android/server/wm/ActivityRecord;->getRootTask()Lcom/android/server/wm/T HSPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task; HSPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/ActivityRecord;->hasSizeCompatBounds()Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatSizeCompatModePolicy;Lcom/android/server/wm/AppCompatSizeCompatModePolicy; +HSPLcom/android/server/wm/ActivityRecord;->isFocusable()Z HPLcom/android/server/wm/ActivityRecord;->isFullyTransparentBarAllowed(Landroid/graphics/Rect;)Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy; HSPLcom/android/server/wm/ActivityRecord;->isVisible()Z HSPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition; @@ -3679,7 +3811,7 @@ HSPLcom/android/server/wm/ActivityRecord;->occludesParent(Z)Z HSPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController;]Lcom/android/server/wm/PresentationController;Lcom/android/server/wm/PresentationController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent; @@ -3689,36 +3821,41 @@ HSPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z HSPLcom/android/server/wm/ActivityRecordInputSink;->applyChangesToSurfaceIfChanged(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper; HSPLcom/android/server/wm/ActivityRecordInputSink;->getInputWindowHandleWrapper()Lcom/android/server/wm/InputWindowHandleWrapper;+]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/ActivityStarter$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z +HSPLcom/android/server/wm/ActivityStarter;->executeRequest(Lcom/android/server/wm/ActivityStarter$Request;)I+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/firewall/IntentFirewall;]Lcom/android/server/policy/PermissionPolicyInternal;Lcom/android/server/policy/PermissionPolicyService$Internal;]Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/ActivityStartController;]Lcom/android/server/wm/ActivityStartInterceptor;Lcom/android/server/wm/ActivityStartInterceptor;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;]Lcom/android/server/wm/BackgroundActivityStartController;Lcom/android/server/wm/BackgroundActivityStartController;]Lcom/android/server/wm/PendingRemoteAnimationRegistry;Lcom/android/server/wm/PendingRemoteAnimationRegistry;]Lcom/android/server/wm/SafeActivityOptions;Lcom/android/server/wm/SafeActivityOptions;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer; +HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTaskToShowPermissionDialogOn(Ljava/lang/String;I)I+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopApp()Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopProcessState()I HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isCallerRecents(I)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isSleeping()Z -HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; +HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessAdded(Lcom/android/server/wm/WindowProcessController;)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Lcom/android/server/wm/PackageConfigPersister;Lcom/android/server/wm/PackageConfigPersister; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessRemoved(Ljava/lang/String;I)V+]Lcom/android/internal/app/ProcessMap;Lcom/android/internal/app/ProcessMap;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidProcStateChanged(II)V+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids; HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;Landroid/content/pm/ApplicationInfo;)Lcom/android/server/wm/ActivityTaskManagerInternal$PreBindInfo;+]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer; HSPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer; -HPLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J +HSPLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J HSPLcom/android/server/wm/ActivityTaskManagerService;->getLifecycleManager()Lcom/android/server/wm/ClientLifecycleManager; HSPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;+]Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer; -HPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker; +HSPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z+]Lcom/android/server/wm/MirrorActiveUids;Lcom/android/server/wm/MirrorActiveUids;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker; HSPLcom/android/server/wm/ActivityTaskManagerService;->isCallerRecents(I)Z+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks; HSPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; -HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getVisibleOpaqueActivity(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; -HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Lcom/android/server/wm/ActivityRecord;)V+]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo; +HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Ljava/lang/Object;)V+]Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper; HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->fillAndReturnTop(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->setCapturedLink(Lcom/android/server/wm/ActivityRecord;)V+]Landroid/content/Intent;Landroid/content/Intent;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController; +HSPLcom/android/server/wm/ActivityTaskSupervisor;->endActivityVisibilityUpdate()V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor; HSPLcom/android/server/wm/ActivityTaskSupervisor;->getKeyguardController()Lcom/android/server/wm/KeyguardController; HSPLcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda0;->getAsBoolean()Z HSPLcom/android/server/wm/AppCompatAspectRatioOverrides$$ExternalSyntheticLambda1;->getAsBoolean()Z HSPLcom/android/server/wm/AppCompatAspectRatioOverrides$UserAspectRatioState;->getUserAspectRatio(Lcom/android/server/wm/ActivityRecord;)I+]Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; +HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->getAllowUserAspectRatioOverridePropertyValue()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp; HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->getUserMinAspectRatioOverrideCode()I HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->isSystemOverrideToFullscreenEnabled()Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp; HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->isUserFullscreenOverrideEnabled()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp; +HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldApplyUserFullscreenOverride()Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides; HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldEnableUserAspectRatioSettings()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp; HSPLcom/android/server/wm/AppCompatAspectRatioOverrides;->shouldOverrideMinAspectRatio()Z+]Lcom/android/server/wm/utils/OptPropFactory$OptProp;Lcom/android/server/wm/utils/OptPropFactory$OptProp; HSPLcom/android/server/wm/AppCompatAspectRatioPolicy$AppCompatAspectRatioState;->isLetterboxedForAspectRatioOnly()Z @@ -3730,21 +3867,22 @@ HSPLcom/android/server/wm/AppCompatCameraPolicy;->isCameraRunningAndWindowingMod HSPLcom/android/server/wm/AppCompatConfiguration;->getDefaultLetterboxBackgroundType()I HSPLcom/android/server/wm/AppCompatConfiguration;->isUserAppAspectRatioFullscreenEnabled()Z HSPLcom/android/server/wm/AppCompatConfiguration;->isUserAppAspectRatioSettingsEnabled()Z +HSPLcom/android/server/wm/AppCompatController;->getSizeCompatModePolicy()Lcom/android/server/wm/AppCompatSizeCompatModePolicy; HSPLcom/android/server/wm/AppCompatController;->getTransparentPolicy()Lcom/android/server/wm/TransparentPolicy; HSPLcom/android/server/wm/AppCompatLetterboxOverrides;->getLetterboxBackgroundType()I +HSPLcom/android/server/wm/AppCompatLetterboxOverrides;->isLetterboxEducationEnabled()Z HSPLcom/android/server/wm/AppCompatLetterboxPolicy$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z -HSPLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;->isRunning()Z HSPLcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/Letterbox;Lcom/android/server/wm/Letterbox; HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->getLetterboxDetails()Lcom/android/internal/statusbar/LetterboxDetails;+]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HPLcom/android/server/wm/AppCompatLetterboxPolicy;->isFullyTransparentBarAllowed(Landroid/graphics/Rect;)Z+]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState; -HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z +HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->start(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState;]Lcom/android/server/wm/AppCompatRoundedCorners;Lcom/android/server/wm/AppCompatRoundedCorners; HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->updateLetterboxSurfaceIfNeeded(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatLetterboxPolicyState;Lcom/android/server/wm/AppCompatLetterboxPolicy$LegacyLetterboxPolicyState; HSPLcom/android/server/wm/AppCompatLetterboxPolicy;->updateWallpaperForLetterbox(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides; HSPLcom/android/server/wm/AppCompatOrientationOverrides;->getIsRelaunchingAfterRequestedOrientationChanged()Z -HSPLcom/android/server/wm/AppCompatOrientationPolicy;->overrideOrientationIfNeeded(I)I+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatCameraOverrides;Lcom/android/server/wm/AppCompatCameraOverrides;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; +HSPLcom/android/server/wm/AppCompatOrientationPolicy;->overrideOrientationIfNeeded(I)I+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatCameraOverrides;Lcom/android/server/wm/AppCompatCameraOverrides;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/AppCompatReachabilityOverrides$ReachabilityState;->isFromDoubleTap()Z +HSPLcom/android/server/wm/AppCompatReachabilityOverrides;->isFromDoubleTap()Z+]Lcom/android/server/wm/AppCompatReachabilityOverrides$ReachabilityState;Lcom/android/server/wm/AppCompatReachabilityOverrides$ReachabilityState; HSPLcom/android/server/wm/AppCompatRoundedCorners;->requiresRoundedCorners(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides;]Ljava/util/function/Predicate;Lcom/android/server/wm/AppCompatLetterboxPolicy$$ExternalSyntheticLambda0; HSPLcom/android/server/wm/AppCompatRoundedCorners;->updateRoundedCornersIfNeeded(Lcom/android/server/wm/WindowState;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/AppCompatRoundedCorners;Lcom/android/server/wm/AppCompatRoundedCorners;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/AppCompatSizeCompatModePolicy;->getAppCompatDisplayInsets()Lcom/android/server/wm/AppCompatDisplayInsets;+]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy; @@ -3755,22 +3893,22 @@ HSPLcom/android/server/wm/AppCompatUtils;->clearAppCompatTaskInfo(Landroid/app/A HSPLcom/android/server/wm/AppCompatUtils;->fillAppCompatTaskInfo(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;Lcom/android/server/wm/ActivityRecord;)V+]Landroid/app/AppCompatTaskInfo;Landroid/app/AppCompatTaskInfo;]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxOverrides;Lcom/android/server/wm/AppCompatLetterboxOverrides;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/AppCompatReachabilityOverrides;Lcom/android/server/wm/AppCompatReachabilityOverrides;]Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy; HSPLcom/android/server/wm/AppCompatUtils;->getAppBounds(Lcom/android/server/wm/ActivityRecord;)Landroid/graphics/Rect;+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy; HSPLcom/android/server/wm/AppCompatUtils;->isChangeEnabled(Lcom/android/server/wm/ActivityRecord;J)Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo; -HSPLcom/android/server/wm/AppTransition;->isRunning()Z HSPLcom/android/server/wm/AppTransition;->isTransitionSet()Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;,Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24; +HSPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Lcom/android/server/wm/Transition;,Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Runnable;Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda26; HSPLcom/android/server/wm/BLASTSyncEngine;->getSyncSet(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/BLASTSyncEngine;->onSurfacePlacement()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/BackNavigationController;->shouldPauseTouch(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/BackNavigationController$AnimationHandler;Lcom/android/server/wm/BackNavigationController$AnimationHandler;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord; HSPLcom/android/server/wm/BackgroundLaunchProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Landroid/util/IntArray;Landroid/util/IntArray; -HPLcom/android/server/wm/BackgroundLaunchProcessController;->areBackgroundActivityStartsAllowed(IILjava/lang/String;ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;ZZJJJ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict; +HSPLcom/android/server/wm/BackgroundLaunchProcessController;->areBackgroundActivityStartsAllowed(IILjava/lang/String;ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;ZZJJJ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict; HSPLcom/android/server/wm/BackgroundLaunchProcessController;->clearBalOptInBoundClientUids()V+]Landroid/util/IntArray;Landroid/util/IntArray; -HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/wm/BackgroundActivityStartCallback;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;]Ljava/util/List;Ljava/util/ArrayList; -HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/function/IntPredicate;Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda3; +HSPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z+]Landroid/app/BackgroundStartPrivileges;Landroid/app/BackgroundStartPrivileges;]Lcom/android/server/wm/BackgroundActivityStartCallback;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z+]Landroid/util/IntArray;Landroid/util/IntArray;]Ljava/util/function/IntPredicate;Lcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda3; HSPLcom/android/server/wm/BackgroundLaunchProcessController;->removeAllowBackgroundStartPrivileges(Landroid/os/Binder;)V HSPLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransactions()V+]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager; HSPLcom/android/server/wm/ClientLifecycleManager;->getOrCreatePendingTransaction(Landroid/app/IApplicationThread;)Landroid/app/servertransaction/ClientTransaction;+]Landroid/app/IApplicationThread;Lcom/android/server/am/ApplicationThreadDeferred; HSPLcom/android/server/wm/ClientLifecycleManager;->shouldDispatchPendingTransactionsImmediately()Z+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer; HSPLcom/android/server/wm/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;+]Landroid/util/SparseBooleanArray;Landroid/util/SparseBooleanArray;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; +HSPLcom/android/server/wm/CompatModePackages;->getCompatScale(Ljava/lang/String;IZ)F HSPLcom/android/server/wm/CompatModePackages;->getCompatScaleFromProvider(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/CompatScaleProvider;Lcom/android/server/app/GameManagerService$LocalService; HSPLcom/android/server/wm/ConfigurationContainer;-><init>()V HSPLcom/android/server/wm/ConfigurationContainer;->applyAppSpecificConfig(Ljava/lang/Integer;Landroid/os/LocaleList;Ljava/lang/Integer;)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowProcessController; @@ -3790,7 +3928,7 @@ HSPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landro HSPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types HSPLcom/android/server/wm/ConfigurationContainer;->updateRequestedOverrideConfiguration(Landroid/content/res/Configuration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types HSPLcom/android/server/wm/DeferredDisplayUpdater;->calculateDisplayInfoDiff(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)I -HSPLcom/android/server/wm/DeferredDisplayUpdater;->updateDisplayInfo(Ljava/lang/Runnable;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/lang/Runnable;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda10;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda27; +HSPLcom/android/server/wm/DeferredDisplayUpdater;->updateDisplayInfo(Ljava/lang/Runnable;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/lang/Runnable;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda10;,Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda9;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda27;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28; HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->getMinAspectRatio(Lcom/android/server/wm/Task;)F+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;Lcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;]Lcom/android/server/wm/TransparentPolicy;Lcom/android/server/wm/TransparentPolicy; HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->hasMinAspectRatioOverride(Lcom/android/server/wm/Task;)Z+]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo; HSPLcom/android/server/wm/DesktopAppCompatAspectRatioPolicy;->shouldEnableUserAspectRatioSettings(Lcom/android/server/wm/Task;)Z+]Lcom/android/server/wm/AppCompatAspectRatioOverrides;Lcom/android/server/wm/AppCompatAspectRatioOverrides;]Lcom/android/server/wm/AppCompatOverrides;Lcom/android/server/wm/AppCompatOverrides;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent; @@ -3801,15 +3939,15 @@ HSPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I+]Lcom/android/ HSPLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayArea;->asDisplayArea()Lcom/android/server/wm/DisplayArea; HSPLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V +HSPLcom/android/server/wm/DisplayArea;->getIgnoreOrientationRequest()Z+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;+]Lcom/android/server/wm/DisplayArea;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/DisplayArea;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction; HSPLcom/android/server/wm/DisplayArea;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task; HSPLcom/android/server/wm/DisplayArea;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction; -HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;)V -HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V HSPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Z HSPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V HSPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HSPLcom/android/server/wm/DisplayContent;->$r8$lambda$Sp8y2Fhps8S4GCPelNMlGu99jRg(Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[FLcom/android/server/wm/WindowState;)Z+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIZ)V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy; HSPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperVisibilityListeners;Lcom/android/server/wm/WallpaperVisibilityListeners;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Ljava/util/LinkedList;Ljava/util/LinkedList; @@ -3822,14 +3960,16 @@ HSPLcom/android/server/wm/DisplayContent;->getDisplayId()I HSPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo; HSPLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy; HSPLcom/android/server/wm/DisplayContent;->getImeTarget(I)Lcom/android/server/wm/InsetsControlTarget; -HSPLcom/android/server/wm/DisplayContent;->getInputMonitor()Lcom/android/server/wm/InputMonitor; HSPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy; HSPLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController; HSPLcom/android/server/wm/DisplayContent;->getKeepClearAreas(Ljava/util/Set;Ljava/util/Set;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent; -HSPLcom/android/server/wm/DisplayContent;->getOrientation()I+]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatOrientationOverrides;Lcom/android/server/wm/AppCompatOrientationOverrides;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent; HSPLcom/android/server/wm/DisplayContent;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent; +HSPLcom/android/server/wm/DisplayContent;->handleTopActivityLaunchingInDifferentOrientation(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController; HSPLcom/android/server/wm/DisplayContent;->hasOwnFocus()Z +HSPLcom/android/server/wm/DisplayContent;->isKeyguardGoingAway()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/KeyguardController; HSPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z +HSPLcom/android/server/wm/DisplayContent;->isSleeping()Z +HSPLcom/android/server/wm/DisplayContent;->lambda$calculateSystemGestureExclusion$32(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayContent;->lambda$new$3(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayContent;->lambda$new$4(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -3837,16 +3977,13 @@ HSPLcom/android/server/wm/DisplayContent;->lambda$new$7(Lcom/android/server/wm/W HSPLcom/android/server/wm/DisplayContent;->lambda$new$8(Lcom/android/server/wm/WindowState;)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/LinkedList;Ljava/util/LinkedList; HSPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;Z)Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HSPLcom/android/server/wm/DisplayContent;->onDisplayInfoUpdated(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowContextListenerController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V HSPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent; HSPLcom/android/server/wm/DisplayContent;->prepareSurfaces()V HSPLcom/android/server/wm/DisplayContent;->setDisplayMirroring()Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer; -HSPLcom/android/server/wm/DisplayContent;->shouldDeferRemoval()Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController; HSPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent$ImeContainer;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$ImeContainer;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayContent;->toString()Ljava/lang/String; HSPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DeferredDisplayUpdater;Lcom/android/server/wm/DeferredDisplayUpdater;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/DisplayWindowSettings;Lcom/android/server/wm/DisplayWindowSettings; -HSPLcom/android/server/wm/DisplayContent;->updateDisplayInfo(Landroid/view/DisplayInfo;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent; HSPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z+]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayWindowListenerController;Lcom/android/server/wm/DisplayWindowListenerController;]Ljava/util/Set;Landroid/util/ArraySet; HSPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayRotation;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/WindowContainer;megamorphic_types @@ -3860,7 +3997,7 @@ HSPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/serv HSPLcom/android/server/wm/DisplayPolicy;->applyKeyguardPolicy(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayPolicy;->applyPostLayoutPolicyLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/AppCompatController;Lcom/android/server/wm/AppCompatController;]Lcom/android/server/wm/AppCompatLetterboxPolicy;Lcom/android/server/wm/AppCompatLetterboxPolicy;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; -HPLcom/android/server/wm/DisplayPolicy;->calculateInsetsFrame(Landroid/graphics/Rect;Landroid/graphics/Insets;)V +HSPLcom/android/server/wm/DisplayPolicy;->calculateInsetsFrame(Landroid/graphics/Rect;Landroid/graphics/Insets;)V HSPLcom/android/server/wm/DisplayPolicy;->chooseNavigationBackgroundWindow(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZ)I+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy; HSPLcom/android/server/wm/DisplayPolicy;->configureStatusBarOpacity(I)I+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -3873,7 +4010,6 @@ HSPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/ser HSPLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; HPLcom/android/server/wm/DisplayPolicy;->hasBottomNavigationBar()Z HSPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState; -HSPLcom/android/server/wm/DisplayPolicy;->isFullyTransparentAllowed(Lcom/android/server/wm/WindowState;I)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy; HSPLcom/android/server/wm/DisplayPolicy;->isKeyguardShowing()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; HPLcom/android/server/wm/DisplayPolicy;->isLightBarAllowed(Lcom/android/server/wm/WindowState;I)Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; @@ -3927,29 +4063,29 @@ HSPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForWindow(Lcom/android/serv HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForFakeControllingSources(Landroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/view/InsetsState;Landroid/view/InsetsState; HSPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForIme(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HSPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; +HSPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;)Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/InsetsPolicy;->forceShowingNavigationBars(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy; -HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; +HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/InsetsPolicy;->hasHiddenSources(I)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController; HSPLcom/android/server/wm/InsetsPolicy;->remoteInsetsControllerControlsSystemBars(Lcom/android/server/wm/WindowState;)Z+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy; HSPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController; HSPLcom/android/server/wm/InsetsPolicy;->updateSystemBars(Lcom/android/server/wm/WindowState;ZZ)V+]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController; HPLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState; -HPLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource; +HSPLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource; HPLcom/android/server/wm/InsetsSourceProvider;->getWindowFrameSurfacePosition()Landroid/graphics/Point;+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/InsetsSourceProvider;->isClientVisible()Z -HPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HPLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider; +HSPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; +HSPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V+]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider; HPLcom/android/server/wm/InsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;ZLandroid/view/inputmethod/ImeTracker$Token;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/DisplayArea;,Lcom/android/server/wm/WindowState; HPLcom/android/server/wm/InsetsSourceProvider;->updateInsetsControlPosition(Lcom/android/server/wm/WindowState;)Z+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowFrames;Lcom/android/server/wm/WindowFrames;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/function/Consumer;Lcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0; HPLcom/android/server/wm/InsetsSourceProvider;->updateInsetsHint()Z+]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider; HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/internal/util/function/TriFunction;Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda0;,Lcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda11;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState; -HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState; -HPLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState; +HSPLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; HPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;+]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController; -HPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider; +HSPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsState;Landroid/view/InsetsState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider; HSPLcom/android/server/wm/InsetsStateController;->getRawInsetsState()Landroid/view/InsetsState; HPLcom/android/server/wm/InsetsStateController;->lambda$notifyPendingInsetsControlChanged$4(ILandroid/util/SparseLongArray;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;,Lcom/android/server/wm/InsetsPolicy$ControlTarget;,Lcom/android/server/wm/InsetsStateController$1;,Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/ImeInsetsSourceProvider;,Lcom/android/server/wm/InsetsSourceProvider;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator; @@ -3961,9 +4097,9 @@ HSPLcom/android/server/wm/KeyguardController;->getDisplayState(I)Lcom/android/se HSPLcom/android/server/wm/KeyguardController;->updateVisibility()V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer; HSPLcom/android/server/wm/MirrorActiveUids;->hasNonAppVisibleWindow(I)Z+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLcom/android/server/wm/MirrorActiveUids;->onUidProcStateChanged(II)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; -HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/server/wm/RecentTasks$1;,Lcom/android/server/wm/SystemGesturesPointerEventListener; +HPLcom/android/server/wm/PackageConfigPersister;->findPackageConfiguration(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$PackageConfig; +HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/WindowManagerPolicyConstants$PointerEventListener;Lcom/android/internal/widget/PointerLocationView;,Lcom/android/server/wm/RecentTasks$1;,Lcom/android/server/wm/SystemGesturesPointerEventListener; HSPLcom/android/server/wm/RecentTasks;->isCallerRecents(I)Z -HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->refreshRateEquals(F)Z HSPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(FII)Z HSPLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;->get(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;+]Ljava/util/HashMap;Ljava/util/HashMap; HSPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I+]Lcom/android/server/wm/RefreshRatePolicy;Lcom/android/server/wm/RefreshRatePolicy;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; @@ -3971,15 +4107,15 @@ HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMaxRefreshRate(Lcom/an HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMinRefreshRate(Lcom/android/server/wm/WindowState;)F+]Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;Lcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I HSPLcom/android/server/wm/RefreshRatePolicy;->updateFrameRateVote(Lcom/android/server/wm/WindowState;)Z+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Lcom/android/server/wm/HighRefreshRateDenylist;Lcom/android/server/wm/HighRefreshRateDenylist;]Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;Lcom/android/server/wm/RefreshRatePolicy$FrameRateVote;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HSPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda23;->accept(Ljava/lang/Object;)V HSPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/os/PowerManagerInternal;Lcom/android/server/power/PowerManagerService$LocalService;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer; HSPLcom/android/server/wm/RootWindowContainer;->$r8$lambda$cnDv250HlSET-GBlf9zK0KW0JGk(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent; HSPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction()V+]Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/DisplayManagerService$LocalService;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/StrictModeFlash;Lcom/android/server/wm/StrictModeFlash;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/AppTransitionController;Lcom/android/server/wm/AppTransitionController;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/RootWindowContainer;->clearFrameChangingWindows()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types HSPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/RootWindowContainer; -HPLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/RootWindowContainer;->getRunningTasks(ILjava/util/List;IILandroid/util/ArraySet;I)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/RunningTasks;Lcom/android/server/wm/RunningTasks; HSPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -3990,29 +4126,30 @@ HSPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z+] HSPLcom/android/server/wm/RunningTasks;->accept(Lcom/android/server/wm/Task;)V+]Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/RecentTasks;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/RunningTasks;->createRunningTaskInfo(Lcom/android/server/wm/Task;J)Landroid/app/ActivityManager$RunningTaskInfo;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/wm/RunningTasks;->lambda$getTasks$0(Lcom/android/server/wm/DisplayContent;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/wm/Session;->setWallpaperZoomOut(Landroid/os/IBinder;F)V -HSPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;,Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda6;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; +HSPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;,Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda6;,Lcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda7;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZLjava/util/function/Supplier;)Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/SurfaceAnimator$Animatable;megamorphic_types HSPLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z HSPLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z HSPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; -HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceFreezer;)V+]Lcom/android/server/wm/AnimationAdapter;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator$Animatable;megamorphic_types]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/SurfaceFreezer;Lcom/android/server/wm/SurfaceFreezer; HSPLcom/android/server/wm/SynchedDeviceConfig;->getFlagValue(Ljava/lang/String;)Z+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; -HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V+]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources; HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V+]Landroid/view/GestureDetector;Lcom/android/server/wm/SystemGesturesPointerEventListener$1;]Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;Lcom/android/server/wm/DisplayPolicy$1; -HSPLcom/android/server/wm/Task$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z HSPLcom/android/server/wm/Task$FindRootHelper;->findRoot(ZZ)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task$FindRootHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo; HSPLcom/android/server/wm/Task$FindRootHelper;->test(Ljava/lang/Object;)Z+]Lcom/android/server/wm/Task$FindRootHelper;Lcom/android/server/wm/Task$FindRootHelper; +HSPLcom/android/server/wm/Task;->$r8$lambda$AkSO8BQwrCT5IExZs_X3DjEm-pI(Lcom/android/server/wm/ActivityRecord;)Z HSPLcom/android/server/wm/Task;->asTask()Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/Task;->calculateTopActivityMainWindowFrameForTaskInfo(Lcom/android/server/wm/ActivityRecord;)Landroid/graphics/Rect;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/Task;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Task;->cropWindowsToRootTaskBounds()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/Task;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V+]Landroid/app/TaskInfo;Landroid/app/ActivityManager$RecentTaskInfo;,Landroid/app/ActivityManager$RunningTaskInfo;,Landroid/app/ActivityTaskManager$RootTaskInfo;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types -HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda32;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda9;,Lcom/android/server/wm/RootWindowContainer$FindTaskResult; +HSPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda19;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda32;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda33;,Lcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda9;,Lcom/android/server/wm/RootWindowContainer$FindTaskResult; HSPLcom/android/server/wm/Task;->getBaseIntent()Landroid/content/Intent;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->getBasePackageName()Ljava/lang/String;+]Landroid/content/Intent;Landroid/content/Intent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->getDisplayCutoutInsets()Landroid/graphics/Rect;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; @@ -4023,6 +4160,7 @@ HSPLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/Activ HSPLcom/android/server/wm/Task;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Ljava/util/function/Predicate;megamorphic_types HSPLcom/android/server/wm/Task;->getTaskWithAdjacent()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea; HSPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/Task;->getTopPausingActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->hasVisibleChildren()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; @@ -4032,8 +4170,9 @@ HSPLcom/android/server/wm/Task;->isOrganized()Z HSPLcom/android/server/wm/Task;->isResizeable()Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->isResizeable(Z)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->isRootTask()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; -HSPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/Task;->prepareSurfaces()V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TrustedOverlayHost;Lcom/android/server/wm/TrustedOverlayHost;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/Task;->resumeTopActivityInnerLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; +HSPLcom/android/server/wm/Task;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Task;->setTaskDescriptionFromActivityAboveRoot(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription; HSPLcom/android/server/wm/Task;->shouldIgnoreInput()Z HSPLcom/android/server/wm/Task;->updateTaskDescription()V+]Lcom/android/internal/util/function/pooled/PooledPredicate;Lcom/android/internal/util/function/pooled/PooledLambdaImpl;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea; @@ -4043,8 +4182,9 @@ HSPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/Su HSPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/TaskDisplayArea;->assignRootTaskOrdering(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/TaskDisplayArea;->getRootTask(II)Lcom/android/server/wm/Task; -HSPLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z HSPLcom/android/server/wm/TaskFragment;->asTaskFragment()Lcom/android/server/wm/TaskFragment; +HSPLcom/android/server/wm/TaskFragment;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea; +HSPLcom/android/server/wm/TaskFragment;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;Lcom/android/server/wm/TaskFragment$ConfigOverrideHint;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/AppCompatDisplayInsets;Lcom/android/server/wm/AppCompatDisplayInsets;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Consumer;Z)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Consumer;megamorphic_types HSPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types HSPLcom/android/server/wm/TaskFragment;->getActivityType()I+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task; @@ -4064,9 +4204,10 @@ HSPLcom/android/server/wm/TaskFragment;->isAttached()Z+]Lcom/android/server/wm/T HSPLcom/android/server/wm/TaskFragment;->isForceHidden()Z HSPLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; -HSPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; +HSPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;]Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueContainerHelper;Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueContainerHelper;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V+]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/TaskFragment;->resumeTopActivity(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z+]Landroid/app/ActivityManagerInternal;Lcom/android/server/am/ActivityManagerService$LocalService;]Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;]Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/TaskFragment;->shouldBeVisible(Lcom/android/server/wm/ActivityRecord;)Z+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/TaskFragment;->shouldDeferRemoval()Z+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/TaskFragment;->shouldSleepActivities()Z+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task; HSPLcom/android/server/wm/TaskFragment;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; @@ -4074,19 +4215,20 @@ HSPLcom/android/server/wm/TaskFragment;->topRunningActivity()Lcom/android/server HSPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/TaskFragment;->updateActivityVisibilities(Lcom/android/server/wm/ActivityRecord;Z)V+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/EnsureActivitiesVisibleHelper; HSPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer; -HPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents(Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Ljava/util/List;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragmentOrganizerController$PendingTaskFragmentEvent$Builder;Lcom/android/server/wm/TaskFragmentOrganizerController$PendingTaskFragmentEvent$Builder;]Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;]Ljava/util/List;Ljava/util/ArrayList; +HSPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents(Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Ljava/util/List;)V+]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/TaskFragmentOrganizerController$PendingTaskFragmentEvent$Builder;Lcom/android/server/wm/TaskFragmentOrganizerController$PendingTaskFragmentEvent$Builder;]Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;Lcom/android/server/wm/TaskFragmentOrganizerController$TaskFragmentOrganizerState;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvents()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchTaskInfoChanged(Lcom/android/server/wm/Task;Z)V+]Landroid/app/ActivityManager$RunningTaskInfo;Landroid/app/ActivityManager$RunningTaskInfo;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; HSPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V+]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer; HSPLcom/android/server/wm/TaskOrganizerController;->onTaskInfoChanged(Lcom/android/server/wm/Task;Z)V+]Landroid/window/ITaskOrganizer;Landroid/window/ITaskOrganizer$Stub$Proxy; HSPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types +HSPLcom/android/server/wm/Transition$ReadyTrackerOld;->allReady()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DisplayContent; HSPLcom/android/server/wm/Transition;-><init>(IILcom/android/server/wm/TransitionController;Lcom/android/server/wm/BLASTSyncEngine;)V HSPLcom/android/server/wm/Transition;->applyReady()V+]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Transition$ReadyTrackerOld;Lcom/android/server/wm/Transition$ReadyTrackerOld;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;+]Landroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskDescription;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/content/pm/ActivityInfo;Landroid/content/pm/ActivityInfo;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$ChangeInfo;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer$RemoteToken;Lcom/android/server/wm/WindowContainer$RemoteToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V+]Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/Transition;->finishTransition(Lcom/android/server/wm/ActionChain;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/inputmethod/InputMethodManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;]Lcom/android/server/wm/ActionChain;Lcom/android/server/wm/ActionChain;]Lcom/android/server/wm/ActivityRecordInputSink;Lcom/android/server/wm/ActivityRecordInputSink;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/AppCompatCameraPolicy;Lcom/android/server/wm/AppCompatCameraPolicy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/DisplayContent;,Lcom/android/server/wm/Task;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskSnapshotController;Lcom/android/server/wm/TaskSnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24; HSPLcom/android/server/wm/Transition;->isInTransition(Lcom/android/server/wm/WindowContainer;)Z -HSPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController$Logger;Lcom/android/server/wm/TransitionController$Logger;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24; +HSPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Landroid/window/ITransitionPlayer;Landroid/window/ITransitionPlayer$Stub$Proxy;]Lcom/android/server/wm/AsyncRotationController;Lcom/android/server/wm/AsyncRotationController;]Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController;]Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/SnapshotController;Lcom/android/server/wm/SnapshotController;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController$Logger;Lcom/android/server/wm/TransitionController$Logger;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/TransitionTracer;Lcom/android/server/wm/PerfettoTransitionTracer;]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda26; HSPLcom/android/server/wm/Transition;->toString()Ljava/lang/String;+]Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$ChangeInfo; HSPLcom/android/server/wm/TransitionController;->canAssignLayers(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/TransitionController;->inCollectingTransition(Lcom/android/server/wm/WindowContainer;)Z+]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -4108,7 +4250,7 @@ HSPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V+]Lcom/ HSPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList; HPLcom/android/server/wm/WallpaperController;->setWallpaperZoomOut(Lcom/android/server/wm/WindowState;F)V+]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda4;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; +HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda1;,Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda4;,Lcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WallpaperWindowToken;->isVisible()Z+]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WallpaperWindowToken; HSPLcom/android/server/wm/WallpaperWindowToken;->prepareSurfaces()V HSPLcom/android/server/wm/WallpaperWindowToken;->setVisibility(Z)V+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WallpaperWindowToken;Lcom/android/server/wm/WallpaperWindowToken; @@ -4119,7 +4261,7 @@ HSPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V HSPLcom/android/server/wm/WindowContainer$RemoteToken;->toWindowContainerToken()Landroid/window/WindowContainerToken; -HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24; +HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda26; HSPLcom/android/server/wm/WindowContainer;->asTask()Lcom/android/server/wm/Task; HSPLcom/android/server/wm/WindowContainer;->asTaskFragment()Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/WindowContainer;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken; @@ -4142,17 +4284,16 @@ HSPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/ HSPLcom/android/server/wm/WindowContainer;->getChildCount()I+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowContainer;->getDisplayArea()Lcom/android/server/wm/DisplayArea;+]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/WindowContainer;->getDisplayContent()Lcom/android/server/wm/DisplayContent; -HPLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray; -HSPLcom/android/server/wm/WindowContainer;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray; +HSPLcom/android/server/wm/WindowContainer;->getOrientation(I)I+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer; -HSPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;+]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25; +HSPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;+]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda25;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda26; HSPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Point;)V+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types HSPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowContainer;->getSurfaceControl()Landroid/view/SurfaceControl; HSPLcom/android/server/wm/WindowContainer;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;+]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/wm/WindowContainer;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/TaskFragment;,Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskDisplayArea;,Lcom/android/server/wm/TaskFragment; HSPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -4175,6 +4316,7 @@ HSPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server HSPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowContainer;->scheduleAnimation()V+]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/WindowContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V+]Lcom/android/server/wm/WindowContainer;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/WindowContainer;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator;]Lcom/android/server/wm/SurfaceFreezer;Lcom/android/server/wm/SurfaceFreezer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/WindowContainer;->updateSurfacePositionNonOrganized()V+]Lcom/android/server/wm/WindowContainer;megamorphic_types HSPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V+]Lcom/android/server/wm/ConfigurationContainer;megamorphic_types]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/wm/WindowFrames;->didFrameSizeChange()Z @@ -4189,7 +4331,7 @@ HSPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked( HSPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; HSPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService; HSPLcom/android/server/wm/WindowManagerService;->isUserVisible(I)Z+]Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/UserManagerService$LocalService; -HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/view/WindowRelayoutResult;)I+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; +HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/view/WindowRelayoutResult;)I+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;]Landroid/view/InsetsFrameProvider$InsetsSizeOverride;Landroid/view/InsetsFrameProvider$InsetsSizeOverride;]Landroid/view/InsetsFrameProvider;Landroid/view/InsetsFrameProvider;]Landroid/view/InsetsSourceControl$Array;Landroid/view/InsetsSourceControl$Array;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;Lcom/android/server/wm/DisplayWindowPolicyControllerHelper;]Lcom/android/server/wm/UnknownAppVisibilityController;Lcom/android/server/wm/UnknownAppVisibilityController;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; HSPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V+]Lcom/android/server/wm/WindowManagerThreadPriorityBooster;Lcom/android/server/wm/WindowManagerThreadPriorityBooster; HSPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V+]Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator; HSPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; @@ -4199,12 +4341,13 @@ HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V HSPLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/ActionChain;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;)I+]Landroid/window/WindowContainerTransaction$Change;Landroid/window/WindowContainerTransaction$Change;]Lcom/android/server/wm/ActionChain;Lcom/android/server/wm/ActionChain;]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/Task;]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;]Lcom/android/server/wm/Transition;Lcom/android/server/wm/Transition;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowOrganizerController;Lcom/android/server/wm/WindowOrganizerController;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/lang/Object;Lcom/android/server/wm/Task;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;]Ljava/util/Set;Landroid/util/MapCollections$EntrySet; HSPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILjava/lang/Object;Lcom/android/server/wm/WindowProcessListener;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService; HSPLcom/android/server/wm/WindowProcessController;->addBoundClientUid(ILjava/lang/String;J)V+]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController; -HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; +HSPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(ILcom/android/server/wm/BackgroundLaunchProcessController$BalCheckConfiguration;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/BackgroundLaunchProcessController;Lcom/android/server/wm/BackgroundLaunchProcessController;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V+]Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowProcessController;->dispatchConfiguration(Landroid/content/res/Configuration;)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; +HSPLcom/android/server/wm/WindowProcessController;->handleAppDied()Z+]Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskSupervisor;]Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/Task;,Lcom/android/server/wm/TaskFragment;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowProcessController;->hasActivities()Z HSPLcom/android/server/wm/WindowProcessController;->hasActivitiesOrRecentTasks()Z -HPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z +HSPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z HSPLcom/android/server/wm/WindowProcessController;->hasRecentTasks()Z HSPLcom/android/server/wm/WindowProcessController;->hasVisibleActivities()Z HSPLcom/android/server/wm/WindowProcessController;->isHeavyWeightProcess()Z @@ -4225,14 +4368,14 @@ HSPLcom/android/server/wm/WindowProcessController;->setPerceptible(Z)V HSPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V+]Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService;]Lcom/android/server/wm/ClientLifecycleManager;Lcom/android/server/wm/ClientLifecycleManager; HSPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowProcessController;]Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/VisibleActivityProcessTracker;]Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/WindowProcessController; HSPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/Map;Ljava/util/HashMap; -HSPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24; -HSPLcom/android/server/wm/WindowState;->applyDims()V+]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; +HSPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/function/Supplier;Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;,Lcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda26; +HSPLcom/android/server/wm/WindowState;->applyDims()V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Lcom/android/server/wm/Dimmer;Lcom/android/server/wm/Dimmer;]Lcom/android/server/wm/TransitionController;Lcom/android/server/wm/TransitionController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; HSPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z+]Lcom/android/internal/util/ToBooleanFunction;megamorphic_types HSPLcom/android/server/wm/WindowState;->areAppWindowBoundsLetterboxed()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->asWindowState()Lcom/android/server/wm/WindowState; -HSPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; +HSPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z HSPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; HSPLcom/android/server/wm/WindowState;->canBeHiddenByKeyguard()Z+]Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/policy/PhoneWindowManager; @@ -4258,11 +4401,12 @@ HSPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutMillis()J HSPLcom/android/server/wm/WindowState;->getInsetsState()Landroid/view/InsetsState;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->getInsetsState(Z)Landroid/view/InsetsState;+]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy;]Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken; HSPLcom/android/server/wm/WindowState;->getKeepClearAreas(Ljava/util/Collection;Ljava/util/Collection;Landroid/graphics/Matrix;[F)V+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/Collection;Landroid/util/ArraySet; -HSPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Ljava/lang/String; +HSPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLcom/android/server/wm/WindowState;->getMergedInsetsState()Landroid/view/InsetsState;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/InsetsStateController; HSPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String; HSPLcom/android/server/wm/WindowState;->getOwningUid()I +HSPLcom/android/server/wm/WindowState;->getParentFrame()Landroid/graphics/Rect; HSPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/List;Ljava/util/ArrayList; HSPLcom/android/server/wm/WindowState;->getRequestedVisibleTypes()I @@ -4273,7 +4417,7 @@ HSPLcom/android/server/wm/WindowState;->getTouchOcclusionMode()I+]Lcom/android/s HSPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region; HSPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;megamorphic_types -HSPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Ljava/lang/String; +HSPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLcom/android/server/wm/WindowState;->getWindowType()I HSPLcom/android/server/wm/WindowState;->handleCompleteDeferredRemoval()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V+]Landroid/view/IWindow;Landroid/view/IWindow$Stub$Proxy;,Landroid/view/ViewRootImpl$W;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; @@ -4281,7 +4425,6 @@ HSPLcom/android/server/wm/WindowState;->hasMoved()Z+]Lcom/android/server/wm/Tran HSPLcom/android/server/wm/WindowState;->hasWallpaper()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->isAnimationRunningSelfOrParent()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->isChildWindow()Z -HSPLcom/android/server/wm/WindowState;->isDimming()Z HSPLcom/android/server/wm/WindowState;->isDisplayed()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->isDrawn()Z HSPLcom/android/server/wm/WindowState;->isDreamWindow()Z @@ -4319,7 +4462,6 @@ HSPLcom/android/server/wm/WindowState;->setReportResizeHints()Z+]Lcom/android/se HSPLcom/android/server/wm/WindowState;->shouldCheckTokenVisibleRequested()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken; HSPLcom/android/server/wm/WindowState;->shouldDrawBlurBehind()Z HSPLcom/android/server/wm/WindowState;->shouldSendRedrawForSync()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HPLcom/android/server/wm/WindowState;->show(ZZ)Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; HSPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region; HSPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point;]Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/Task;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; @@ -4335,12 +4477,11 @@ HSPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z+]Lcom/a HSPLcom/android/server/wm/WindowState;->wouldBeVisibleRequestedIfPolicyIgnored()Z+]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; HSPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z+]Lcom/android/server/wm/AppTransition;Lcom/android/server/wm/AppTransition;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayPolicy;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;,Lcom/android/server/wm/WallpaperWindowToken;,Lcom/android/server/wm/WindowState;,Lcom/android/server/wm/WindowToken;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer; HSPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z+]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState; -HSPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/lang/CharSequence;Landroid/text/SpannableString;,Ljava/lang/String; +HSPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Landroid/view/SurfaceControl;+]Landroid/view/SurfaceControl$Builder;Landroid/view/SurfaceControl$Builder;]Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/InputWindowHandleWrapper;]Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLcom/android/server/wm/WindowStateAnimator;->getShown()Z HSPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z HSPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction;]Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent;]Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WallpaperController;]Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;]Lcom/android/server/wm/WindowStateAnimator;Lcom/android/server/wm/WindowStateAnimator; HSPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V -HSPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V HSPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V+]Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer;]Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService;]Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -4357,13 +4498,154 @@ HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->isFalse()Z+]Ljava/util/ HSPLcom/android/server/wm/utils/OptPropFactory$OptProp;->shouldEnableWithOptInOverrideAndOptOutProperty(Z)Z+]Ljava/util/function/BooleanSupplier;Lcom/android/server/wm/AppCompatOrientationOverrides$$ExternalSyntheticLambda2;,Lcom/android/server/wm/AppCompatUtils$1;,Lcom/android/server/wm/utils/OptPropFactory$OptProp$$ExternalSyntheticLambda0; HPLcom/android/server/wm/utils/RegionUtils;->forEachRectReverse(Landroid/graphics/Region;Ljava/util/function/Consumer;)V HSPLcom/android/server/wm/utils/RegionUtils;->rectListToRegion(Ljava/util/List;Landroid/graphics/Region;)V+]Landroid/graphics/Region;Landroid/graphics/Region;]Ljava/util/List;Ljava/util/ArrayList; +Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy; +Landroid/accounts/AccountManager$BaseFutureTask$Response; +Landroid/accounts/IAccountAuthenticator$Stub$Proxy; +Landroid/accounts/IAccountManagerResponse$Stub$Proxy; +Landroid/app/ActivityManager$2; +Landroid/app/ActivityThread$ApplicationThread; +Landroid/app/AlarmManager$ListenerWrapper; +Landroid/app/AppOpsManager$3; +Landroid/app/AppOpsManager$4; +Landroid/app/AppOpsManager$6; +Landroid/app/ApplicationPackageManager; +Landroid/app/ContextImpl$ApplicationContentResolver; Landroid/app/IAlarmListener$Stub$Proxy; +Landroid/app/IApplicationThread$Stub$Proxy; +Landroid/app/IForegroundServiceObserver$Stub$Proxy; +Landroid/app/IInstantAppResolver$Stub$Proxy; +Landroid/app/IServiceConnection$Stub$Proxy; +Landroid/app/ITaskStackListener$Stub$Proxy; +Landroid/app/IUidObserver$Stub$Proxy; +Landroid/app/IWallpaperManagerCallback$Stub$Proxy; +Landroid/app/JobSchedulerImpl; +Landroid/app/KeyguardManager$1; +Landroid/app/LoadedApk$ReceiverDispatcher$Args; +Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver; +Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection; +Landroid/app/PendingIntent$FinishedDispatcher; +Landroid/app/SharedPreferencesImpl; +Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy; +Landroid/app/backup/IBackupObserver$Stub$Proxy; Landroid/app/job/IJobService$Stub$Proxy; +Landroid/app/job/JobServiceEngine$JobInterface; +Landroid/content/ContentProviderProxy; +Landroid/content/ContentResolver$CursorWrapperInner; +Landroid/content/IIntentReceiver$Stub$Proxy; +Landroid/content/ISyncAdapter$Stub$Proxy; Landroid/content/ISyncStatusObserver$Stub$Proxy; +Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy; +Landroid/content/pm/IOnChecksumsReadyListener$Stub$Proxy; +Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy; +Landroid/content/pm/LabeledIntent; +Landroid/content/pm/PackageInstaller$SessionCallbackDelegate; +Landroid/content/res/XmlBlock$Parser; +Landroid/database/ContentObserver$Transport; +Landroid/database/IContentObserver$Stub$Proxy; +Landroid/database/sqlite/SQLiteCursor; +Landroid/hardware/SystemSensorManager; +Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateManagerCallback; +Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback; +Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy; +Landroid/hardware/face/IFaceServiceReceiver$Stub$Proxy; +Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy; +Landroid/hardware/input/InputManagerGlobal$InputDevicesChangedListener; +Landroid/location/LocationManager$LocationListenerTransport; +Landroid/media/AudioManager$2; +Landroid/media/AudioManager$3; +Landroid/media/IAudioRoutesObserver$Stub$Proxy; +Landroid/media/IMediaRouterClient$Stub$Proxy; +Landroid/media/IRecordingConfigDispatcher$Stub$Proxy; +Landroid/media/MediaRouter$Static$1; +Landroid/media/MediaRouter$Static$Client; +Landroid/media/session/IActiveSessionsListener$Stub$Proxy; +Landroid/media/session/ISessionControllerCallback$Stub$Proxy; +Landroid/media/session/MediaSessionManager$SessionsChangedWrapper$1; +Landroid/net/INetworkRecommendationProvider$Stub$Proxy; +Landroid/net/LocalSocketImpl$SocketInputStream; +Landroid/net/LocalSocketImpl$SocketOutputStream; +Landroid/net/NetworkStats$1; +Landroid/net/Uri$HierarchicalUri; +Landroid/net/Uri$OpaqueUri; +Landroid/net/Uri$PathSegments; +Landroid/net/Uri$StringUri; +Landroid/os/BinderProxy; +Landroid/os/IInstalld$Stub$Proxy; +Landroid/os/IRemoteCallback$Stub$Proxy; Landroid/os/RemoteCallbackList$Builder$1; +Landroid/os/StrictMode$5; +Landroid/os/StrictMode$BackgroundActivityLaunchCallback; +Landroid/os/SystemClock$1; +Landroid/service/notification/ConditionProviderService$Provider; Landroid/service/notification/INotificationListener$Stub$Proxy; +Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper; +Landroid/service/textclassifier/ITextClassifierCallback$Stub$Proxy; +Landroid/service/trust/ITrustAgentService$Stub$Proxy; +Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy; +Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy; +Landroid/system/suspend/internal/ISuspendControlServiceInternal$Stub$Proxy; +Landroid/telephony/CellIdentityLte; +Landroid/telephony/CellIdentityNr; +Landroid/telephony/CellSignalStrengthGsm; +Landroid/telephony/CellSignalStrengthWcdma; +Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub; +Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub; +Landroid/telephony/TelephonyRegistryManager$1; +Landroid/telephony/TelephonyRegistryManager$3; +Landroid/telephony/TelephonyRegistryManager$CarrierPrivilegesCallbackWrapper; +Landroid/text/SpannableString; +Landroid/util/MapCollections$ArrayIterator; +Landroid/util/MapCollections$EntrySet; +Landroid/util/MapCollections$KeySet; +Landroid/util/MapCollections$MapIterator; +Landroid/util/MapCollections$ValuesCollection; +Landroid/util/RecurrenceRule$RecurringIterator; +Landroid/util/Spline$MonotoneCubicSpline; +Landroid/view/IDisplayWindowInsetsController$Stub$Proxy; +Landroid/view/IDisplayWindowListener$Stub$Proxy; +Landroid/view/ISystemGestureExclusionListener$Stub$Proxy; +Landroid/view/IWallpaperVisibilityListener$Stub$Proxy; +Landroid/view/IWindow$Stub$Proxy; +Landroid/view/ViewRootImpl$AccessibilityInteractionConnection; +Landroid/view/ViewRootImpl$W; +Landroid/view/WindowManagerImpl; +Landroid/view/accessibility/AccessibilityManager$1; +Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy; +Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy; +Landroid/view/inputmethod/ImeTracker$1; +Landroid/view/inputmethod/InputMethodManager$2; +Landroid/window/ITaskFragmentOrganizer$Stub$Proxy; +Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy; Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy; +Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy; +Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy; +Lcom/android/internal/backup/IBackupTransport$Stub$Proxy; +Lcom/android/internal/content/PackageMonitor$PackageMonitorCallback; +Lcom/android/internal/inputmethod/IInputMethodSession$Stub$Proxy; +Lcom/android/internal/inputmethod/ImeTracingPerfettoImpl; +Lcom/android/internal/os/Clock$1; +Lcom/android/internal/os/IResultReceiver$Stub$Proxy; +Lcom/android/internal/pm/parsing/pkg/PackageImpl; +Lcom/android/internal/pm/pkg/AndroidPackageSplitImpl; +Lcom/android/internal/pm/pkg/component/ParsedActivityImpl; +Lcom/android/internal/pm/pkg/component/ParsedAttributionImpl; +Lcom/android/internal/pm/pkg/component/ParsedIntentInfoImpl; +Lcom/android/internal/pm/pkg/component/ParsedPermissionImpl; +Lcom/android/internal/pm/pkg/component/ParsedServiceImpl; +Lcom/android/internal/pm/pkg/component/ParsedUsesPermissionImpl; Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy; +Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy; +Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy; +Lcom/android/internal/util/ArtBinaryXmlPullParser; +Lcom/android/internal/util/ArtBinaryXmlSerializer; +Lcom/android/internal/util/ConcurrentUtils$DirectExecutor; +Lcom/android/internal/util/XmlUtils$ForcedTypedXmlSerializer; +Lcom/android/internal/util/function/pooled/PooledLambdaImpl; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey; +Lcom/android/org/conscrypt/OpenSSLRSAPublicKey; +Lcom/android/org/conscrypt/OpenSSLX509Certificate; +Lcom/android/org/kxml2/io/KXmlParser; +Lcom/android/org/kxml2/io/KXmlSerializer; Lcom/android/server/BatteryService$LocalService; Lcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl$$ExternalSyntheticLambda0; Lcom/android/server/DeviceIdleController$LocalService; @@ -4389,6 +4671,7 @@ Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl; Lcom/android/server/job/JobSchedulerService$4; Lcom/android/server/job/controllers/BackgroundJobsController$2; Lcom/android/server/job/controllers/QuotaController$TempAllowlistTracker; +Lcom/android/server/lights/LightsService$LightImpl; Lcom/android/server/net/NetworkManagementService$LocalService; Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener; Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl; @@ -4397,7 +4680,12 @@ Lcom/android/server/permission/access/appop/AppOpService; Lcom/android/server/pm/CrossProfileIntentResolver; Lcom/android/server/pm/PackageManagerService$IPackageManagerImpl; Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; +Lcom/android/server/pm/PackageSetting; Lcom/android/server/pm/UserManagerService$LocalService; +Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl; +Lcom/android/server/pm/local/PackageManagerLocalImpl; +Lcom/android/server/pm/pkg/PackageUserStateImpl; +Lcom/android/server/pm/pkg/SharedLibraryWrapper; Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver; Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver; Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver; @@ -4407,7 +4695,6 @@ Lcom/android/server/power/PowerManagerService$1; Lcom/android/server/power/PowerManagerService$LocalService; Lcom/android/server/power/stats/BatteryStatsImpl$1; Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl; -Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer; Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter; Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter; Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor; @@ -4422,3 +4709,88 @@ Lcom/android/server/usage/UsageStatsService$LocalService; Lcom/android/server/wm/ActivityTaskManagerService$LocalService; Lcom/android/server/wm/WindowManagerService$LocalService; Lcom/android/server/wm/WindowState; +Ljava/lang/ThreadLocal$SuppliedThreadLocal; +Ljava/lang/UNIXProcess$ProcessPipeOutputStream; +Ljava/lang/UNIXProcess; +Ljava/nio/HeapByteBuffer; +Ljava/nio/HeapCharBuffer; +Ljava/security/MessageDigest$Delegate; +Ljava/time/Clock$SystemClock; +Ljava/util/ArrayDeque$DeqIterator; +Ljava/util/ArrayDeque$DescendingIterator; +Ljava/util/ArrayList$Itr; +Ljava/util/ArrayList$SubList$1; +Ljava/util/ArrayList$SubList; +Ljava/util/Arrays$ArrayItr; +Ljava/util/Arrays$ArrayList; +Ljava/util/Collections$1; +Ljava/util/Collections$EmptyIterator; +Ljava/util/Collections$EmptyList; +Ljava/util/Collections$EmptyMap; +Ljava/util/Collections$EmptySet; +Ljava/util/Collections$SetFromMap; +Ljava/util/Collections$SingletonList; +Ljava/util/Collections$SynchronizedMap; +Ljava/util/Collections$SynchronizedRandomAccessList; +Ljava/util/Collections$SynchronizedSet; +Ljava/util/Collections$UnmodifiableCollection$1; +Ljava/util/Collections$UnmodifiableCollection; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet; +Ljava/util/Collections$UnmodifiableMap; +Ljava/util/Collections$UnmodifiableRandomAccessList; +Ljava/util/Collections$UnmodifiableSet; +Ljava/util/Comparator$$ExternalSyntheticLambda0; +Ljava/util/GregorianCalendar; +Ljava/util/HashMap$EntryIterator; +Ljava/util/HashMap$EntrySet; +Ljava/util/HashMap$KeyIterator; +Ljava/util/HashMap$KeySet; +Ljava/util/HashMap$Node; +Ljava/util/HashMap$ValueIterator; +Ljava/util/HashMap$Values; +Ljava/util/ImmutableCollections$List12; +Ljava/util/ImmutableCollections$ListItr; +Ljava/util/ImmutableCollections$ListN; +Ljava/util/ImmutableCollections$MapN; +Ljava/util/ImmutableCollections$Set12; +Ljava/util/ImmutableCollections$SetN; +Ljava/util/LinkedHashMap$Entry; +Ljava/util/LinkedHashMap$LinkedEntryIterator; +Ljava/util/LinkedHashMap$LinkedEntrySet; +Ljava/util/LinkedHashMap$LinkedKeyIterator; +Ljava/util/LinkedHashMap$LinkedKeySet; +Ljava/util/LinkedHashMap$LinkedValueIterator; +Ljava/util/LinkedHashMap$LinkedValues; +Ljava/util/LinkedList$DescendingIterator; +Ljava/util/LinkedList$ListItr; +Ljava/util/PriorityQueue$Itr; +Ljava/util/TreeMap$EntryIterator; +Ljava/util/TreeMap$EntrySet; +Ljava/util/TreeMap$KeyIterator; +Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator; +Ljava/util/TreeMap$TreeMapEntry; +Ljava/util/TreeMap$ValueIterator; +Ljava/util/TreeMap$Values; +Ljava/util/WeakHashMap$KeyIterator; +Ljava/util/WeakHashMap$KeySet; +Ljava/util/concurrent/ConcurrentHashMap$EntryIterator; +Ljava/util/concurrent/ConcurrentHashMap$EntrySetView; +Ljava/util/concurrent/ConcurrentHashMap$KeyIterator; +Ljava/util/concurrent/ConcurrentHashMap$MapEntry; +Ljava/util/concurrent/ConcurrentHashMap$ValueIterator; +Ljava/util/concurrent/ConcurrentHashMap$ValuesView; +Ljava/util/concurrent/ConcurrentLinkedQueue$Itr; +Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator; +Ljava/util/concurrent/Executors$AutoShutdownDelegatedExecutorService; +Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService; +Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; +Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; +Ljava/util/stream/ReferencePipeline$2; +Ljava/util/stream/ReferencePipeline$3; +Ljava/util/stream/ReferencePipeline$4; +Ljava/util/stream/ReferencePipeline$Head; +Ljava/util/zip/GZIPInputStream; +Llibcore/util/ZoneInfo; +Lsun/nio/fs/UnixPath; diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java index bd34f33226a1..c182c2618fdf 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java @@ -149,7 +149,6 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba OperationStorage mOperationStorage; List<PackageInfo> mPackages; - PackageInfo mCurrentPackage; boolean mUpdateSchedule; CountDownLatch mLatch; FullBackupJob mJob; // if a scheduled job needs to be finished afterwards @@ -207,10 +206,9 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba for (String pkg : whichPackages) { try { PackageManager pm = backupManagerService.getPackageManager(); - PackageInfo info = pm.getPackageInfoAsUser(pkg, + PackageInfo packageInfo = pm.getPackageInfoAsUser(pkg, PackageManager.GET_SIGNING_CERTIFICATES, mUserId); - mCurrentPackage = info; - if (!mBackupEligibilityRules.appIsEligibleForBackup(info.applicationInfo)) { + if (!mBackupEligibilityRules.appIsEligibleForBackup(packageInfo.applicationInfo)) { // Cull any packages that have indicated that backups are not permitted, // that run as system-domain uids but do not define their own backup agents, // as well as any explicit mention of the 'special' shared-storage agent @@ -220,13 +218,13 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_INELIGIBLE, - mCurrentPackage, + packageInfo, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - null); + /* extras= */ null); BackupObserverUtils.sendBackupOnPackageResult(mBackupObserver, pkg, BackupManager.ERROR_BACKUP_NOT_ALLOWED); continue; - } else if (!mBackupEligibilityRules.appGetsFullBackup(info)) { + } else if (!mBackupEligibilityRules.appGetsFullBackup(packageInfo)) { // Cull any packages that are found in the queue but now aren't supposed // to get full-data backup operations. if (DEBUG) { @@ -235,13 +233,13 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_KEY_VALUE_PARTICIPANT, - mCurrentPackage, + packageInfo, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - null); + /* extras= */ null); BackupObserverUtils.sendBackupOnPackageResult(mBackupObserver, pkg, BackupManager.ERROR_BACKUP_NOT_ALLOWED); continue; - } else if (mBackupEligibilityRules.appIsStopped(info.applicationInfo)) { + } else if (mBackupEligibilityRules.appIsStopped(packageInfo.applicationInfo)) { // Cull any packages in the 'stopped' state: they've either just been // installed or have explicitly been force-stopped by the user. In both // cases we do not want to launch them for backup. @@ -250,21 +248,21 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_STOPPED, - mCurrentPackage, + packageInfo, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - null); + /* extras= */ null); BackupObserverUtils.sendBackupOnPackageResult(mBackupObserver, pkg, BackupManager.ERROR_BACKUP_NOT_ALLOWED); continue; } - mPackages.add(info); + mPackages.add(packageInfo); } catch (NameNotFoundException e) { Slog.i(TAG, "Requested package " + pkg + " not found; ignoring"); mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_NOT_FOUND, - mCurrentPackage, + /* pkg= */ null, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - null); + /* extras= */ null); } } @@ -352,10 +350,11 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } else { monitoringEvent = BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; } - mBackupManagerMonitorEventSender - .monitorEvent(monitoringEvent, null, - BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - null); + mBackupManagerMonitorEventSender.monitorEvent( + monitoringEvent, + /* pkg= */ null, + BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, + /* extras= */ null); mUpdateSchedule = false; backupRunStatus = BackupManager.ERROR_BACKUP_NOT_ALLOWED; return; @@ -367,8 +366,9 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED; mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_TRANSPORT_NOT_PRESENT, - mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, - null); + /* pkg= */ null, + BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, + /* extras= */ null); return; } @@ -461,9 +461,10 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_ERROR_PREFLIGHT, - mCurrentPackage, + currentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - mBackupManagerMonitorEventSender.putMonitoringExtra(null, + BackupManagerMonitorEventSender.putMonitoringExtra( + /* extras= */ null, BackupManagerMonitor.EXTRA_LOG_PREFLIGHT_ERROR, preflightResult)); backupPackageStatus = (int) preflightResult; @@ -496,9 +497,9 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba + ": " + totalRead + " of " + quota); mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_QUOTA_HIT_PREFLIGHT, - mCurrentPackage, + currentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, - null); + /* extras= */ null); mBackupRunner.sendQuotaExceeded(totalRead, quota); } } @@ -645,9 +646,9 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba Slog.w(TAG, "Exception trying full transport backup", e); mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_EXCEPTION_FULL_BACKUP, - mCurrentPackage, + /* pkg= */ null, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - mBackupManagerMonitorEventSender.putMonitoringExtra(null, + BackupManagerMonitorEventSender.putMonitoringExtra(/* extras= */ null, BackupManagerMonitor.EXTRA_LOG_EXCEPTION_FULL_BACKUP, Log.getStackTraceString(e))); @@ -966,9 +967,6 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } } - - // BackupRestoreTask interface: specifically, timeout detection - @Override public void execute() { /* intentionally empty */ } @@ -981,7 +979,9 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_FULL_BACKUP_CANCEL, - mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, null); + mTarget, + BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, + /* extras= */ null); mIsCancelled = true; // Cancel tasks spun off by this task. mUserBackupManagerService.handleCancel(mEphemeralToken, cancelAll); diff --git a/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorEventSender.java b/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorEventSender.java index c4519b1173eb..33668a6d5314 100644 --- a/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorEventSender.java +++ b/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorEventSender.java @@ -71,6 +71,7 @@ public class BackupManagerMonitorEventSender { mMonitor = monitor; } + @Nullable public IBackupManagerMonitor getMonitor() { return mMonitor; } @@ -87,9 +88,9 @@ public class BackupManagerMonitorEventSender { */ public void monitorEvent( int id, - PackageInfo pkg, + @Nullable PackageInfo pkg, int category, - Bundle extras) { + @Nullable Bundle extras) { try { Bundle bundle = new Bundle(); bundle.putInt(BackupManagerMonitor.EXTRA_LOG_EVENT_ID, id); diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index b6fe0ad37078..e46bbe2871cd 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -160,6 +160,7 @@ import com.android.server.memory.ZramMaintenance; import com.android.server.pm.Installer; import com.android.server.pm.UserManagerInternal; import com.android.server.storage.AppFuseBridge; +import com.android.server.storage.ImmutableVolumeInfo; import com.android.server.storage.StorageSessionController; import com.android.server.storage.StorageSessionController.ExternalStorageServiceException; import com.android.server.storage.WatchedVolumeInfo; @@ -777,7 +778,7 @@ class StorageManagerService extends IStorageManager.Stub break; } case H_VOLUME_UNMOUNT: { - final WatchedVolumeInfo vol = (WatchedVolumeInfo) msg.obj; + final ImmutableVolumeInfo vol = (ImmutableVolumeInfo) msg.obj; unmount(vol); break; } @@ -898,8 +899,14 @@ class StorageManagerService extends IStorageManager.Stub for (int i = 0; i < size; i++) { final WatchedVolumeInfo vol = mVolumes.valueAt(i); if (vol.getMountUserId() == userId) { + // Capture the volume before we set mount user id to null, + // so that StorageSessionController remove the session from + // the correct user (old mount user id) + final ImmutableVolumeInfo volToUnmount + = vol.getClonedImmutableVolumeInfo(); vol.setMountUserId(UserHandle.USER_NULL); - mHandler.obtainMessage(H_VOLUME_UNMOUNT, vol).sendToTarget(); + mHandler.obtainMessage(H_VOLUME_UNMOUNT, volToUnmount) + .sendToTarget(); } } } @@ -1295,7 +1302,12 @@ class StorageManagerService extends IStorageManager.Stub } private void maybeRemountVolumes(int userId) { - List<WatchedVolumeInfo> volumesToRemount = new ArrayList<>(); + // We need to keep 2 lists + // 1. List of volumes before we set the mount user Id so that + // StorageSessionController is able to remove the session from the correct user (old one) + // 2. List of volumes to mount which should have the up to date info + List<ImmutableVolumeInfo> volumesToUnmount = new ArrayList<>(); + List<WatchedVolumeInfo> volumesToMount = new ArrayList<>(); synchronized (mLock) { for (int i = 0; i < mVolumes.size(); i++) { final WatchedVolumeInfo vol = mVolumes.valueAt(i); @@ -1303,16 +1315,19 @@ class StorageManagerService extends IStorageManager.Stub && vol.getMountUserId() != mCurrentUserId) { // If there's a visible secondary volume mounted, // we need to update the currentUserId and remount + // But capture the volume with the old user id first to use it in unmounting + volumesToUnmount.add(vol.getClonedImmutableVolumeInfo()); vol.setMountUserId(mCurrentUserId); - volumesToRemount.add(vol); + volumesToMount.add(vol); } } } - for (WatchedVolumeInfo vol : volumesToRemount) { - Slog.i(TAG, "Remounting volume for user: " + userId + ". Volume: " + vol); - mHandler.obtainMessage(H_VOLUME_UNMOUNT, vol).sendToTarget(); - mHandler.obtainMessage(H_VOLUME_MOUNT, vol).sendToTarget(); + for (int i = 0; i < volumesToMount.size(); i++) { + Slog.i(TAG, "Remounting volume for user: " + userId + ". Volume: " + + volumesToUnmount.get(i)); + mHandler.obtainMessage(H_VOLUME_UNMOUNT, volumesToUnmount.get(i)).sendToTarget(); + mHandler.obtainMessage(H_VOLUME_MOUNT, volumesToMount.get(i)).sendToTarget(); } } @@ -2430,10 +2445,10 @@ class StorageManagerService extends IStorageManager.Stub super.unmount_enforcePermission(); final WatchedVolumeInfo vol = findVolumeByIdOrThrow(volId); - unmount(vol); + unmount(vol.getClonedImmutableVolumeInfo()); } - private void unmount(WatchedVolumeInfo vol) { + private void unmount(ImmutableVolumeInfo vol) { try { try { if (vol.getType() == VolumeInfo.TYPE_PRIVATE) { @@ -2444,7 +2459,7 @@ class StorageManagerService extends IStorageManager.Stub } extendWatchdogTimeout("#unmount might be slow"); mVold.unmount(vol.getId()); - mStorageSessionController.onVolumeUnmount(vol.getImmutableVolumeInfo()); + mStorageSessionController.onVolumeUnmount(vol); } catch (Exception e) { Slog.wtf(TAG, e); } diff --git a/services/core/java/com/android/server/SystemTimeZone.java b/services/core/java/com/android/server/SystemTimeZone.java index dd07081bda12..c8810f672320 100644 --- a/services/core/java/com/android/server/SystemTimeZone.java +++ b/services/core/java/com/android/server/SystemTimeZone.java @@ -133,6 +133,7 @@ public final class SystemTimeZone { boolean timeZoneChanged = false; synchronized (SystemTimeZone.class) { String currentTimeZoneId = getTimeZoneId(); + @TimeZoneConfidence int currentConfidence = getTimeZoneConfidence(); if (currentTimeZoneId == null || !currentTimeZoneId.equals(timeZoneId)) { SystemProperties.set(TIME_ZONE_SYSTEM_PROPERTY, timeZoneId); if (DEBUG) { @@ -145,6 +146,8 @@ public final class SystemTimeZone { String logMsg = "Time zone or confidence set: " + " (new) timeZoneId=" + timeZoneId + ", (new) confidence=" + confidence + + ", (old) timeZoneId=" + currentTimeZoneId + + ", (old) confidence=" + currentConfidence + ", logInfo=" + logInfo; addDebugLogEntry(logMsg); } diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 8eda17698b9b..296f7cfe93ba 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -907,7 +907,7 @@ final class UiModeManagerService extends SystemService { throw new IllegalArgumentException("Unknown mode: " + mode); } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); @@ -970,7 +970,7 @@ final class UiModeManagerService extends SystemService { @AttentionModeThemeOverlayType int attentionModeThemeOverlayType) { setAttentionModeThemeOverlay_enforcePermission(); - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); synchronized (mLock) { if (mAttentionModeThemeOverlay != attentionModeThemeOverlayType) { @@ -1070,7 +1070,7 @@ final class UiModeManagerService extends SystemService { return false; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); // Store the last requested bedtime night mode state so that we don't need to notify // anyone if the user decides to switch to the night mode to bedtime. @@ -1124,7 +1124,7 @@ final class UiModeManagerService extends SystemService { return; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); @@ -1155,7 +1155,7 @@ final class UiModeManagerService extends SystemService { return; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); @@ -1178,7 +1178,7 @@ final class UiModeManagerService extends SystemService { assertLegit(callingPackage); assertSingleProjectionType(projectionType); enforceProjectionTypePermissions(projectionType); - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); synchronized (mLock) { if (mProjectionHolders == null) { @@ -1224,7 +1224,7 @@ final class UiModeManagerService extends SystemService { assertLegit(callingPackage); assertSingleProjectionType(projectionType); enforceProjectionTypePermissions(projectionType); - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); return releaseProjectionUnchecked(projectionType, callingPackage); } @@ -1266,7 +1266,7 @@ final class UiModeManagerService extends SystemService { return; } - enforceCurrentUserIfVisibleBackgroundEnabled(mCurrentUser); + enforceCurrentUserIfVisibleBackgroundEnabled(); synchronized (mLock) { if (mProjectionListeners == null) { diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index fdadaaf9654e..4187ee274f56 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -9358,10 +9358,17 @@ public final class ActiveServices { + "for package " + packageName); } - setServiceForegroundInnerLocked(sr, sr.foregroundId, - sr.foregroundNoti, /* flags */ 0, - ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK, - /* callingUidStart */ 0, /* systemRequestedTransition */ true); + try { + setServiceForegroundInnerLocked(sr, sr.foregroundId, + sr.foregroundNoti, /* flags */ 0, + ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK, + /* callingUidStart */ 0, /* systemRequestedTransition */ true); + } catch (Exception e) { + Slog.w(TAG, + "Exception in system initiated foreground service transition " + + "for package " + packageName + + ":" + e.toString()); + } } else { if (DEBUG_FOREGROUND_SERVICE) { Slog.d(TAG, @@ -9411,10 +9418,17 @@ public final class ActiveServices { + "for package " + packageName); } - setServiceForegroundInnerLocked(sr, /* id */ 0, - /* notification */ null, /* flags */ 0, - /* foregroundServiceType */ 0, /* callingUidStart */ 0, - /* systemRequestedTransition */ true); + try { + setServiceForegroundInnerLocked(sr, /* id */ 0, + /* notification */ null, /* flags */ 0, + /* foregroundServiceType */ 0, /* callingUidStart */ 0, + /* systemRequestedTransition */ true); + } catch (Exception e) { + Slog.wtf(TAG, + "Exception in system initiated background service transition " + + "for package " + packageName + + ":" + e.toString()); + } } else { if (DEBUG_FOREGROUND_SERVICE) { Slog.d(TAG, "Ignoring system initiated transition of foreground" diff --git a/services/core/java/com/android/server/am/BroadcastQueueImpl.java b/services/core/java/com/android/server/am/BroadcastQueueImpl.java index 36035bdcddbc..78beb18263a7 100644 --- a/services/core/java/com/android/server/am/BroadcastQueueImpl.java +++ b/services/core/java/com/android/server/am/BroadcastQueueImpl.java @@ -832,7 +832,9 @@ class BroadcastQueueImpl extends BroadcastQueue { // If this receiver is going to be skipped, skip it now itself and don't even enqueue // it. - final String skipReason = mSkipPolicy.shouldSkipMessage(r, receiver); + final String skipReason = Flags.avoidNoteOpAtEnqueue() + ? mSkipPolicy.shouldSkipAtEnqueueMessage(r, receiver) + : mSkipPolicy.shouldSkipMessage(r, receiver); if (skipReason != null) { setDeliveryState(null, null, r, i, receiver, BroadcastRecord.DELIVERY_SKIPPED, "skipped by policy at enqueue: " + skipReason); diff --git a/services/core/java/com/android/server/am/BroadcastSkipPolicy.java b/services/core/java/com/android/server/am/BroadcastSkipPolicy.java index d2af84cf3d30..b0d5994cc60b 100644 --- a/services/core/java/com/android/server/am/BroadcastSkipPolicy.java +++ b/services/core/java/com/android/server/am/BroadcastSkipPolicy.java @@ -71,10 +71,20 @@ public class BroadcastSkipPolicy { * {@code null} if it can proceed. */ public @Nullable String shouldSkipMessage(@NonNull BroadcastRecord r, @NonNull Object target) { + return shouldSkipMessage(r, target, false /* preflight */); + } + + public @Nullable String shouldSkipAtEnqueueMessage(@NonNull BroadcastRecord r, + @NonNull Object target) { + return shouldSkipMessage(r, target, true /* preflight */); + } + + private @Nullable String shouldSkipMessage(@NonNull BroadcastRecord r, @NonNull Object target, + boolean preflight) { if (target instanceof BroadcastFilter) { - return shouldSkipMessage(r, (BroadcastFilter) target); + return shouldSkipMessage(r, (BroadcastFilter) target, preflight); } else { - return shouldSkipMessage(r, (ResolveInfo) target); + return shouldSkipMessage(r, (ResolveInfo) target, preflight); } } @@ -86,7 +96,7 @@ public class BroadcastSkipPolicy { * {@code null} if it can proceed. */ private @Nullable String shouldSkipMessage(@NonNull BroadcastRecord r, - @NonNull ResolveInfo info) { + @NonNull ResolveInfo info, boolean preflight) { final BroadcastOptions brOptions = r.options; final ComponentName component = new ComponentName( info.activityInfo.applicationInfo.packageName, @@ -134,15 +144,23 @@ public class BroadcastSkipPolicy { + " requires " + info.activityInfo.permission; } } else if (info.activityInfo.permission != null) { - final int opCode = AppOpsManager.permissionToOpCode(info.activityInfo.permission); - if (opCode != AppOpsManager.OP_NONE && mService.getAppOpsManager().noteOpNoThrow(opCode, - r.callingUid, r.callerPackage, r.callerFeatureId, - "Broadcast delivered to " + info.activityInfo.name) - != AppOpsManager.MODE_ALLOWED) { - return "Appop Denial: broadcasting " - + broadcastDescription(r, component) - + " requires appop " + AppOpsManager.permissionToOp( - info.activityInfo.permission); + final String op = AppOpsManager.permissionToOp(info.activityInfo.permission); + if (op != null) { + final int mode; + if (preflight) { + mode = mService.getAppOpsManager().checkOpNoThrow(op, + r.callingUid, r.callerPackage, r.callerFeatureId); + } else { + mode = mService.getAppOpsManager().noteOpNoThrow(op, + r.callingUid, r.callerPackage, r.callerFeatureId, + "Broadcast delivered to " + info.activityInfo.name); + } + if (mode != AppOpsManager.MODE_ALLOWED) { + return "Appop Denial: broadcasting " + + broadcastDescription(r, component) + + " requires appop " + AppOpsManager.permissionToOp( + info.activityInfo.permission); + } } } @@ -250,8 +268,8 @@ public class BroadcastSkipPolicy { perm = PackageManager.PERMISSION_DENIED; } - int appOp = AppOpsManager.permissionToOpCode(excludedPermission); - if (appOp != AppOpsManager.OP_NONE) { + final String appOp = AppOpsManager.permissionToOp(excludedPermission); + if (appOp != null) { // When there is an app op associated with the permission, // skip when both the permission and the app op are // granted. @@ -259,7 +277,7 @@ public class BroadcastSkipPolicy { mService.getAppOpsManager().checkOpNoThrow(appOp, info.activityInfo.applicationInfo.uid, info.activityInfo.packageName) - == AppOpsManager.MODE_ALLOWED)) { + == AppOpsManager.MODE_ALLOWED)) { return "Skipping delivery to " + info.activityInfo.packageName + " due to excluded permission " + excludedPermission; } @@ -292,9 +310,10 @@ public class BroadcastSkipPolicy { createAttributionSourcesForResolveInfo(info); for (int i = 0; i < r.requiredPermissions.length; i++) { String requiredPermission = r.requiredPermissions[i]; - perm = hasPermissionForDataDelivery( + perm = hasPermission( requiredPermission, "Broadcast delivered to " + info.activityInfo.name, + preflight, attributionSources) ? PackageManager.PERMISSION_GRANTED : PackageManager.PERMISSION_DENIED; @@ -308,10 +327,14 @@ public class BroadcastSkipPolicy { } } } - if (r.appOp != AppOpsManager.OP_NONE) { - if (!noteOpForManifestReceiver(r.appOp, r, info, component)) { + if (r.appOp != AppOpsManager.OP_NONE && AppOpsManager.isValidOp(r.appOp)) { + final String op = AppOpsManager.opToPublicName(r.appOp); + final boolean appOpAllowed = preflight + ? checkOpForManifestReceiver(r.appOp, op, r, info, component) + : noteOpForManifestReceiver(r.appOp, op, r, info, component); + if (!appOpAllowed) { return "Skipping delivery to " + info.activityInfo.packageName - + " due to required appop " + r.appOp; + + " due to required appop " + AppOpsManager.opToName(r.appOp); } } @@ -338,7 +361,7 @@ public class BroadcastSkipPolicy { * {@code null} if it can proceed. */ private @Nullable String shouldSkipMessage(@NonNull BroadcastRecord r, - @NonNull BroadcastFilter filter) { + @NonNull BroadcastFilter filter, boolean preflight) { if (r.options != null && !r.options.testRequireCompatChange(filter.owningUid)) { return "Compat change filtered: broadcasting " + r.intent.toString() + " to uid " + filter.owningUid + " due to compat change " @@ -372,18 +395,25 @@ public class BroadcastSkipPolicy { + " requires " + filter.requiredPermission + " due to registered receiver " + filter; } else { - final int opCode = AppOpsManager.permissionToOpCode(filter.requiredPermission); - if (opCode != AppOpsManager.OP_NONE - && mService.getAppOpsManager().noteOpNoThrow(opCode, r.callingUid, - r.callerPackage, r.callerFeatureId, "Broadcast sent to protected receiver") - != AppOpsManager.MODE_ALLOWED) { - return "Appop Denial: broadcasting " - + r.intent.toString() - + " from " + r.callerPackage + " (pid=" - + r.callingPid + ", uid=" + r.callingUid + ")" - + " requires appop " + AppOpsManager.permissionToOp( - filter.requiredPermission) - + " due to registered receiver " + filter; + final String op = AppOpsManager.permissionToOp(filter.requiredPermission); + if (op != null) { + final int mode; + if (preflight) { + mode = mService.getAppOpsManager().checkOpNoThrow(op, + r.callingUid, r.callerPackage, r.callerFeatureId); + } else { + mode = mService.getAppOpsManager().noteOpNoThrow(op, r.callingUid, + r.callerPackage, r.callerFeatureId, + "Broadcast sent to protected receiver"); + } + if (mode != AppOpsManager.MODE_ALLOWED) { + return "Appop Denial: broadcasting " + + r.intent + + " from " + r.callerPackage + " (pid=" + + r.callingPid + ", uid=" + r.callingUid + ")" + + " requires appop " + op + + " due to registered receiver " + filter; + } } } } @@ -433,9 +463,10 @@ public class BroadcastSkipPolicy { .build(); for (int i = 0; i < r.requiredPermissions.length; i++) { String requiredPermission = r.requiredPermissions[i]; - final int perm = hasPermissionForDataDelivery( + final int perm = hasPermission( requiredPermission, "Broadcast delivered to registered receiver " + filter.receiverId, + preflight, attributionSource) ? PackageManager.PERMISSION_GRANTED : PackageManager.PERMISSION_DENIED; @@ -471,8 +502,8 @@ public class BroadcastSkipPolicy { final int perm = checkComponentPermission(excludedPermission, filter.receiverList.pid, filter.receiverList.uid, -1, true); - int appOp = AppOpsManager.permissionToOpCode(excludedPermission); - if (appOp != AppOpsManager.OP_NONE) { + final String appOp = AppOpsManager.permissionToOp(excludedPermission); + if (appOp != null) { // When there is an app op associated with the permission, // skip when both the permission and the app op are // granted. @@ -480,14 +511,13 @@ public class BroadcastSkipPolicy { mService.getAppOpsManager().checkOpNoThrow(appOp, filter.receiverList.uid, filter.packageName) - == AppOpsManager.MODE_ALLOWED)) { + == AppOpsManager.MODE_ALLOWED)) { return "Appop Denial: receiving " - + r.intent.toString() + + r.intent + " to " + filter.receiverList.app + " (pid=" + filter.receiverList.pid + ", uid=" + filter.receiverList.uid + ")" - + " excludes appop " + AppOpsManager.permissionToOp( - excludedPermission) + + " excludes appop " + appOp + " due to sender " + r.callerPackage + " (uid " + r.callingUid + ")"; } @@ -496,7 +526,7 @@ public class BroadcastSkipPolicy { // skip when permission is granted. if (perm == PackageManager.PERMISSION_GRANTED) { return "Permission Denial: receiving " - + r.intent.toString() + + r.intent + " to " + filter.receiverList.app + " (pid=" + filter.receiverList.pid + ", uid=" + filter.receiverList.uid + ")" @@ -523,19 +553,27 @@ public class BroadcastSkipPolicy { } // If the broadcast also requires an app op check that as well. - if (r.appOp != AppOpsManager.OP_NONE - && mService.getAppOpsManager().noteOpNoThrow(r.appOp, - filter.receiverList.uid, filter.packageName, filter.featureId, - "Broadcast delivered to registered receiver " + filter.receiverId) - != AppOpsManager.MODE_ALLOWED) { - return "Appop Denial: receiving " - + r.intent.toString() - + " to " + filter.receiverList.app - + " (pid=" + filter.receiverList.pid - + ", uid=" + filter.receiverList.uid + ")" - + " requires appop " + AppOpsManager.opToName(r.appOp) - + " due to sender " + r.callerPackage - + " (uid " + r.callingUid + ")"; + if (r.appOp != AppOpsManager.OP_NONE && AppOpsManager.isValidOp(r.appOp)) { + final String op = AppOpsManager.opToPublicName(r.appOp); + final int mode; + if (preflight) { + mode = mService.getAppOpsManager().checkOpNoThrow(op, + filter.receiverList.uid, filter.packageName, filter.featureId); + } else { + mode = mService.getAppOpsManager().noteOpNoThrow(op, + filter.receiverList.uid, filter.packageName, filter.featureId, + "Broadcast delivered to registered receiver " + filter.receiverId); + } + if (mode != AppOpsManager.MODE_ALLOWED) { + return "Appop Denial: receiving " + + r.intent + + " to " + filter.receiverList.app + + " (pid=" + filter.receiverList.pid + + ", uid=" + filter.receiverList.uid + ")" + + " requires appop " + AppOpsManager.opToName(r.appOp) + + " due to sender " + r.callerPackage + + " (uid " + r.callingUid + ")"; + } } // Ensure that broadcasts are only sent to other apps if they are explicitly marked as @@ -572,14 +610,14 @@ public class BroadcastSkipPolicy { + ", uid=" + r.callingUid + ") to " + component.flattenToShortString(); } - private boolean noteOpForManifestReceiver(int appOp, BroadcastRecord r, ResolveInfo info, - ComponentName component) { + private boolean noteOpForManifestReceiver(int opCode, String appOp, BroadcastRecord r, + ResolveInfo info, ComponentName component) { if (ArrayUtils.isEmpty(info.activityInfo.attributionTags)) { - return noteOpForManifestReceiverInner(appOp, r, info, component, null); + return noteOpForManifestReceiverInner(opCode, appOp, r, info, component, null); } else { // Attribution tags provided, noteOp each tag for (String tag : info.activityInfo.attributionTags) { - if (!noteOpForManifestReceiverInner(appOp, r, info, component, tag)) { + if (!noteOpForManifestReceiverInner(opCode, appOp, r, info, component, tag)) { return false; } } @@ -587,8 +625,8 @@ public class BroadcastSkipPolicy { } } - private boolean noteOpForManifestReceiverInner(int appOp, BroadcastRecord r, ResolveInfo info, - ComponentName component, String tag) { + private boolean noteOpForManifestReceiverInner(int opCode, String appOp, BroadcastRecord r, + ResolveInfo info, ComponentName component, String tag) { if (mService.getAppOpsManager().noteOpNoThrow(appOp, info.activityInfo.applicationInfo.uid, info.activityInfo.packageName, @@ -598,7 +636,37 @@ public class BroadcastSkipPolicy { Slog.w(TAG, "Appop Denial: receiving " + r.intent + " to " + component.flattenToShortString() - + " requires appop " + AppOpsManager.opToName(appOp) + + " requires appop " + AppOpsManager.opToName(opCode) + + " due to sender " + r.callerPackage + + " (uid " + r.callingUid + ")"); + return false; + } + return true; + } + + private boolean checkOpForManifestReceiver(int opCode, String appOp, BroadcastRecord r, + ResolveInfo info, ComponentName component) { + if (ArrayUtils.isEmpty(info.activityInfo.attributionTags)) { + return checkOpForManifestReceiverInner(opCode, appOp, r, info, component, null); + } else { + // Attribution tags provided, noteOp each tag + for (String tag : info.activityInfo.attributionTags) { + if (!checkOpForManifestReceiverInner(opCode, appOp, r, info, component, tag)) { + return false; + } + } + return true; + } + } + + private boolean checkOpForManifestReceiverInner(int opCode, String appOp, BroadcastRecord r, + ResolveInfo info, ComponentName component, String tag) { + if (mService.getAppOpsManager().checkOpNoThrow(appOp, info.activityInfo.applicationInfo.uid, + info.activityInfo.packageName, tag) != AppOpsManager.MODE_ALLOWED) { + Slog.w(TAG, "Appop Denial: receiving " + + r.intent + " to " + + component.flattenToShortString() + + " requires appop " + AppOpsManager.opToName(opCode) + " due to sender " + r.callerPackage + " (uid " + r.callingUid + ")"); return false; @@ -694,9 +762,10 @@ public class BroadcastSkipPolicy { return mPermissionManager; } - private boolean hasPermissionForDataDelivery( + private boolean hasPermission( @NonNull String permission, @NonNull String message, + boolean preflight, @NonNull AttributionSource... attributionSources) { final PermissionManager permissionManager = getPermissionManager(); if (permissionManager == null) { @@ -704,9 +773,14 @@ public class BroadcastSkipPolicy { } for (AttributionSource attributionSource : attributionSources) { - final int permissionCheckResult = - permissionManager.checkPermissionForDataDelivery( - permission, attributionSource, message); + final int permissionCheckResult; + if (preflight) { + permissionCheckResult = permissionManager.checkPermissionForPreflight( + permission, attributionSource); + } else { + permissionCheckResult = permissionManager.checkPermissionForDataDelivery( + permission, attributionSource, message); + } if (permissionCheckResult != PackageManager.PERMISSION_GRANTED) { return false; } diff --git a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java index f1007e75e0af..0954c49f94d6 100644 --- a/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java +++ b/services/core/java/com/android/server/am/SettingsToPropertiesMapper.java @@ -238,6 +238,8 @@ public class SettingsToPropertiesMapper { "pixel_connectivity_gps", "pixel_continuity", "pixel_display", + "pixel_fingerprint", + "pixel_gsc", "pixel_perf", "pixel_sensai", "pixel_sensors", @@ -245,6 +247,7 @@ public class SettingsToPropertiesMapper { "pixel_system_sw_video", "pixel_video_sw", "pixel_watch", + "pixel_wifi", "platform_compat", "platform_security", "pixel_watch_debug_trace", diff --git a/services/core/java/com/android/server/am/broadcasts_flags.aconfig b/services/core/java/com/android/server/am/broadcasts_flags.aconfig index 7f169db7dcec..68e21a35a531 100644 --- a/services/core/java/com/android/server/am/broadcasts_flags.aconfig +++ b/services/core/java/com/android/server/am/broadcasts_flags.aconfig @@ -15,4 +15,15 @@ flag { description: "Limit the scope of receiver priorities to within a process" is_fixed_read_only: true bug: "369487976" +} + +flag { + name: "avoid_note_op_at_enqueue" + namespace: "backstage_power" + description: "Avoid triggering noteOp while enqueueing a broadcast" + is_fixed_read_only: true + bug: "268016162" + metadata { + purpose: PURPOSE_BUGFIX + } }
\ No newline at end of file diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index 964b97c7bbfd..551202c20cbb 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -1051,7 +1051,9 @@ final class LocalDisplayAdapter extends DisplayAdapter { void handleHdrSdrNitsChanged(float displayNits, float sdrNits) { final float newHdrSdrRatio; - if (displayNits != INVALID_NITS && sdrNits != INVALID_NITS) { + if (displayNits != INVALID_NITS && sdrNits != INVALID_NITS + && (mBacklightAdapter.mUseSurfaceControlBrightness || + mBacklightAdapter.mForceSurfaceControl)) { // Ensure the ratio stays >= 1.0f as values below that are nonsensical newHdrSdrRatio = Math.max(1.f, displayNits / sdrNits); } else { diff --git a/services/core/java/com/android/server/display/color/OWNERS b/services/core/java/com/android/server/display/color/OWNERS index 27adf127d880..8f5a9a0c10eb 100644 --- a/services/core/java/com/android/server/display/color/OWNERS +++ b/services/core/java/com/android/server/display/color/OWNERS @@ -1,4 +1,3 @@ christyfranks@google.com -justinklaassen@google.com -per-file DisplayTransformManager.java=michaelwr@google.com
\ No newline at end of file +per-file DisplayTransformManager.java=michaelwr@google.com diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java index 6157402279a9..69a2a1c4e453 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java @@ -197,6 +197,8 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { boolean wasActiveSource = isActiveSource(); super.setActiveSource(logicalAddress, physicalAddress, caller); if (wasActiveSource && !isActiveSource()) { + // Prevent focus stealing when losing active source. + removeAction(ActiveSourceAction.class); onActiveSourceLost(); } } diff --git a/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java b/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java index 4f3aa065b89b..280f3b75c06e 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java @@ -120,12 +120,21 @@ final class InputMethodBindingController { * Binding flags for establishing connection to the {@link InputMethodService}. */ @VisibleForTesting - static final int IME_CONNECTION_BIND_FLAGS = - Context.BIND_AUTO_CREATE + static final int IME_CONNECTION_BIND_FLAGS; + static { + if (android.view.inputmethod.Flags.lowerImeOomImportance()) { + IME_CONNECTION_BIND_FLAGS = Context.BIND_AUTO_CREATE + | Context.BIND_ALMOST_PERCEPTIBLE + | Context.BIND_IMPORTANT_BACKGROUND + | Context.BIND_SCHEDULE_LIKE_TOP_APP; + } else { + IME_CONNECTION_BIND_FLAGS = Context.BIND_AUTO_CREATE | Context.BIND_NOT_VISIBLE | Context.BIND_NOT_FOREGROUND | Context.BIND_IMPORTANT_BACKGROUND | Context.BIND_SCHEDULE_LIKE_TOP_APP; + } + } private final int mImeConnectionBindFlags; diff --git a/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java b/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java index 7a96195528d5..993704988d86 100644 --- a/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java +++ b/services/core/java/com/android/server/net/watchlist/WatchlistReportDbHelper.java @@ -21,6 +21,7 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabaseCorruptException; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.os.Environment; @@ -204,6 +205,11 @@ class WatchlistReportDbHelper extends SQLiteOpenHelper { return false; } final String clause = WhiteListReportContract.TIMESTAMP + "< " + untilTimestamp; - return db.delete(WhiteListReportContract.TABLE, clause, null) != 0; + try { + return db.delete(WhiteListReportContract.TABLE, clause, null) != 0; + } catch (SQLiteDatabaseCorruptException e) { + Slog.e(TAG, "Error deleting records", e); + return false; + } } } diff --git a/services/core/java/com/android/server/notification/ConditionProviders.java b/services/core/java/com/android/server/notification/ConditionProviders.java index 3f2c2228e453..dd52cce9e927 100644 --- a/services/core/java/com/android/server/notification/ConditionProviders.java +++ b/services/core/java/com/android/server/notification/ConditionProviders.java @@ -46,6 +46,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public class ConditionProviders extends ManagedServices { @@ -202,7 +203,14 @@ public class ConditionProviders extends ManagedServices { @Override protected void loadDefaultsFromConfig() { - String defaultDndAccess = mContext.getResources().getString( + for (String dndPackage : getDefaultDndAccessPackages(mContext)) { + addDefaultComponentOrPackage(dndPackage); + } + } + + static List<String> getDefaultDndAccessPackages(Context context) { + ArrayList<String> packages = new ArrayList<>(); + String defaultDndAccess = context.getResources().getString( R.string.config_defaultDndAccessPackages); if (defaultDndAccess != null) { String[] dnds = defaultDndAccess.split(ManagedServices.ENABLED_SERVICES_SEPARATOR); @@ -210,9 +218,10 @@ public class ConditionProviders extends ManagedServices { if (TextUtils.isEmpty(dnds[i])) { continue; } - addDefaultComponentOrPackage(dnds[i]); + packages.add(dnds[i]); } } + return packages; } @Override diff --git a/services/core/java/com/android/server/notification/ZenConfigTrimmer.java b/services/core/java/com/android/server/notification/ZenConfigTrimmer.java new file mode 100644 index 000000000000..d65954d11646 --- /dev/null +++ b/services/core/java/com/android/server/notification/ZenConfigTrimmer.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.notification; + +import android.content.Context; +import android.os.Parcel; +import android.service.notification.SystemZenRules; +import android.service.notification.ZenModeConfig; +import android.util.Slog; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +class ZenConfigTrimmer { + + private static final String TAG = "ZenConfigTrimmer"; + private static final int MAXIMUM_PARCELED_SIZE = 150_000; // bytes + + private final HashSet<String> mTrustedPackages; + + ZenConfigTrimmer(Context context) { + mTrustedPackages = new HashSet<>(); + mTrustedPackages.add(SystemZenRules.PACKAGE_ANDROID); + mTrustedPackages.addAll(ConditionProviders.getDefaultDndAccessPackages(context)); + } + + void trimToMaximumSize(ZenModeConfig config) { + Map<String, PackageRules> rulesPerPackage = new HashMap<>(); + for (ZenModeConfig.ZenRule rule : config.automaticRules.values()) { + PackageRules pkgRules = rulesPerPackage.computeIfAbsent(rule.pkg, PackageRules::new); + pkgRules.mRules.add(rule); + } + + int totalSize = 0; + for (PackageRules pkgRules : rulesPerPackage.values()) { + totalSize += pkgRules.dataSize(); + } + + if (totalSize > MAXIMUM_PARCELED_SIZE) { + List<PackageRules> deletionCandidates = new ArrayList<>(); + for (PackageRules pkgRules : rulesPerPackage.values()) { + if (!mTrustedPackages.contains(pkgRules.mPkg)) { + deletionCandidates.add(pkgRules); + } + } + deletionCandidates.sort(Comparator.comparingInt(PackageRules::dataSize).reversed()); + + evictPackagesFromConfig(config, deletionCandidates, totalSize); + } + } + + private static void evictPackagesFromConfig(ZenModeConfig config, + List<PackageRules> deletionCandidates, int currentSize) { + while (currentSize > MAXIMUM_PARCELED_SIZE && !deletionCandidates.isEmpty()) { + PackageRules rulesToDelete = deletionCandidates.removeFirst(); + Slog.w(TAG, String.format("Evicting %s zen rules from package '%s' (%s bytes)", + rulesToDelete.mRules.size(), rulesToDelete.mPkg, rulesToDelete.dataSize())); + + for (ZenModeConfig.ZenRule rule : rulesToDelete.mRules) { + config.automaticRules.remove(rule.id); + } + + currentSize -= rulesToDelete.dataSize(); + } + } + + private static class PackageRules { + private final String mPkg; + private final List<ZenModeConfig.ZenRule> mRules; + private int mParceledSize = -1; + + PackageRules(String pkg) { + mPkg = pkg; + mRules = new ArrayList<>(); + } + + private int dataSize() { + if (mParceledSize >= 0) { + return mParceledSize; + } + Parcel parcel = Parcel.obtain(); + try { + parcel.writeParcelableList(mRules, 0); + mParceledSize = parcel.dataSize(); + return mParceledSize; + } finally { + parcel.recycle(); + } + } + } +} diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 889df512dd60..8b09c2acb96a 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -48,6 +48,7 @@ import static android.service.notification.ZenModeConfig.isImplicitRuleId; import static com.android.internal.util.FrameworkStatsLog.DND_MODE_RULE; import static com.android.internal.util.Preconditions.checkArgument; import static com.android.server.notification.Flags.preventZenDeviceEffectsWhileDriving; +import static com.android.server.notification.Flags.limitZenConfigSize; import static java.util.Objects.requireNonNull; @@ -192,6 +193,7 @@ public class ZenModeHelper { private final ConditionProviders.Config mServiceConfig; private final SystemUiSystemPropertiesFlags.FlagResolver mFlagResolver; private final ZenModeEventLogger mZenModeEventLogger; + private final ZenConfigTrimmer mConfigTrimmer; @VisibleForTesting protected int mZenMode; @VisibleForTesting protected NotificationManager.Policy mConsolidatedPolicy; @@ -226,6 +228,7 @@ public class ZenModeHelper { mClock = clock; addCallback(mMetrics); mAppOps = context.getSystemService(AppOpsManager.class); + mConfigTrimmer = new ZenConfigTrimmer(mContext); mDefaultConfig = Flags.modesUi() ? ZenModeConfig.getDefaultConfig() @@ -2061,20 +2064,20 @@ public class ZenModeHelper { Log.w(TAG, "Invalid config in setConfigLocked; " + config); return false; } + if (limitZenConfigSize() && (origin == ORIGIN_APP || origin == ORIGIN_USER_IN_APP)) { + mConfigTrimmer.trimToMaximumSize(config); + } + if (config.user != mUser) { // simply store away for background users - synchronized (mConfigLock) { - mConfigs.put(config.user, config); - } + mConfigs.put(config.user, config); if (DEBUG) Log.d(TAG, "setConfigLocked: store config for user " + config.user); return true; } // handle CPS backed conditions - danger! may modify config mConditions.evaluateConfig(config, null, false /*processSubscriptions*/); - synchronized (mConfigLock) { - mConfigs.put(config.user, config); - } + mConfigs.put(config.user, config); if (DEBUG) Log.d(TAG, "setConfigLocked reason=" + reason, new Throwable()); ZenLog.traceConfig(origin, reason, triggeringComponent, mConfig, config, callingUid); diff --git a/services/core/java/com/android/server/notification/flags.aconfig b/services/core/java/com/android/server/notification/flags.aconfig index 76cd5c88b388..346d65a06cc9 100644 --- a/services/core/java/com/android/server/notification/flags.aconfig +++ b/services/core/java/com/android/server/notification/flags.aconfig @@ -212,6 +212,16 @@ flag { } flag { + name: "limit_zen_config_size" + namespace: "systemui" + description: "Enforce a maximum (serialized) size for the Zen configuration" + bug: "387498139" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "managed_services_concurrent_multiuser" namespace: "systemui" description: "Enables ManagedServices to support Concurrent multi user environment" diff --git a/services/core/java/com/android/server/om/OverlayManagerSettings.java b/services/core/java/com/android/server/om/OverlayManagerSettings.java index 1ac971104486..395d2e107d87 100644 --- a/services/core/java/com/android/server/om/OverlayManagerSettings.java +++ b/services/core/java/com/android/server/om/OverlayManagerSettings.java @@ -545,8 +545,8 @@ final class OverlayManagerSettings { throw new XmlPullParserException("old version " + oldVersion + "; ignoring"); case 3: case 4: - // Upgrading from version 3 to 5 is not a breaking change so do not ignore the - // overlay file. + // Upgrading from versions 3 and 4 is not a breaking change, so do not + // ignore the overlay file. return; default: throw new XmlPullParserException("unrecognized version " + oldVersion); diff --git a/services/core/java/com/android/server/pm/OWNERS b/services/core/java/com/android/server/pm/OWNERS index 62b89f3252e6..f98ec04f84d8 100644 --- a/services/core/java/com/android/server/pm/OWNERS +++ b/services/core/java/com/android/server/pm/OWNERS @@ -1,7 +1,6 @@ hackbod@android.com hackbod@google.com jsharkey@android.com -jsharkey@google.com narayan@google.com include /PACKAGE_MANAGER_OWNERS diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 5a6d7a245f56..93837b34f7b3 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -2621,20 +2621,22 @@ public class UserManagerService extends IUserManager.Stub { * Valid user is the current user or the system or in the same profile group as the current * user. Visible background users are not valid calling users. */ - public static void enforceCurrentUserIfVisibleBackgroundEnabled(@UserIdInt int currentUserId) { + public static void enforceCurrentUserIfVisibleBackgroundEnabled() { if (!UserManager.isVisibleBackgroundUsersEnabled()) { return; } final int callingUserId = UserHandle.getCallingUserId(); - if (DBG) { - Slog.d(LOG_TAG, "enforceValidCallingUser: callingUserId=" + callingUserId - + " isSystemUser=" + (callingUserId == USER_SYSTEM) - + " currentUserId=" + currentUserId - + " callingPid=" + Binder.getCallingPid() - + " callingUid=" + Binder.getCallingUid()); - } final long ident = Binder.clearCallingIdentity(); try { + final int currentUserId = ActivityManager.getCurrentUser(); + if (DBG) { + Slog.d(LOG_TAG, "enforceCurrentUserIfVisibleBackgroundEnabled:" + + " callingUserId=" + callingUserId + + " isSystemUser=" + (callingUserId == USER_SYSTEM) + + " currentUserId=" + currentUserId + + " callingPid=" + Binder.getCallingPid() + + " callingUid=" + Binder.getCallingUid()); + } if (callingUserId != USER_SYSTEM && callingUserId != currentUserId && !UserManagerService.getInstance() .isSameProfileGroup(callingUserId, currentUserId)) { diff --git a/services/core/java/com/android/server/pm/dex/OWNERS b/services/core/java/com/android/server/pm/dex/OWNERS index 5ca8ddd1fe17..70af4e7d36b2 100644 --- a/services/core/java/com/android/server/pm/dex/OWNERS +++ b/services/core/java/com/android/server/pm/dex/OWNERS @@ -1,4 +1,3 @@ -alanstokes@google.com jiakaiz@google.com ngeoffray@google.com mast@google.com diff --git a/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java b/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java index adf308a522ed..5563f98e8842 100644 --- a/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java +++ b/services/core/java/com/android/server/power/stats/BatteryHistoryDirectory.java @@ -143,6 +143,7 @@ public class BatteryHistoryDirectory implements BatteryStatsHistory.BatteryHisto /** * Returns the maximum storage size allocated to battery history. */ + @Override public int getMaxHistorySize() { return mMaxHistorySize; } @@ -250,6 +251,10 @@ public class BatteryHistoryDirectory implements BatteryStatsHistory.BatteryHisto try (FileInputStream stream = file.openRead()) { byte[] header = new byte[FILE_FORMAT_BYTES]; if (stream.read(header, 0, FILE_FORMAT_BYTES) == -1) { + if (file.getBaseFile().length() == 0) { + return new byte[0]; + } + Slog.e(TAG, "Invalid battery history file format " + file.getBaseFile()); deleteFragment(fragment); return null; diff --git a/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java b/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java index 53894a196d24..f2bbdfcdae6b 100644 --- a/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java +++ b/services/core/java/com/android/server/power/stats/processor/AggregatedPowerStats.java @@ -120,16 +120,18 @@ class AggregatedPowerStats { * {@link com.android.internal.os.MonotonicClock} * @param currentTime current time in milliseconds, see {@link System#currentTimeMillis()} */ - void addClockUpdate(long monotonicTime, @CurrentTimeMillisLong long currentTime) { + boolean addClockUpdate(long monotonicTime, @CurrentTimeMillisLong long currentTime) { ClockUpdate clockUpdate = new ClockUpdate(); clockUpdate.monotonicTime = monotonicTime; clockUpdate.currentTime = currentTime; if (mClockUpdates.size() < MAX_CLOCK_UPDATES) { mClockUpdates.add(clockUpdate); + return true; } else { Slog.i(TAG, "Too many clock updates. Replacing the previous update with " + DateFormat.format("yyyy-MM-dd-HH-mm-ss", currentTime)); mClockUpdates.set(mClockUpdates.size() - 1, clockUpdate); + return false; } } diff --git a/services/core/java/com/android/server/power/stats/processor/PowerStatsAggregator.java b/services/core/java/com/android/server/power/stats/processor/PowerStatsAggregator.java index 8461a5442bd0..b9862aabb202 100644 --- a/services/core/java/com/android/server/power/stats/processor/PowerStatsAggregator.java +++ b/services/core/java/com/android/server/power/stats/processor/PowerStatsAggregator.java @@ -98,14 +98,18 @@ public class PowerStatsAggregator { if (!startedSession) { mStats.start(item.time); - mStats.addClockUpdate(item.time, item.currentTime); + if (!mStats.addClockUpdate(item.time, item.currentTime)) { + break; + } if (baseTime == UNINITIALIZED) { baseTime = item.time; } startedSession = true; } else if (item.cmd == BatteryStats.HistoryItem.CMD_CURRENT_TIME || item.cmd == BatteryStats.HistoryItem.CMD_RESET) { - mStats.addClockUpdate(item.time, item.currentTime); + if (!mStats.addClockUpdate(item.time, item.currentTime)) { + break; + } } lastTime = item.time; @@ -164,7 +168,9 @@ public class PowerStatsAggregator { consumer.accept(mStats); } mStats.reset(); - mStats.addClockUpdate(item.time, item.currentTime); + if (!mStats.addClockUpdate(item.time, item.currentTime)) { + break; + } baseTime = lastTime = item.time; } mStats.addPowerStats(item.powerStats, item.time); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java index fab19b6b8201..1afbb34c5f09 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java @@ -160,8 +160,10 @@ public interface StatusBarManagerInternal { * @param displayId The changed display Id. * @param rootDisplayAreaId The changed display area Id. * @param isImmersiveMode {@code true} if the display area get into immersive mode. + * @param windowType The window type of the controlling window. */ - void immersiveModeChanged(int displayId, int rootDisplayAreaId, boolean isImmersiveMode); + void immersiveModeChanged(int displayId, int rootDisplayAreaId, boolean isImmersiveMode, + int windowType); /** * Show a rotation suggestion that a user may approve to rotate the screen. diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index da9d01675984..798c794edaf5 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -732,7 +732,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D @Override public void immersiveModeChanged(int displayId, int rootDisplayAreaId, - boolean isImmersiveMode) { + boolean isImmersiveMode, int windowType) { if (mBar == null) { return; } @@ -746,7 +746,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D if (!CLIENT_TRANSIENT) { // Only call from here when the client transient is not enabled. try { - mBar.immersiveModeChanged(rootDisplayAreaId, isImmersiveMode); + mBar.immersiveModeChanged(rootDisplayAreaId, isImmersiveMode, windowType); } catch (RemoteException ex) { } } diff --git a/services/core/java/com/android/server/storage/WatchedVolumeInfo.java b/services/core/java/com/android/server/storage/WatchedVolumeInfo.java index 94e52cd1033a..d4b20fb9bcfc 100644 --- a/services/core/java/com/android/server/storage/WatchedVolumeInfo.java +++ b/services/core/java/com/android/server/storage/WatchedVolumeInfo.java @@ -68,6 +68,10 @@ public class WatchedVolumeInfo extends WatchableImpl { return ImmutableVolumeInfo.fromVolumeInfo(mVolumeInfo); } + public ImmutableVolumeInfo getClonedImmutableVolumeInfo() { + return ImmutableVolumeInfo.fromVolumeInfo(mVolumeInfo.clone()); + } + public StorageVolume buildStorageVolume(Context context, int userId, boolean reportUnmounted) { return mVolumeInfo.buildStorageVolume(context, userId, reportUnmounted); } diff --git a/services/core/java/com/android/server/uri/OWNERS b/services/core/java/com/android/server/uri/OWNERS index cdc07ed7c67a..6599db7936c0 100644 --- a/services/core/java/com/android/server/uri/OWNERS +++ b/services/core/java/com/android/server/uri/OWNERS @@ -1,3 +1,2 @@ jsharkey@android.com -jsharkey@google.com varunshah@google.com diff --git a/services/core/java/com/android/server/vibrator/VendorVibrationSession.java b/services/core/java/com/android/server/vibrator/VendorVibrationSession.java index bda3d442956b..621a128a736e 100644 --- a/services/core/java/com/android/server/vibrator/VendorVibrationSession.java +++ b/services/core/java/com/android/server/vibrator/VendorVibrationSession.java @@ -51,6 +51,7 @@ import java.util.NoSuchElementException; final class VendorVibrationSession extends IVibrationSession.Stub implements VibrationSession, CancellationSignal.OnCancelListener, IBinder.DeathRecipient { private static final String TAG = "VendorVibrationSession"; + private static final boolean DEBUG = false; /** Calls into VibratorManager functionality needed for playing an {@link ExternalVibration}. */ interface VibratorManagerHooks { @@ -73,8 +74,8 @@ final class VendorVibrationSession extends IVibrationSession.Stub private final ICancellationSignal mCancellationSignal = CancellationSignal.createTransport(); private final int[] mVibratorIds; private final long mCreateUptime; - private final long mCreateTime; // for debugging - private final IVibrationSessionCallback mCallback; + private final long mCreateTime; + private final VendorCallbackWrapper mCallback; private final CallerInfo mCallerInfo; private final VibratorManagerHooks mManagerHooks; private final DeviceAdapter mDeviceAdapter; @@ -88,11 +89,11 @@ final class VendorVibrationSession extends IVibrationSession.Stub @GuardedBy("mLock") private boolean mEndedByVendor; @GuardedBy("mLock") - private long mStartTime; // for debugging + private long mStartTime; @GuardedBy("mLock") private long mEndUptime; @GuardedBy("mLock") - private long mEndTime; // for debugging + private long mEndTime; @GuardedBy("mLock") private VibrationStepConductor mConductor; @@ -103,7 +104,7 @@ final class VendorVibrationSession extends IVibrationSession.Stub mCreateTime = System.currentTimeMillis(); mVibratorIds = deviceAdapter.getAvailableVibratorIds(); mHandler = handler; - mCallback = callback; + mCallback = new VendorCallbackWrapper(callback, handler); mCallerInfo = callerInfo; mManagerHooks = managerHooks; mDeviceAdapter = deviceAdapter; @@ -119,7 +120,9 @@ final class VendorVibrationSession extends IVibrationSession.Stub @Override public void finishSession() { - Slog.d(TAG, "Session finish requested, ending vibration session..."); + if (DEBUG) { + Slog.d(TAG, "Session finish requested, ending vibration session..."); + } // Do not abort session in HAL, wait for ongoing vibration requests to complete. // This might take a while to end the session, but it can be aborted by cancelSession. requestEndSession(Status.FINISHED, /* shouldAbort= */ false, /* isVendorRequest= */ true); @@ -127,7 +130,9 @@ final class VendorVibrationSession extends IVibrationSession.Stub @Override public void cancelSession() { - Slog.d(TAG, "Session cancel requested, aborting vibration session..."); + if (DEBUG) { + Slog.d(TAG, "Session cancel requested, aborting vibration session..."); + } // Always abort session in HAL while cancelling it. // This might be triggered after finishSession was already called. requestEndSession(Status.CANCELLED_BY_USER, /* shouldAbort= */ true, @@ -156,7 +161,7 @@ final class VendorVibrationSession extends IVibrationSession.Stub @Override public IBinder getCallerToken() { - return mCallback.asBinder(); + return mCallback.getBinderToken(); } @Override @@ -176,36 +181,30 @@ final class VendorVibrationSession extends IVibrationSession.Stub @Override public void onCancel() { - Slog.d(TAG, "Session cancellation signal received, aborting vibration session..."); + if (DEBUG) { + Slog.d(TAG, "Session cancellation signal received, aborting vibration session..."); + } requestEndSession(Status.CANCELLED_BY_USER, /* shouldAbort= */ true, /* isVendorRequest= */ true); } @Override public void binderDied() { - Slog.d(TAG, "Session binder died, aborting vibration session..."); + if (DEBUG) { + Slog.d(TAG, "Session binder died, aborting vibration session..."); + } requestEndSession(Status.CANCELLED_BINDER_DIED, /* shouldAbort= */ true, /* isVendorRequest= */ false); } @Override public boolean linkToDeath() { - try { - mCallback.asBinder().linkToDeath(this, 0); - } catch (RemoteException e) { - Slog.e(TAG, "Error linking session to token death", e); - return false; - } - return true; + return mCallback.linkToDeath(this); } @Override public void unlinkToDeath() { - try { - mCallback.asBinder().unlinkToDeath(this, 0); - } catch (NoSuchElementException e) { - Slog.wtf(TAG, "Failed to unlink session to token death", e); - } + mCallback.unlinkToDeath(this); } @Override @@ -219,26 +218,37 @@ final class VendorVibrationSession extends IVibrationSession.Stub @Override public void notifyVibratorCallback(int vibratorId, long vibrationId, long stepId) { - Slog.d(TAG, "Vibration callback received for vibration " + vibrationId + " step " + stepId - + " on vibrator " + vibratorId + ", ignoring..."); + if (DEBUG) { + Slog.d(TAG, "Vibration callback received for vibration " + vibrationId + + " step " + stepId + " on vibrator " + vibratorId + ", ignoring..."); + } } @Override public void notifySyncedVibratorsCallback(long vibrationId) { - Slog.d(TAG, "Synced vibration callback received for vibration " + vibrationId - + ", ignoring..."); + if (DEBUG) { + Slog.d(TAG, "Synced vibration callback received for vibration " + vibrationId + + ", ignoring..."); + } } @Override public void notifySessionCallback() { - Slog.d(TAG, "Session callback received, ending vibration session..."); + if (DEBUG) { + Slog.d(TAG, "Session callback received, ending vibration session..."); + } synchronized (mLock) { // If end was not requested then the HAL has cancelled the session. - maybeSetEndRequestLocked(Status.CANCELLED_BY_UNKNOWN_REASON, + notifyEndRequestLocked(Status.CANCELLED_BY_UNKNOWN_REASON, /* isVendorRequest= */ false); maybeSetStatusToRequestedLocked(); clearVibrationConductor(); - mHandler.post(() -> mManagerHooks.onSessionReleased(mSessionId)); + final Status endStatus = mStatus; + mHandler.post(() -> { + mManagerHooks.onSessionReleased(mSessionId); + // Only trigger client callback after session is released in the manager. + mCallback.notifyFinished(endStatus); + }); } } @@ -271,7 +281,7 @@ final class VendorVibrationSession extends IVibrationSession.Stub public boolean isEnded() { synchronized (mLock) { - return mStatus != Status.RUNNING; + return mEndTime > 0; } } @@ -297,19 +307,17 @@ final class VendorVibrationSession extends IVibrationSession.Stub // Session already ended, skip start callbacks. isAlreadyEnded = true; } else { + if (DEBUG) { + Slog.d(TAG, "Session started at the HAL"); + } mStartTime = System.currentTimeMillis(); - // Run client callback in separate thread. - mHandler.post(() -> { - try { - mCallback.onStarted(this); - } catch (RemoteException e) { - Slog.e(TAG, "Error notifying vendor session started", e); - } - }); + mCallback.notifyStarted(this); } } if (isAlreadyEnded) { - Slog.d(TAG, "Session already ended after starting the HAL, aborting..."); + if (DEBUG) { + Slog.d(TAG, "Session already ended after starting the HAL, aborting..."); + } mHandler.post(() -> mManagerHooks.endSession(mSessionId, /* shouldAbort= */ true)); } } @@ -337,8 +345,10 @@ final class VendorVibrationSession extends IVibrationSession.Stub public boolean maybeSetVibrationConductor(VibrationStepConductor conductor) { synchronized (mLock) { if (mConductor != null) { - Slog.d(TAG, "Session still dispatching previous vibration, new vibration " - + conductor.getVibration().id + " ignored"); + if (DEBUG) { + Slog.d(TAG, "Session still dispatching previous vibration, new vibration " + + conductor.getVibration().id + " ignored"); + } return false; } mConductor = conductor; @@ -347,53 +357,45 @@ final class VendorVibrationSession extends IVibrationSession.Stub } private void requestEndSession(Status status, boolean shouldAbort, boolean isVendorRequest) { - Slog.d(TAG, "Session end request received with status " + status); - boolean shouldTriggerSessionHook = false; + if (DEBUG) { + Slog.d(TAG, "Session end request received with status " + status); + } synchronized (mLock) { - maybeSetEndRequestLocked(status, isVendorRequest); + notifyEndRequestLocked(status, isVendorRequest); if (!isEnded() && isStarted()) { // Trigger session hook even if it was already triggered, in case a second request // is aborting the ongoing/ending session. This might cause it to end right away. // Wait for HAL callback before setting the end status. - shouldTriggerSessionHook = true; + if (DEBUG) { + Slog.d(TAG, "Requesting HAL session end with abort=" + shouldAbort); + } + mHandler.post(() -> mManagerHooks.endSession(mSessionId, shouldAbort)); } else { - // Session not active in the HAL, set end status right away. + // Session not active in the HAL, try to set end status right away. maybeSetStatusToRequestedLocked(); + // Use status used to end this session, which might be different from requested. + mCallback.notifyFinished(mStatus); } } - if (shouldTriggerSessionHook) { - Slog.d(TAG, "Requesting HAL session end with abort=" + shouldAbort); - mHandler.post(() -> mManagerHooks.endSession(mSessionId, shouldAbort)); - } } @GuardedBy("mLock") - private void maybeSetEndRequestLocked(Status status, boolean isVendorRequest) { + private void notifyEndRequestLocked(Status status, boolean isVendorRequest) { if (mEndStatusRequest != null) { - // End already requested, keep first requested status and time. + // End already requested, keep first requested status. return; } - Slog.d(TAG, "Session end request accepted for status " + status); + if (DEBUG) { + Slog.d(TAG, "Session end request accepted for status " + status); + } mEndStatusRequest = status; mEndedByVendor = isVendorRequest; - mEndTime = System.currentTimeMillis(); - mEndUptime = SystemClock.uptimeMillis(); + mCallback.notifyFinishing(); if (mConductor != null) { // Vibration is being dispatched when session end was requested, cancel it. mConductor.notifyCancelled(new Vibration.EndInfo(status), /* immediate= */ status != Status.FINISHED); } - if (isStarted()) { - // Only trigger "finishing" callback if session started. - // Run client callback in separate thread. - mHandler.post(() -> { - try { - mCallback.onFinishing(); - } catch (RemoteException e) { - Slog.e(TAG, "Error notifying vendor session is finishing", e); - } - }); - } } @GuardedBy("mLock") @@ -406,40 +408,123 @@ final class VendorVibrationSession extends IVibrationSession.Stub // No end status was requested, nothing to set. return; } - Slog.d(TAG, "Session end request applied for status " + mEndStatusRequest); + if (DEBUG) { + Slog.d(TAG, "Session end request applied for status " + mEndStatusRequest); + } mStatus = mEndStatusRequest; - // Run client callback in separate thread. - final Status endStatus = mStatus; - mHandler.post(() -> { + mEndTime = System.currentTimeMillis(); + mEndUptime = SystemClock.uptimeMillis(); + } + + /** + * Wrapper class to handle client callbacks asynchronously. + * + * <p>This class is also responsible for link/unlink to the client process binder death, and for + * making sure the callbacks are only triggered once. The conversion between session status and + * the API status code is also defined here. + */ + private static final class VendorCallbackWrapper { + private final IVibrationSessionCallback mCallback; + private final Handler mHandler; + + private boolean mIsStarted; + private boolean mIsFinishing; + private boolean mIsFinished; + + VendorCallbackWrapper(@NonNull IVibrationSessionCallback callback, + @NonNull Handler handler) { + mCallback = callback; + mHandler = handler; + } + + synchronized IBinder getBinderToken() { + return mCallback.asBinder(); + } + + synchronized boolean linkToDeath(DeathRecipient recipient) { try { - mCallback.onFinished(toSessionStatus(endStatus)); + mCallback.asBinder().linkToDeath(recipient, 0); } catch (RemoteException e) { - Slog.e(TAG, "Error notifying vendor session finished", e); + Slog.e(TAG, "Error linking session to token death", e); + return false; + } + return true; + } + + synchronized void unlinkToDeath(DeathRecipient recipient) { + try { + mCallback.asBinder().unlinkToDeath(recipient, 0); + } catch (NoSuchElementException e) { + Slog.wtf(TAG, "Failed to unlink session to token death", e); + } + } + + synchronized void notifyStarted(IVibrationSession session) { + if (mIsStarted) { + return; + } + mIsStarted = true; + mHandler.post(() -> { + try { + mCallback.onStarted(session); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying vendor session started", e); + } + }); + } + + synchronized void notifyFinishing() { + if (!mIsStarted || mIsFinishing || mIsFinished) { + // Ignore if never started or if already finishing or finished. + return; } - }); - } - - @android.os.vibrator.VendorVibrationSession.Status - private static int toSessionStatus(Status status) { - // Exhaustive switch to cover all possible internal status. - return switch (status) { - case FINISHED - -> android.os.vibrator.VendorVibrationSession.STATUS_SUCCESS; - case IGNORED_UNSUPPORTED - -> STATUS_UNSUPPORTED; - case CANCELLED_BINDER_DIED, CANCELLED_BY_APP_OPS, CANCELLED_BY_USER, - CANCELLED_SUPERSEDED, CANCELLED_BY_FOREGROUND_USER, CANCELLED_BY_SCREEN_OFF, - CANCELLED_BY_SETTINGS_UPDATE, CANCELLED_BY_UNKNOWN_REASON - -> android.os.vibrator.VendorVibrationSession.STATUS_CANCELED; - case IGNORED_APP_OPS, IGNORED_BACKGROUND, IGNORED_FOR_EXTERNAL, IGNORED_FOR_ONGOING, - IGNORED_FOR_POWER, IGNORED_FOR_SETTINGS, IGNORED_FOR_HIGHER_IMPORTANCE, - IGNORED_FOR_RINGER_MODE, IGNORED_FROM_VIRTUAL_DEVICE, IGNORED_SUPERSEDED, - IGNORED_MISSING_PERMISSION, IGNORED_ON_WIRELESS_CHARGER - -> android.os.vibrator.VendorVibrationSession.STATUS_IGNORED; - case UNKNOWN, IGNORED_ERROR_APP_OPS, IGNORED_ERROR_CANCELLING, IGNORED_ERROR_SCHEDULING, - IGNORED_ERROR_TOKEN, FORWARDED_TO_INPUT_DEVICES, FINISHED_UNEXPECTED, RUNNING - -> android.os.vibrator.VendorVibrationSession.STATUS_UNKNOWN_ERROR; - }; + mIsFinishing = true; + mHandler.post(() -> { + try { + mCallback.onFinishing(); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying vendor session is finishing", e); + } + }); + } + + synchronized void notifyFinished(Status status) { + if (mIsFinished) { + return; + } + mIsFinished = true; + mHandler.post(() -> { + try { + mCallback.onFinished(toSessionStatus(status)); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying vendor session finished", e); + } + }); + } + + @android.os.vibrator.VendorVibrationSession.Status + private static int toSessionStatus(Status status) { + // Exhaustive switch to cover all possible internal status. + return switch (status) { + case FINISHED + -> android.os.vibrator.VendorVibrationSession.STATUS_SUCCESS; + case IGNORED_UNSUPPORTED + -> STATUS_UNSUPPORTED; + case CANCELLED_BINDER_DIED, CANCELLED_BY_APP_OPS, CANCELLED_BY_USER, + CANCELLED_SUPERSEDED, CANCELLED_BY_FOREGROUND_USER, CANCELLED_BY_SCREEN_OFF, + CANCELLED_BY_SETTINGS_UPDATE, CANCELLED_BY_UNKNOWN_REASON + -> android.os.vibrator.VendorVibrationSession.STATUS_CANCELED; + case IGNORED_APP_OPS, IGNORED_BACKGROUND, IGNORED_FOR_EXTERNAL, IGNORED_FOR_ONGOING, + IGNORED_FOR_POWER, IGNORED_FOR_SETTINGS, IGNORED_FOR_HIGHER_IMPORTANCE, + IGNORED_FOR_RINGER_MODE, IGNORED_FROM_VIRTUAL_DEVICE, IGNORED_SUPERSEDED, + IGNORED_MISSING_PERMISSION, IGNORED_ON_WIRELESS_CHARGER + -> android.os.vibrator.VendorVibrationSession.STATUS_IGNORED; + case UNKNOWN, IGNORED_ERROR_APP_OPS, IGNORED_ERROR_CANCELLING, + IGNORED_ERROR_SCHEDULING, IGNORED_ERROR_TOKEN, FORWARDED_TO_INPUT_DEVICES, + FINISHED_UNEXPECTED, RUNNING + -> android.os.vibrator.VendorVibrationSession.STATUS_UNKNOWN_ERROR; + }; + } } /** @@ -499,7 +584,7 @@ final class VendorVibrationSession extends IVibrationSession.Stub @Override public void logMetrics(VibratorFrameworkStatsLogger statsLogger) { if (mStartTime > 0) { - // Only log sessions that have started. + // Only log sessions that have started in the HAL. statsLogger.logVibrationVendorSessionStarted(mCallerInfo.uid); statsLogger.logVibrationVendorSessionVibrations(mCallerInfo.uid, mVibrations.size()); diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 124097938ff8..d452d76db18d 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2326,13 +2326,16 @@ final class ActivityRecord extends WindowToken { if (isActivityTypeHome()) { // The snapshot of home is only used once because it won't be updated while screen // is on (see {@link TaskSnapshotController#screenTurningOff}). - mWmService.mTaskSnapshotController.removeSnapshotCache(task.mTaskId); final Transition transition = mTransitionController.getCollectingTransition(); if (transition != null && (transition.getFlags() & WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_NO_ANIMATION) == 0) { + mWmService.mTaskSnapshotController.removeSnapshotCache(task.mTaskId); // Only use snapshot of home as starting window when unlocking directly. return false; } + // Add a reference before removing snapshot from cache. + snapshot.addReference(TaskSnapshot.REFERENCE_WRITE_TO_PARCEL); + mWmService.mTaskSnapshotController.removeSnapshotCache(task.mTaskId); } return createSnapshot(snapshot, typeParameter); } @@ -6002,12 +6005,6 @@ final class ActivityRecord extends WindowToken { setVisibility(false); switch (mState) { - case STOPPING: - case STOPPED: - // Reset the flag indicating that an app can enter picture-in-picture once the - // activity is hidden - supportsEnterPipOnTaskSwitch = false; - break; case RESUMED: case INITIALIZING: case PAUSING: diff --git a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java index 5eed54704f36..cb82f480d73b 100644 --- a/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java +++ b/services/core/java/com/android/server/wm/AppCompatCameraOverrides.java @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH; +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA; @@ -183,9 +184,10 @@ class AppCompatCameraOverrides { private boolean shouldEnableCameraCompatFreeformTreatmentForApp() { if (mCameraCompatAllowOrientationTreatmentOptProp != null) { + // OptProp is not-null iff the opt-out flag is on. return mCameraCompatAllowOrientationTreatmentOptProp .shouldEnableWithOptOutOverrideAndProperty(isChangeEnabled(mActivityRecord, - OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT)); + OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION)); } else { return isChangeEnabled(mActivityRecord, OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT); diff --git a/services/core/java/com/android/server/wm/ContentRecorder.java b/services/core/java/com/android/server/wm/ContentRecorder.java index d6ae65193121..c26acec19743 100644 --- a/services/core/java/com/android/server/wm/ContentRecorder.java +++ b/services/core/java/com/android/server/wm/ContentRecorder.java @@ -490,7 +490,7 @@ final class ContentRecorder implements WindowContainerListener { return null; } final Task taskToRecord = wc.asTask(); - if (taskToRecord == null) { + if (taskToRecord == null || !taskToRecord.isAttached()) { handleStartRecordingFailed(); ProtoLog.v(WM_DEBUG_CONTENT_RECORDING, "Content Recording: Unable to retrieve task to start recording for " diff --git a/services/core/java/com/android/server/wm/DesktopModeHelper.java b/services/core/java/com/android/server/wm/DesktopModeHelper.java index c2255d8d011a..dc42b32967e2 100644 --- a/services/core/java/com/android/server/wm/DesktopModeHelper.java +++ b/services/core/java/com/android/server/wm/DesktopModeHelper.java @@ -79,7 +79,7 @@ public final class DesktopModeHelper { } @VisibleForTesting - static boolean isDeviceEligibleForDesktopMode(@NonNull Context context) { + public static boolean isDeviceEligibleForDesktopMode(@NonNull Context context) { if (!shouldEnforceDeviceRestrictions()) { return true; } diff --git a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java index b6f74a08631e..a4eeb688162c 100644 --- a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java @@ -16,6 +16,10 @@ package com.android.server.wm; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; + import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.DesktopModeHelper.canEnterDesktopMode; @@ -23,10 +27,13 @@ import static com.android.server.wm.DesktopModeHelper.canEnterDesktopMode; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityOptions; +import android.app.WindowConfiguration; import android.content.Context; import android.content.pm.ActivityInfo; import android.util.Slog; +import android.window.DesktopModeFlags; +import com.android.internal.annotations.VisibleForTesting; import com.android.server.wm.LaunchParamsController.LaunchParamsModifier; /** * The class that defines default launch params for tasks in desktop mode @@ -74,6 +81,13 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier { appendLog("task null, skipping"); return RESULT_SKIP; } + + if (DesktopModeFlags.DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX.isTrue() + && !isEnteringDesktopMode(task, options, currentParams)) { + appendLog("not entering desktop mode, skipping"); + return RESULT_SKIP; + } + if (com.android.window.flags.Flags.fixLayoutExistingTask() && task.getCreatedByOrganizerTask() != null) { appendLog("has created-by-organizer-task, skipping"); @@ -122,6 +136,62 @@ class DesktopModeLaunchParamsModifier implements LaunchParamsModifier { return RESULT_CONTINUE; } + /** + * Returns true if a task is entering desktop mode, due to its windowing mode being freeform or + * if there exists other freeform tasks on the display. + */ + @VisibleForTesting + boolean isEnteringDesktopMode( + @NonNull Task task, + @Nullable ActivityOptions options, + @NonNull LaunchParamsController.LaunchParams currentParams) { + // As freeform tasks cannot exist outside of desktop mode, it is safe to assume if + // freeform tasks are visible we are in desktop mode and as a result any launching + // activity will also enter desktop mode. On this same relationship, we can also assume + // if there are not visible freeform tasks but a freeform activity is now launching, it + // will force the device into desktop mode. + return (task.getDisplayContent().getTopMostVisibleFreeformActivity() != null + && checkSourceWindowModesCompatible(task, options, currentParams)) + || isRequestingFreeformWindowMode(task, options, currentParams); + } + + private boolean isRequestingFreeformWindowMode( + @NonNull Task task, + @Nullable ActivityOptions options, + @NonNull LaunchParamsController.LaunchParams currentParams) { + return task.inFreeformWindowingMode() + || (options != null && options.getLaunchWindowingMode() == WINDOWING_MODE_FREEFORM) + || (currentParams.hasWindowingMode() + && currentParams.mWindowingMode == WINDOWING_MODE_FREEFORM); + } + + /** + * Returns true is all possible source window modes are compatible with desktop mode. + */ + private boolean checkSourceWindowModesCompatible( + @NonNull Task task, + @Nullable ActivityOptions options, + @NonNull LaunchParamsController.LaunchParams currentParams) { + return isCompatibleDesktopWindowingMode(task.getWindowingMode()) + && (options == null + || isCompatibleDesktopWindowingMode(options.getLaunchWindowingMode())) + && isCompatibleDesktopWindowingMode(currentParams.mWindowingMode); + } + + /** + * Returns true is the requesting window mode is one that can lead to the activity entering + * desktop. + */ + private boolean isCompatibleDesktopWindowingMode( + @WindowConfiguration.WindowingMode int windowingMode) { + return switch (windowingMode) { + case WINDOWING_MODE_UNDEFINED, + WINDOWING_MODE_FULLSCREEN, + WINDOWING_MODE_FREEFORM -> true; + default -> false; + }; + } + private void initLogBuilder(Task task, ActivityRecord activity) { if (DEBUG) { mLogBuilder = new StringBuilder( diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index a874ef6039f9..64c19ff70c9f 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -157,6 +157,7 @@ import static com.android.server.wm.utils.DisplayInfoOverrides.copyDisplayInfoFi import static com.android.server.wm.utils.RegionUtils.forEachRectReverse; import static com.android.server.wm.utils.RegionUtils.rectListToRegion; import static com.android.window.flags.Flags.enablePersistingDensityScaleForConnectedDisplays; +import static com.android.window.flags.Flags.enablePresentationForConnectedDisplays; import android.annotation.IntDef; import android.annotation.NonNull; @@ -3673,6 +3674,11 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp pw.println(); super.dump(pw, prefix, dumpAll); + pw.print(prefix); + if (mHasSetIgnoreOrientationRequest) { + pw.print("mHasSetIgnoreOrientationRequest=true "); + } + pw.print("ignoreOrientationRequest="); pw.println(getIgnoreOrientationRequest()); pw.print(prefix); pw.print("mLayoutSeq="); pw.println(mLayoutSeq); pw.print(" mCurrentFocus="); pw.println(mCurrentFocus); @@ -3835,13 +3841,18 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** * Looking for the focused window on this display if the top focused display hasn't been - * found yet (topFocusedDisplayId is INVALID_DISPLAY) or per-display focused was allowed. + * found yet (topFocusedDisplayId is INVALID_DISPLAY), per-display focused was allowed, or + * the display is presenting. The last one is needed to update system bar visibility in response + * to presentation visibility because per-display focus is needed to change system bar + * visibility, but the display shouldn't get global focus when a presentation gets shown. * * @param topFocusedDisplayId Id of the top focused display. * @return The focused window or null if there isn't any or no need to seek. */ WindowState findFocusedWindowIfNeeded(int topFocusedDisplayId) { - return (hasOwnFocus() || topFocusedDisplayId == INVALID_DISPLAY) + return (hasOwnFocus() || topFocusedDisplayId == INVALID_DISPLAY + || (enablePresentationForConnectedDisplays() + && mWmService.mPresentationController.isPresentationVisible(mDisplayId))) ? findFocusedWindow() : null; } @@ -6932,6 +6943,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp /** The actual requested visible inset types for this display */ private @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible(); + private @InsetsType int mAnimatingTypes = 0; + /** The component name of the top focused window on this display */ private ComponentName mTopFocusedComponentName = null; @@ -7069,6 +7082,18 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp } return 0; } + + @Override + public @InsetsType int getAnimatingTypes() { + return mAnimatingTypes; + } + + @Override + public void setAnimatingTypes(@InsetsType int animatingTypes) { + if (mAnimatingTypes != animatingTypes) { + mAnimatingTypes = animatingTypes; + } + } } MagnificationSpec getMagnificationSpec() { diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 4908df025dd1..ec5b503fbb9b 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -2564,7 +2564,7 @@ public class DisplayPolicy { final int rootDisplayAreaId = root == null ? FEATURE_UNDEFINED : root.mFeatureId; // TODO(b/277290737): Move this to the client side, instead of using a proxy. callStatusBarSafely(statusBar -> statusBar.immersiveModeChanged(getDisplayId(), - rootDisplayAreaId, isImmersiveMode)); + rootDisplayAreaId, isImmersiveMode, win.getWindowType())); } // Show transient bars for panic if needed. diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java index 1a90bcc9b143..9cf792d82f56 100644 --- a/services/core/java/com/android/server/wm/DisplayRotation.java +++ b/services/core/java/com/android/server/wm/DisplayRotation.java @@ -25,6 +25,7 @@ import static android.view.Display.TYPE_VIRTUAL; import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_ORIENTATION; +import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_ORIENTATION_CHANGE; import static com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs.LID_OPEN; import static com.android.server.wm.DisplayRotationProto.FIXED_TO_USER_ROTATION_MODE; import static com.android.server.wm.DisplayRotationProto.FROZEN_TO_USER_ROTATION; @@ -587,11 +588,6 @@ public class DisplayRotation { ActivityInfo.screenOrientationToString(lastOrientation), lastOrientation, Surface.rotationToString(oldRotation), oldRotation); - ProtoLog.v(WM_DEBUG_ORIENTATION, - "Display id=%d selected orientation %s (%d), got rotation %s (%d)", displayId, - ActivityInfo.screenOrientationToString(lastOrientation), lastOrientation, - Surface.rotationToString(rotation), rotation); - if (oldRotation == rotation) { // No change. return false; @@ -601,9 +597,11 @@ public class DisplayRotation { mDisplayRotationCoordinator.onDefaultDisplayRotationChanged(rotation); } - ProtoLog.v(WM_DEBUG_ORIENTATION, - "Display id=%d rotation changed to %d from %d, lastOrientation=%d", - displayId, rotation, oldRotation, lastOrientation); + ProtoLog.i(WM_DEBUG_ORIENTATION_CHANGE, "Display id=%d rotation changed to %d from %d," + + " lastOrientation=%d userRotationMode=%d userRotation=%d" + + " lastSensorRotation=%d", + displayId, rotation, oldRotation, lastOrientation, mUserRotationMode, mUserRotation, + mLastSensorRotation); mRotation = rotation; diff --git a/services/core/java/com/android/server/wm/InsetsControlTarget.java b/services/core/java/com/android/server/wm/InsetsControlTarget.java index cee49676eeae..6462a37ae33f 100644 --- a/services/core/java/com/android/server/wm/InsetsControlTarget.java +++ b/services/core/java/com/android/server/wm/InsetsControlTarget.java @@ -97,6 +97,20 @@ interface InsetsControlTarget extends InsetsTarget { @NonNull ImeTracker.Token statsToken) { } + /** + * @return {@link WindowInsets.Type.InsetsType}s which are currently animating (showing or + * hiding). + */ + default @InsetsType int getAnimatingTypes() { + return 0; + } + + /** + * @param animatingTypes the {@link InsetsType}s, that are currently animating + */ + default void setAnimatingTypes(@InsetsType int animatingTypes) { + } + /** Returns {@code target.getWindow()}, or null if {@code target} is {@code null}. */ static WindowState asWindowOrNull(InsetsControlTarget target) { return target != null ? target.getWindow() : null; diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java index 009d482ba316..28722141dcd3 100644 --- a/services/core/java/com/android/server/wm/InsetsPolicy.java +++ b/services/core/java/com/android/server/wm/InsetsPolicy.java @@ -790,8 +790,6 @@ class InsetsPolicy { private final Handler mHandler; private final String mName; - private boolean mInsetsAnimationRunning; - Host(Handler handler, String name) { mHandler = handler; mName = name; @@ -901,10 +899,5 @@ class InsetsPolicy { public IBinder getWindowToken() { return null; } - - @Override - public void notifyAnimationRunningStateChanged(boolean running) { - mInsetsAnimationRunning = running; - } } } diff --git a/services/core/java/com/android/server/wm/InsetsStateController.java b/services/core/java/com/android/server/wm/InsetsStateController.java index 164abab992d8..5e0395f70e65 100644 --- a/services/core/java/com/android/server/wm/InsetsStateController.java +++ b/services/core/java/com/android/server/wm/InsetsStateController.java @@ -225,13 +225,16 @@ class InsetsStateController { for (int i = mProviders.size() - 1; i >= 0; i--) { final InsetsSourceProvider provider = mProviders.valueAt(i); final @InsetsType int type = provider.getSource().getType(); + final boolean isImeProvider = type == WindowInsets.Type.ime(); if ((type & changedTypes) != 0) { - final boolean isImeProvider = type == WindowInsets.Type.ime(); changed |= provider.updateClientVisibility( - caller, isImeProvider ? statsToken : null) + caller, isImeProvider ? statsToken : null) // Fake control target cannot change the client visibility, but it should // change the insets with its newly requested visibility. || (caller == provider.getFakeControlTarget()); + } else if (isImeProvider && android.view.inputmethod.Flags.refactorInsetsController()) { + ImeTracker.forLogging().onCancelled(statsToken, + ImeTracker.PHASE_WM_SET_REMOTE_TARGET_IME_VISIBILITY); } } if (changed) { diff --git a/services/core/java/com/android/server/wm/OWNERS b/services/core/java/com/android/server/wm/OWNERS index dede7676a4b6..243a5326b545 100644 --- a/services/core/java/com/android/server/wm/OWNERS +++ b/services/core/java/com/android/server/wm/OWNERS @@ -3,7 +3,6 @@ set noparent ogunwale@google.com jjaggi@google.com racarr@google.com -chaviw@google.com vishnun@google.com akulian@google.com roosa@google.com diff --git a/services/core/java/com/android/server/wm/PresentationController.java b/services/core/java/com/android/server/wm/PresentationController.java index 913f0b9a981d..acc658bf635e 100644 --- a/services/core/java/com/android/server/wm/PresentationController.java +++ b/services/core/java/com/android/server/wm/PresentationController.java @@ -80,7 +80,7 @@ class PresentationController implements DisplayManager.DisplayListener { return mPresentations.contains(displayId); } - private boolean isPresentationVisible(int displayId) { + boolean isPresentationVisible(int displayId) { final Presentation presentation = mPresentations.get(displayId); return presentation != null && presentation.mWin.mToken.isVisibleRequested(); } diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java index 8d198b26f396..3ed16db7e204 100644 --- a/services/core/java/com/android/server/wm/Session.java +++ b/services/core/java/com/android/server/wm/Session.java @@ -737,6 +737,17 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient { } } + @Override + public void updateAnimatingTypes(IWindow window, @InsetsType int animatingTypes) { + synchronized (mService.mGlobalLock) { + final WindowState win = mService.windowForClientLocked(this, window, + false /* throwOnError */); + if (win != null) { + win.setAnimatingTypes(animatingTypes); + } + } + } + void onWindowAdded(WindowState w) { if (mPackageName == null) { mPackageName = mProcess.mInfo.packageName; @@ -1015,15 +1026,4 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient { } } } - - @Override - public void notifyInsetsAnimationRunningStateChanged(IWindow window, boolean running) { - synchronized (mService.mGlobalLock) { - final WindowState win = mService.windowForClientLocked(this, window, - false /* throwOnError */); - if (win != null) { - win.notifyInsetsAnimationRunningStateChanged(running); - } - } - } } diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index a8c67f8c953d..f95698a5b0bd 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -2062,6 +2062,7 @@ class TaskFragment extends WindowContainer<WindowContainer> { if (prev != null) { prev.setWillCloseOrEnterPip(false); + prev.supportsEnterPipOnTaskSwitch = false; final boolean wasStopping = prev.isState(STOPPING); prev.setState(PAUSED, "completePausedLocked"); mPausingActivity = null; diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index 78c6f9024657..3db1d50f3d6a 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -3638,11 +3638,6 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { } final boolean nowVisible = wc.isVisibleRequested(); if (nowVisible == mVisible) { - if (mRestoringTransientHide) { - // The requested visibility has not changed for transient-hide containers, but - // we are restoring them so we should considering them moving to front again - return TRANSIT_TO_FRONT; - } return TRANSIT_CHANGE; } if (mExistenceChanged) { diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index d0d2067ac4bc..1c3510d1b43f 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -2007,6 +2007,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< return getActivity(r -> !r.finishing, true /* traverseTopToBottom */); } + ActivityRecord getTopMostVisibleFreeformActivity() { + return getActivity(r -> r.isVisibleRequested() && r.inFreeformWindowingMode(), + true /* traverseTopToBottom */); + } + ActivityRecord getTopActivity(boolean includeFinishing, boolean includeOverlays) { // Break down into 4 calls to avoid object creation due to capturing input params. if (includeFinishing) { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 2e699cab0587..28f2825150c2 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4773,6 +4773,26 @@ public class WindowManagerService extends IWindowManager.Stub } } + @EnforcePermission(android.Manifest.permission.MANAGE_APP_TOKENS) + @Override + public void updateDisplayWindowAnimatingTypes(int displayId, @InsetsType int animatingTypes) { + updateDisplayWindowAnimatingTypes_enforcePermission(); + if (android.view.inputmethod.Flags.reportAnimatingInsetsTypes()) { + final long origId = Binder.clearCallingIdentity(); + try { + synchronized (mGlobalLock) { + final DisplayContent dc = mRoot.getDisplayContent(displayId); + if (dc == null || dc.mRemoteInsetsControlTarget == null) { + return; + } + dc.mRemoteInsetsControlTarget.setAnimatingTypes(animatingTypes); + } + } finally { + Binder.restoreCallingIdentity(origId); + } + } + } + @Override public int watchRotation(IRotationWatcher watcher, int displayId) { final DisplayContent displayContent; diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 345aca8f6a5c..3b7d31274326 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -736,6 +736,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP private @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible(); + private @InsetsType int mAnimatingTypes = 0; + /** * Freeze the insets state in some cases that not necessarily keeps up-to-date to the client. * (e.g app exiting transition) @@ -842,6 +844,27 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mRequestedVisibleTypes & ~mask | requestedVisibleTypes & mask); } + @Override + public @InsetsType int getAnimatingTypes() { + return mAnimatingTypes; + } + + @Override + public void setAnimatingTypes(@InsetsType int animatingTypes) { + if (mAnimatingTypes != animatingTypes) { + if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) { + Trace.instant(TRACE_TAG_WINDOW_MANAGER, + TextUtils.formatSimple("%s: setAnimatingTypes(%s)", + getName(), + animatingTypes)); + } + mInsetsAnimationRunning = animatingTypes != 0; + mWmService.scheduleAnimationLocked(); + + mAnimatingTypes = animatingTypes; + } + } + /** * Set a freeze state for the window to ignore dispatching its insets state to the client. * @@ -2655,7 +2678,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // The client gave us a touchable region and so first // we calculate the untouchable region, then punch that out of our // expanded modal region. - mTmpRegion.set(0, 0, frame.right, frame.bottom); + mTmpRegion.set(0, 0, frame.width(), frame.height()); mTmpRegion.op(mGivenTouchableRegion, Region.Op.DIFFERENCE); region.op(mTmpRegion, Region.Op.DIFFERENCE); } @@ -6078,17 +6101,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mWmService.scheduleAnimationLocked(); } - void notifyInsetsAnimationRunningStateChanged(boolean running) { - if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) { - Trace.instant(TRACE_TAG_WINDOW_MANAGER, - TextUtils.formatSimple("%s: notifyInsetsAnimationRunningStateChanged(%s)", - getName(), - Boolean.toString(running))); - } - mInsetsAnimationRunning = running; - mWmService.scheduleAnimationLocked(); - } - boolean isInsetsAnimationRunning() { return mInsetsAnimationRunning; } diff --git a/services/core/jni/stats/OWNERS b/services/core/jni/stats/OWNERS index 2611e5b6cee2..ab2d91adaeab 100644 --- a/services/core/jni/stats/OWNERS +++ b/services/core/jni/stats/OWNERS @@ -5,4 +5,3 @@ sharaieko@google.com singhtejinder@google.com tsaichristine@google.com yaochen@google.com -yro@google.com diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index e158310455ac..860b6fb1dcd1 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -1814,7 +1814,7 @@ public final class SystemServer implements Dumpable { t.traceEnd(); } - if (!isWatch && !isTv && !isAutomotive + if (!isWatch && !isTv && !isAutomotive && !isDesktop && android.security.Flags.aapmApi()) { t.traceBegin("StartAdvancedProtectionService"); mSystemServiceManager.startService(AdvancedProtectionService.Lifecycle.class); diff --git a/services/musicrecognition/OWNERS b/services/musicrecognition/OWNERS index 037b04831260..820be004efd5 100644 --- a/services/musicrecognition/OWNERS +++ b/services/musicrecognition/OWNERS @@ -1,5 +1,4 @@ # Bug component: 830636 oni@google.com -volnov@google.com diff --git a/services/serial/OWNERS b/services/serial/OWNERS new file mode 100644 index 000000000000..89ce78ea6b34 --- /dev/null +++ b/services/serial/OWNERS @@ -0,0 +1 @@ +include /core/java/android/hardware/serial/OWNERS
\ No newline at end of file diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java index 5eb23a24908d..12866481b320 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/BaseBroadcastQueueTest.java @@ -16,29 +16,43 @@ package com.android.server.am; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import android.annotation.NonNull; +import android.app.Activity; +import android.app.ActivityManager; +import android.app.AppGlobals; +import android.app.AppOpsManager; +import android.app.BackgroundStartPrivileges; +import android.app.BroadcastOptions; +import android.app.SystemServiceRegistry; import android.app.usage.UsageStatsManagerInternal; import android.content.ComponentName; import android.content.Context; +import android.content.IIntentReceiver; +import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; +import android.content.pm.IPackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; +import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.TestLooperManager; import android.os.UserHandle; +import android.permission.IPermissionManager; +import android.permission.PermissionManager; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.platform.test.flag.junit.SetFlagsRule; @@ -47,7 +61,6 @@ import android.util.SparseArray; import androidx.test.platform.app.InstrumentationRegistry; -import com.android.dx.mockito.inline.extended.ExtendedMockito; import com.android.internal.util.FrameworkStatsLog; import com.android.modules.utils.testing.ExtendedMockitoRule; import com.android.server.AlarmManagerInternal; @@ -55,6 +68,7 @@ import com.android.server.DropBoxManagerInternal; import com.android.server.LocalServices; import com.android.server.appop.AppOpsService; import com.android.server.compat.PlatformCompat; +import com.android.server.firewall.IntentFirewall; import com.android.server.wm.ActivityTaskManagerService; import org.junit.Rule; @@ -63,8 +77,11 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.io.File; +import java.util.Collections; +import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiFunction; public abstract class BaseBroadcastQueueTest { @@ -97,6 +114,8 @@ public abstract class BaseBroadcastQueueTest { public final ExtendedMockitoRule mExtendedMockitoRule = new ExtendedMockitoRule.Builder(this) .spyStatic(FrameworkStatsLog.class) .spyStatic(ProcessList.class) + .spyStatic(SystemServiceRegistry.class) + .mockStatic(AppGlobals.class) .build(); @@ -119,6 +138,16 @@ public abstract class BaseBroadcastQueueTest { ProcessList mProcessList; @Mock PlatformCompat mPlatformCompat; + @Mock + IntentFirewall mIntentFirewall; + @Mock + IPackageManager mIPackageManager; + @Mock + AppOpsManager mAppOpsManager; + @Mock + IPermissionManager mIPermissionManager; + @Mock + PermissionManager mPermissionManager; @Mock AppStartInfoTracker mAppStartInfoTracker; @@ -167,22 +196,22 @@ public abstract class BaseBroadcastQueueTest { return getUidForPackage(invocation.getArgument(0)); }).when(mPackageManagerInt).getPackageUid(any(), anyLong(), eq(UserHandle.USER_SYSTEM)); + final Context spyContext = spy(mContext); + doReturn(mPermissionManager).when(spyContext).getSystemService(PermissionManager.class); final ActivityManagerService realAms = new ActivityManagerService( - new TestInjector(mContext), mServiceThreadRule.getThread()); + new TestInjector(spyContext), mServiceThreadRule.getThread()); realAms.mActivityTaskManager = new ActivityTaskManagerService(mContext); realAms.mActivityTaskManager.initialize(null, null, mContext.getMainLooper()); realAms.mAtmInternal = spy(realAms.mActivityTaskManager.getAtmInternal()); realAms.mOomAdjuster.mCachedAppOptimizer = mock(CachedAppOptimizer.class); realAms.mOomAdjuster = spy(realAms.mOomAdjuster); - ExtendedMockito.doNothing().when(() -> ProcessList.setOomAdj(anyInt(), anyInt(), anyInt())); + doNothing().when(() -> ProcessList.setOomAdj(anyInt(), anyInt(), anyInt())); realAms.mPackageManagerInt = mPackageManagerInt; realAms.mUsageStatsService = mUsageStatsManagerInt; realAms.mProcessesReady = true; mAms = spy(realAms); - mSkipPolicy = spy(new BroadcastSkipPolicy(mAms)); - doReturn(null).when(mSkipPolicy).shouldSkipMessage(any(), any()); - doReturn(false).when(mSkipPolicy).disallowBackgroundStart(any()); + mSkipPolicy = createBroadcastSkipPolicy(); doReturn(mAppStartInfoTracker).when(mProcessList).getAppStartInfoTracker(); @@ -198,6 +227,14 @@ public abstract class BaseBroadcastQueueTest { } } + public BroadcastSkipPolicy createBroadcastSkipPolicy() { + final BroadcastSkipPolicy skipPolicy = spy(new BroadcastSkipPolicy(mAms)); + doReturn(null).when(skipPolicy).shouldSkipAtEnqueueMessage(any(), any()); + doReturn(null).when(skipPolicy).shouldSkipMessage(any(), any()); + doReturn(false).when(skipPolicy).disallowBackgroundStart(any()); + return skipPolicy; + } + static int getUidForPackage(@NonNull String packageName) { switch (packageName) { case PACKAGE_ANDROID: return android.os.Process.SYSTEM_UID; @@ -240,6 +277,11 @@ public abstract class BaseBroadcastQueueTest { public BroadcastQueue getBroadcastQueue(ActivityManagerService service) { return null; } + + @Override + public IntentFirewall getIntentFirewall() { + return mIntentFirewall; + } } abstract String getTag(); @@ -281,24 +323,35 @@ public abstract class BaseBroadcastQueueTest { ri.activityInfo.packageName = packageName; ri.activityInfo.processName = processName; ri.activityInfo.name = name; + ri.activityInfo.exported = true; ri.activityInfo.applicationInfo = makeApplicationInfo(packageName, processName, userId); return ri; } + // TODO: Reuse BroadcastQueueTest.makeActiveProcessRecord() + @SuppressWarnings("GuardedBy") + ProcessRecord makeProcessRecord(ApplicationInfo info) { + final ProcessRecord r = spy(new ProcessRecord(mAms, info, info.processName, info.uid)); + r.setPid(mNextPid.incrementAndGet()); + ProcessRecord.updateProcessRecordNodes(r); + return r; + } + BroadcastFilter makeRegisteredReceiver(ProcessRecord app) { return makeRegisteredReceiver(app, 0); } BroadcastFilter makeRegisteredReceiver(ProcessRecord app, int priority) { final ReceiverList receiverList = mRegisteredReceivers.get(app.getPid()); - return makeRegisteredReceiver(receiverList, priority); + return makeRegisteredReceiver(receiverList, priority, null); } - static BroadcastFilter makeRegisteredReceiver(ReceiverList receiverList, int priority) { + static BroadcastFilter makeRegisteredReceiver(ReceiverList receiverList, int priority, + String requiredPermission) { final IntentFilter filter = new IntentFilter(); filter.setPriority(priority); final BroadcastFilter res = new BroadcastFilter(filter, receiverList, - receiverList.app.info.packageName, null, null, null, receiverList.uid, + receiverList.app.info.packageName, null, null, requiredPermission, receiverList.uid, receiverList.userId, false, false, true, receiverList.app.info, mock(PlatformCompat.class)); receiverList.add(res); @@ -313,4 +366,62 @@ public abstract class BaseBroadcastQueueTest { ArgumentMatcher<ApplicationInfo> appInfoEquals(int uid) { return test -> (test.uid == uid); } + + static final class BroadcastRecordBuilder { + private BroadcastQueue mQueue = mock(BroadcastQueue.class); + private Intent mIntent = mock(Intent.class); + private ProcessRecord mProcessRecord = mock(ProcessRecord.class); + private String mCallerPackage; + private String mCallerFeatureId; + private int mCallingPid; + private int mCallingUid; + private boolean mCallerInstantApp; + private String mResolvedType; + private String[] mRequiredPermissions; + private String[] mExcludedPermissions; + private String[] mExcludedPackages; + private int mAppOp; + private BroadcastOptions mOptions = BroadcastOptions.makeBasic(); + private List mReceivers = Collections.emptyList(); + private ProcessRecord mResultToApp; + private IIntentReceiver mResultTo; + private int mResultCode = Activity.RESULT_OK; + private String mResultData; + private Bundle mResultExtras; + private boolean mSerialized; + private boolean mSticky; + private boolean mInitialSticky; + private int mUserId = UserHandle.USER_SYSTEM; + private BackgroundStartPrivileges mBackgroundStartPrivileges = + BackgroundStartPrivileges.NONE; + private boolean mTimeoutExempt; + private BiFunction<Integer, Bundle, Bundle> mFilterExtrasForReceiver; + private int mCallerAppProcState = ActivityManager.PROCESS_STATE_UNKNOWN; + private PlatformCompat mPlatformCompat = mock(PlatformCompat.class); + + public BroadcastRecordBuilder setIntent(Intent intent) { + mIntent = intent; + return this; + } + + public BroadcastRecordBuilder setRequiredPermissions(String[] requiredPermissions) { + mRequiredPermissions = requiredPermissions; + return this; + } + + public BroadcastRecordBuilder setAppOp(int appOp) { + mAppOp = appOp; + return this; + } + + public BroadcastRecord build() { + return new BroadcastRecord(mQueue, mIntent, mProcessRecord, mCallerPackage, + mCallerFeatureId, mCallingPid, mCallingUid, mCallerInstantApp, mResolvedType, + mRequiredPermissions, mExcludedPermissions, mExcludedPackages, mAppOp, + mOptions, mReceivers, mResultToApp, mResultTo, mResultCode, mResultData, + mResultExtras, mSerialized, mSticky, mInitialSticky, mUserId, + mBackgroundStartPrivileges, mTimeoutExempt, mFilterExtrasForReceiver, + mCallerAppProcState, mPlatformCompat); + } + } } diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueImplTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueImplTest.java index 409706b14c56..b32ce49d049d 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueImplTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueImplTest.java @@ -1803,8 +1803,10 @@ public final class BroadcastQueueImplTest extends BaseBroadcastQueueTest { assertEquals(ProcessList.SCHED_GROUP_DEFAULT, queue.getPreferredSchedulingGroupLocked()); } + @SuppressWarnings("GuardedBy") + @DisableFlags(Flags.FLAG_AVOID_NOTE_OP_AT_ENQUEUE) @Test - public void testSkipPolicy_atEnqueueTime() throws Exception { + public void testSkipPolicy_atEnqueueTime_flagDisabled() throws Exception { final Intent userPresent = new Intent(Intent.ACTION_USER_PRESENT); final Object greenReceiver = makeManifestReceiver(PACKAGE_GREEN, CLASS_GREEN); final Object redReceiver = makeManifestReceiver(PACKAGE_RED, CLASS_RED); @@ -1839,6 +1841,44 @@ public final class BroadcastQueueImplTest extends BaseBroadcastQueueTest { verifyPendingRecords(redQueue, List.of(userPresent, timeTick)); } + @SuppressWarnings("GuardedBy") + @EnableFlags(Flags.FLAG_AVOID_NOTE_OP_AT_ENQUEUE) + @Test + public void testSkipPolicy_atEnqueueTime() throws Exception { + final Intent userPresent = new Intent(Intent.ACTION_USER_PRESENT); + final Object greenReceiver = makeManifestReceiver(PACKAGE_GREEN, CLASS_GREEN); + final Object redReceiver = makeManifestReceiver(PACKAGE_RED, CLASS_RED); + + final BroadcastRecord userPresentRecord = makeBroadcastRecord(userPresent, + List.of(greenReceiver, redReceiver)); + + final Intent timeTick = new Intent(Intent.ACTION_TIME_TICK); + final BroadcastRecord timeTickRecord = makeBroadcastRecord(timeTick, + List.of(greenReceiver, redReceiver)); + + doAnswer(invocation -> { + final BroadcastRecord r = invocation.getArgument(0); + final Object o = invocation.getArgument(1); + if (userPresent.getAction().equals(r.intent.getAction()) + && isReceiverEquals(o, greenReceiver)) { + return "receiver skipped by test"; + } + return null; + }).when(mSkipPolicy).shouldSkipAtEnqueueMessage(any(BroadcastRecord.class), any()); + + mImpl.enqueueBroadcastLocked(userPresentRecord); + mImpl.enqueueBroadcastLocked(timeTickRecord); + + final BroadcastProcessQueue greenQueue = mImpl.getProcessQueue(PACKAGE_GREEN, + getUidForPackage(PACKAGE_GREEN)); + // There should be only one broadcast for green process as the other would have + // been skipped. + verifyPendingRecords(greenQueue, List.of(timeTick)); + final BroadcastProcessQueue redQueue = mImpl.getProcessQueue(PACKAGE_RED, + getUidForPackage(PACKAGE_RED)); + verifyPendingRecords(redQueue, List.of(userPresent, timeTick)); + } + @DisableFlags(Flags.FLAG_LIMIT_PRIORITY_SCOPE) @Test public void testDeliveryDeferredForCached_flagDisabled() throws Exception { @@ -2270,19 +2310,11 @@ public final class BroadcastQueueImplTest extends BaseBroadcastQueueTest { assertFalse(mImpl.isProcessFreezable(greenProcess)); } - // TODO: Reuse BroadcastQueueTest.makeActiveProcessRecord() - private ProcessRecord makeProcessRecord(ApplicationInfo info) { - final ProcessRecord r = spy(new ProcessRecord(mAms, info, info.processName, info.uid)); - r.setPid(mNextPid.incrementAndGet()); - ProcessRecord.updateProcessRecordNodes(r); - return r; - } - BroadcastFilter makeRegisteredReceiver(ProcessRecord app, int priority) { final IIntentReceiver receiver = mock(IIntentReceiver.class); final ReceiverList receiverList = new ReceiverList(mAms, app, app.getPid(), app.info.uid, UserHandle.getUserId(app.info.uid), receiver); - return makeRegisteredReceiver(receiverList, priority); + return makeRegisteredReceiver(receiverList, priority, null /* requiredPermission */); } private Intent createPackageChangedIntent(int uid, List<String> componentNameList) { diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java index ad35b25a0d74..3a9c99d57d71 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java @@ -2301,6 +2301,52 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest { } /** + * Verify that we skip broadcasts at enqueue if {@link BroadcastSkipPolicy} decides it + * should be skipped. + */ + @EnableFlags(Flags.FLAG_AVOID_NOTE_OP_AT_ENQUEUE) + @Test + public void testSkipPolicy_atEnqueueTime() throws Exception { + final ProcessRecord callerApp = makeActiveProcessRecord(PACKAGE_RED); + final ProcessRecord receiverGreenApp = makeActiveProcessRecord(PACKAGE_GREEN); + final ProcessRecord receiverBlueApp = makeActiveProcessRecord(PACKAGE_BLUE); + + final Intent airplane = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); + final Object greenReceiver = makeRegisteredReceiver(receiverGreenApp); + final Object blueReceiver = makeRegisteredReceiver(receiverBlueApp); + final Object yellowReceiver = makeManifestReceiver(PACKAGE_YELLOW, CLASS_YELLOW); + final Object orangeReceiver = makeManifestReceiver(PACKAGE_ORANGE, CLASS_ORANGE); + + doAnswer(invocation -> { + final BroadcastRecord r = invocation.getArgument(0); + final Object o = invocation.getArgument(1); + if (airplane.getAction().equals(r.intent.getAction()) + && (isReceiverEquals(o, greenReceiver) + || isReceiverEquals(o, orangeReceiver))) { + return "test skipped receiver"; + } + return null; + }).when(mSkipPolicy).shouldSkipAtEnqueueMessage(any(BroadcastRecord.class), any()); + enqueueBroadcast(makeBroadcastRecord(airplane, callerApp, + List.of(greenReceiver, blueReceiver, yellowReceiver, orangeReceiver))); + + waitForIdle(); + // Verify that only blue and yellow receiver apps received the broadcast. + verifyScheduleRegisteredReceiver(never(), receiverGreenApp, USER_SYSTEM); + verify(mSkipPolicy, never()).shouldSkipMessage(any(BroadcastRecord.class), + eq(greenReceiver)); + verifyScheduleRegisteredReceiver(receiverBlueApp, airplane); + final ProcessRecord receiverYellowApp = mAms.getProcessRecordLocked(PACKAGE_YELLOW, + getUidForPackage(PACKAGE_YELLOW)); + verifyScheduleReceiver(receiverYellowApp, airplane); + final ProcessRecord receiverOrangeApp = mAms.getProcessRecordLocked(PACKAGE_ORANGE, + getUidForPackage(PACKAGE_ORANGE)); + assertNull(receiverOrangeApp); + verify(mSkipPolicy, never()).shouldSkipMessage(any(BroadcastRecord.class), + eq(orangeReceiver)); + } + + /** * Verify broadcasts to runtime receivers in cached processes are deferred * until that process leaves the cached state. */ diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastSkipPolicyTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastSkipPolicyTest.java new file mode 100644 index 000000000000..c8aad79edd12 --- /dev/null +++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastSkipPolicyTest.java @@ -0,0 +1,305 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.am; + +import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; + +import static org.junit.Assert.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.never; + +import android.Manifest; +import android.app.ActivityManager; +import android.app.AppGlobals; +import android.app.AppOpsManager; +import android.content.IIntentReceiver; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.os.UserHandle; + +import androidx.test.filters.SmallTest; + +import org.junit.Before; +import org.junit.Test; + +@SmallTest +public class BroadcastSkipPolicyTest extends BaseBroadcastQueueTest { + private static final String TAG = "BroadcastSkipPolicyTest"; + + BroadcastSkipPolicy mBroadcastSkipPolicy; + + @Before + public void setUp() throws Exception { + super.setUp(); + mBroadcastSkipPolicy = new BroadcastSkipPolicy(mAms); + + doReturn(true).when(mIntentFirewall).checkBroadcast(any(Intent.class), + anyInt(), anyInt(), nullable(String.class), anyInt()); + + doReturn(mIPackageManager).when(AppGlobals::getPackageManager); + doReturn(true).when(mIPackageManager).isPackageAvailable(anyString(), anyInt()); + + doReturn(ActivityManager.APP_START_MODE_NORMAL).when(mAms).getAppStartModeLOSP(anyInt(), + anyString(), anyInt(), anyInt(), eq(true), eq(false), eq(false)); + + doReturn(mAppOpsManager).when(mAms).getAppOpsManager(); + doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager).checkOpNoThrow(anyString(), + anyInt(), anyString(), nullable(String.class)); + doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager).noteOpNoThrow(anyString(), + anyInt(), anyString(), nullable(String.class), anyString()); + + doReturn(mIPermissionManager).when(AppGlobals::getPermissionManager); + doReturn(PackageManager.PERMISSION_GRANTED).when(mIPermissionManager).checkUidPermission( + anyInt(), anyString(), anyInt()); + } + + @Override + public String getTag() { + return TAG; + } + + @Override + public BroadcastSkipPolicy createBroadcastSkipPolicy() { + return new BroadcastSkipPolicy(mAms); + } + + @Test + public void testShouldSkipMessage_withManifestRcvr_withCompPerm_invokesNoteOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .build(); + final String msg = mBroadcastSkipPolicy.shouldSkipMessage(record, + makeManifestReceiverWithPermission(PACKAGE_GREEN, CLASS_GREEN, + Manifest.permission.PACKAGE_USAGE_STATS)); + assertNull(msg); + verify(mAppOpsManager).noteOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(record.callingUid), eq(record.callerPackage), eq(record.callerFeatureId), + anyString()); + verify(mAppOpsManager, never()).checkOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class)); + } + + @Test + public void testShouldSkipMessage_withRegRcvr_withCompPerm_invokesNoteOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .build(); + final ProcessRecord receiverApp = makeProcessRecord(makeApplicationInfo(PACKAGE_GREEN)); + final String msg = mBroadcastSkipPolicy.shouldSkipMessage(record, + makeRegisteredReceiver(receiverApp, 0 /* priority */, + Manifest.permission.PACKAGE_USAGE_STATS)); + assertNull(msg); + verify(mAppOpsManager).noteOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(record.callingUid), eq(record.callerPackage), eq(record.callerFeatureId), + anyString()); + verify(mAppOpsManager, never()).checkOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class)); + } + + @Test + public void testShouldSkipAtEnqueueMessage_withManifestRcvr_withCompPerm_invokesCheckOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .build(); + final String msg = mBroadcastSkipPolicy.shouldSkipAtEnqueueMessage(record, + makeManifestReceiverWithPermission(PACKAGE_GREEN, CLASS_GREEN, + Manifest.permission.PACKAGE_USAGE_STATS)); + assertNull(msg); + verify(mAppOpsManager).checkOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(record.callingUid), eq(record.callerPackage), eq(record.callerFeatureId)); + verify(mAppOpsManager, never()).noteOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class), anyString()); + } + + @Test + public void testShouldSkipAtEnqueueMessage_withRegRcvr_withCompPerm_invokesCheckOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .build(); + final ProcessRecord receiverApp = makeProcessRecord(makeApplicationInfo(PACKAGE_GREEN)); + final String msg = mBroadcastSkipPolicy.shouldSkipAtEnqueueMessage(record, + makeRegisteredReceiver(receiverApp, 0 /* priority */, + Manifest.permission.PACKAGE_USAGE_STATS)); + assertNull(msg); + verify(mAppOpsManager).checkOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(record.callingUid), eq(record.callerPackage), eq(record.callerFeatureId)); + verify(mAppOpsManager, never()).noteOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class), anyString()); + } + + @Test + public void testShouldSkipMessage_withManifestRcvr_withAppOp_invokesNoteOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setAppOp(AppOpsManager.permissionToOpCode(Manifest.permission.PACKAGE_USAGE_STATS)) + .build(); + final ResolveInfo receiver = makeManifestReceiver(PACKAGE_GREEN, CLASS_GREEN); + final String msg = mBroadcastSkipPolicy.shouldSkipMessage(record, receiver); + assertNull(msg); + verify(mAppOpsManager).noteOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(receiver.activityInfo.applicationInfo.uid), + eq(receiver.activityInfo.packageName), nullable(String.class), anyString()); + verify(mAppOpsManager, never()).checkOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class)); + } + + @Test + public void testShouldSkipMessage_withRegRcvr_withAppOp_invokesNoteOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setAppOp(AppOpsManager.permissionToOpCode(Manifest.permission.PACKAGE_USAGE_STATS)) + .build(); + final ProcessRecord receiverApp = makeProcessRecord(makeApplicationInfo(PACKAGE_GREEN)); + final BroadcastFilter filter = makeRegisteredReceiver(receiverApp, 0 /* priority */, + null /* requiredPermission */); + final String msg = mBroadcastSkipPolicy.shouldSkipMessage(record, filter); + assertNull(msg); + verify(mAppOpsManager).noteOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(filter.receiverList.uid), + eq(filter.packageName), nullable(String.class), anyString()); + verify(mAppOpsManager, never()).checkOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class)); + } + + @Test + public void testShouldSkipAtEnqueueMessage_withManifestRcvr_withAppOp_invokesCheckOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setAppOp(AppOpsManager.permissionToOpCode(Manifest.permission.PACKAGE_USAGE_STATS)) + .build(); + final ResolveInfo receiver = makeManifestReceiver(PACKAGE_GREEN, CLASS_GREEN); + final String msg = mBroadcastSkipPolicy.shouldSkipAtEnqueueMessage(record, receiver); + assertNull(msg); + verify(mAppOpsManager).checkOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(receiver.activityInfo.applicationInfo.uid), + eq(receiver.activityInfo.applicationInfo.packageName), nullable(String.class)); + verify(mAppOpsManager, never()).noteOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class), anyString()); + } + + @Test + public void testShouldSkipAtEnqueueMessage_withRegRcvr_withAppOp_invokesCheckOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setAppOp(AppOpsManager.permissionToOpCode(Manifest.permission.PACKAGE_USAGE_STATS)) + .build(); + final ProcessRecord receiverApp = makeProcessRecord(makeApplicationInfo(PACKAGE_GREEN)); + final BroadcastFilter filter = makeRegisteredReceiver(receiverApp, 0 /* priority */, + null /* requiredPermission */); + final String msg = mBroadcastSkipPolicy.shouldSkipAtEnqueueMessage(record, filter); + assertNull(msg); + verify(mAppOpsManager).checkOpNoThrow( + eq(AppOpsManager.permissionToOp(Manifest.permission.PACKAGE_USAGE_STATS)), + eq(filter.receiverList.uid), + eq(filter.packageName), nullable(String.class)); + verify(mAppOpsManager, never()).noteOpNoThrow( + anyString(), anyInt(), anyString(), nullable(String.class), anyString()); + } + + @Test + public void testShouldSkipMessage_withManifestRcvr_withRequiredPerms_invokesNoteOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setRequiredPermissions(new String[] {Manifest.permission.PACKAGE_USAGE_STATS}) + .build(); + final String msg = mBroadcastSkipPolicy.shouldSkipMessage(record, + makeManifestReceiver(PACKAGE_GREEN, CLASS_GREEN)); + assertNull(msg); + verify(mPermissionManager).checkPermissionForDataDelivery( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any(), anyString()); + verify(mPermissionManager, never()).checkPermissionForPreflight( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any()); + } + + @Test + public void testShouldSkipMessage_withRegRcvr_withRequiredPerms_invokesNoteOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setRequiredPermissions(new String[] {Manifest.permission.PACKAGE_USAGE_STATS}) + .build(); + final ProcessRecord receiverApp = makeProcessRecord(makeApplicationInfo(PACKAGE_GREEN)); + final String msg = mBroadcastSkipPolicy.shouldSkipMessage(record, + makeRegisteredReceiver(receiverApp, 0 /* priority */, + null /* requiredPermission */)); + assertNull(msg); + verify(mPermissionManager).checkPermissionForDataDelivery( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any(), anyString()); + verify(mPermissionManager, never()).checkPermissionForPreflight( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any()); + } + + @Test + public void testShouldSkipAtEnqueueMessage_withManifestRcvr_withRequiredPerms_invokesCheckOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setRequiredPermissions(new String[] {Manifest.permission.PACKAGE_USAGE_STATS}) + .build(); + final String msg = mBroadcastSkipPolicy.shouldSkipAtEnqueueMessage(record, + makeManifestReceiver(PACKAGE_GREEN, CLASS_GREEN)); + assertNull(msg); + verify(mPermissionManager, never()).checkPermissionForDataDelivery( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any(), anyString()); + verify(mPermissionManager).checkPermissionForPreflight( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any()); + } + + @Test + public void testShouldSkipAtEnqueueMessage_withRegRcvr_withRequiredPerms_invokesCheckOp() { + final BroadcastRecord record = new BroadcastRecordBuilder() + .setIntent(new Intent(Intent.ACTION_TIME_TICK)) + .setRequiredPermissions(new String[] {Manifest.permission.PACKAGE_USAGE_STATS}) + .build(); + final ProcessRecord receiverApp = makeProcessRecord(makeApplicationInfo(PACKAGE_GREEN)); + final String msg = mBroadcastSkipPolicy.shouldSkipAtEnqueueMessage(record, + makeRegisteredReceiver(receiverApp, 0 /* priority */, + null /* requiredPermission */)); + assertNull(msg); + verify(mPermissionManager, never()).checkPermissionForDataDelivery( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any(), anyString()); + verify(mPermissionManager).checkPermissionForPreflight( + eq(Manifest.permission.PACKAGE_USAGE_STATS), any()); + } + + private ResolveInfo makeManifestReceiverWithPermission(String packageName, String name, + String permission) { + final ResolveInfo resolveInfo = makeManifestReceiver(packageName, name); + resolveInfo.activityInfo.permission = permission; + return resolveInfo; + } + + private BroadcastFilter makeRegisteredReceiver(ProcessRecord app, int priority, + String requiredPermission) { + final IIntentReceiver receiver = mock(IIntentReceiver.class); + final ReceiverList receiverList = new ReceiverList(mAms, app, app.getPid(), app.info.uid, + UserHandle.getUserId(app.info.uid), receiver); + return makeRegisteredReceiver(receiverList, priority, requiredPermission); + } +} diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java index bada337c7aa6..6b8ef88c556c 100644 --- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java @@ -64,7 +64,6 @@ import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.ServiceInfo; -import android.content.res.Resources; import android.graphics.Color; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; @@ -95,6 +94,7 @@ import com.android.internal.R; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.LocalServices; +import com.android.server.wm.DesktopModeHelper; import com.android.server.wm.WindowManagerInternal; import org.hamcrest.CoreMatchers; @@ -155,8 +155,6 @@ public class WallpaperManagerServiceTests { private IPackageManager mIpm = AppGlobals.getPackageManager(); - private Resources mResources = sContext.getResources(); - @Mock private DisplayManager mDisplayManager; @@ -178,6 +176,7 @@ public class WallpaperManagerServiceTests { .spyStatic(WallpaperUtils.class) .spyStatic(LocalServices.class) .spyStatic(WallpaperManager.class) + .spyStatic(DesktopModeHelper.class) .startMocking(); sWindowManagerInternal = mock(WindowManagerInternal.class); @@ -246,6 +245,8 @@ public class WallpaperManagerServiceTests { int userId = (invocation.getArgument(0)); return getWallpaperTestDir(userId); }).when(() -> WallpaperUtils.getWallpaperDir(anyInt())); + ExtendedMockito.doAnswer(invocation -> true).when( + () -> DesktopModeHelper.isDeviceEligibleForDesktopMode(any())); sContext.addMockSystemService(DisplayManager.class, mDisplayManager); @@ -257,10 +258,6 @@ public class WallpaperManagerServiceTests { doReturn(displays).when(mDisplayManager).getDisplays(); spyOn(mIpm); - spyOn(mResources); - doReturn(true).when(mResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)); - doReturn(true).when(mResources).getBoolean( - eq(R.bool.config_canInternalDisplayHostDesktops)); mService = new TestWallpaperManagerService(sContext); spyOn(mService); mService.systemReady(); diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java index 8fad93184732..5165e34c7fcd 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryTest.java @@ -456,6 +456,8 @@ public class BatteryStatsHistoryTest { } private void fillActiveFile(BatteryStatsHistory history) { + awaitCompletion(); // Wait for BatteryHistoryDirectory.trim if necessary. + // Create roughly 1K of history int initialSize = history.getHistoryUsedSize(); while (history.getHistoryUsedSize() < initialSize + 1000) { diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java index fcde4055cf17..c84cc00bceee 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java @@ -60,6 +60,7 @@ public class ActiveSourceActionTest { private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); private int mPhysicalAddress; + private boolean mIsPowerStandby; @Before public void setUp() throws Exception { @@ -68,12 +69,13 @@ public class ActiveSourceActionTest { .hasSystemFeature(FEATURE_HDMI_CEC)); mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); + mIsPowerStandby = false; FakeAudioFramework audioFramework = new FakeAudioFramework(); mHdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList(), audioFramework.getAudioManager(), audioFramework.getAudioDeviceVolumeManager()) { @Override boolean isPowerStandby() { - return false; + return mIsPowerStandby; } @Override @@ -151,4 +153,41 @@ public class ActiveSourceActionTest { assertThat(playbackDevice.getActiveSource().physicalAddress).isEqualTo(mPhysicalAddress); assertThat(playbackDevice.isActiveSource()).isTrue(); } + + @Test + public void onActiveSourceLost_removePendingActiveSourceAction() { + HdmiCecLocalDevicePlayback playbackDevice = new HdmiCecLocalDevicePlayback( + mHdmiControlService); + playbackDevice.init(); + mLocalDevices.add(playbackDevice); + mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); + mIsPowerStandby = true; + mTestLooper.dispatchAll(); + + mNativeWrapper.clearResultMessages(); + mTestLooper.dispatchAll(); + + int otherPlaybackLogicalAddress = playbackDevice.getDeviceInfo().getLogicalAddress() + == Constants.ADDR_PLAYBACK_2 + ? Constants.ADDR_PLAYBACK_1 : Constants.ADDR_PLAYBACK_2; + HdmiCecMessage activeSourceFromOtherDevice = + HdmiCecMessageBuilder.buildActiveSource( + otherPlaybackLogicalAddress, 0x2200); + HdmiCecMessage activeSourceFromDevice = + HdmiCecMessageBuilder.buildActiveSource( + playbackDevice.getDeviceInfo().getLogicalAddress(), mPhysicalAddress); + + HdmiCecFeatureAction action = new com.android.server.hdmi.ActiveSourceAction( + playbackDevice, ADDR_TV); + playbackDevice.addAndStartAction(action); + mTestLooper.dispatchAll(); + + assertThat(playbackDevice.getActions(ActiveSourceAction.class)).hasSize(1); + playbackDevice.handleActiveSource(activeSourceFromOtherDevice); + mTestLooper.dispatchAll(); + + // Action is removed + assertThat(playbackDevice.getActions(ActiveSourceAction.class)).hasSize(0); + assertThat(mNativeWrapper.getResultMessages()).doesNotContain(activeSourceFromDevice); + } } diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java index d6de31406b5a..bbc2cb23b269 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java +++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java @@ -196,7 +196,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { /** * Test for the restoration from saved file. */ - public void testInitializeFromSavedFile() { + public void disabled_testInitializeFromSavedFile() { mInjectedCurrentTimeMillis = START_TIME + 4 * INTERVAL + 50; assertResetTimes(START_TIME + 4 * INTERVAL, START_TIME + 5 * INTERVAL); @@ -220,7 +220,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { // TODO Add various broken cases. } - public void testLoadConfig() { + public void disabled_testLoadConfig() { mService.updateConfigurationLocked( ConfigConstants.KEY_RESET_INTERVAL_SEC + "=123," + ConfigConstants.KEY_MAX_SHORTCUTS + "=4," @@ -270,13 +270,13 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertEquals(MAX_UPDATES_PER_INTERVAL, mManager.getRemainingCallCount()); } - public void testGetIconMaxDimensions() { + public void disabled_testGetIconMaxDimensions() { assertEquals(MAX_ICON_DIMENSION, mManager.getIconMaxWidth()); assertEquals(MAX_ICON_DIMENSION, mManager.getIconMaxHeight()); } /** Test for {@link android.content.pm.ShortcutManager#getRateLimitResetTime()} */ - public void testGetRateLimitResetTime() { + public void disabled_testGetRateLimitResetTime() { assertEquals(START_TIME + INTERVAL, mManager.getRateLimitResetTime()); mInjectedCurrentTimeMillis = START_TIME + 4 * INTERVAL + 50; @@ -354,7 +354,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testAddDynamicShortcuts() { + public void disabled_testAddDynamicShortcuts() { setCaller(CALLING_PACKAGE_1, USER_10); final ShortcutInfo si1 = makeShortcut("shortcut1"); @@ -752,7 +752,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testDeleteDynamicShortcuts() { + public void disabled_testDeleteDynamicShortcuts() { final ShortcutInfo si1 = makeShortcut("shortcut1"); final ShortcutInfo si2 = makeShortcut("shortcut2"); final ShortcutInfo si3 = makeShortcut("shortcut3"); @@ -822,7 +822,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertEquals(1, mManager.getRemainingCallCount()); } - public void testIcons() throws IOException { + public void disabled_testIcons() throws IOException { final Icon res32x32 = Icon.createWithResource(getTestContext(), R.drawable.black_32x32); final Icon res64x64 = Icon.createWithResource(getTestContext(), R.drawable.black_64x64); final Icon res512x512 = Icon.createWithResource(getTestContext(), R.drawable.black_512x512); @@ -1228,7 +1228,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { return out.getFile(); } - public void testOpenIconFileForWrite() throws IOException { + public void disabled_testOpenIconFileForWrite() throws IOException { mInjectedCurrentTimeMillis = 1000; final File p10_1_1 = openIconFileForWriteAndGetPath(10, CALLING_PACKAGE_1); @@ -1618,7 +1618,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED), "s1", "s2"); } - public void testCachedShortcuts() { + public void disabled_testCachedShortcuts() { runWithCaller(CALLING_PACKAGE_1, USER_10, () -> { assertTrue(mManager.setDynamicShortcuts(list(makeShortcut("s1"), makeLongLivedShortcut("s2"), makeLongLivedShortcut("s3"), @@ -1999,7 +1999,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { "s1", "s3"); } - public void testGetShortcuts_shortcutKinds() throws Exception { + public void disabled_testGetShortcuts_shortcutKinds() throws Exception { // Create 3 manifest and 3 dynamic shortcuts addManifestShortcutResource( new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()), @@ -2110,7 +2110,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testGetShortcuts_resolveStrings() throws Exception { + public void disabled_testGetShortcuts_resolveStrings() throws Exception { runWithCaller(CALLING_PACKAGE_1, USER_10, () -> { ShortcutInfo si = new ShortcutInfo.Builder(mClientContext) .setId("id") @@ -2833,7 +2833,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testPinShortcutAndGetPinnedShortcuts_assistant() { + public void disabled_testPinShortcutAndGetPinnedShortcuts_assistant() { // Create some shortcuts. runWithCaller(CALLING_PACKAGE_1, USER_10, () -> { assertTrue(mManager.setDynamicShortcuts(list( @@ -3613,7 +3613,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { // TODO Check extra, etc } - public void testLauncherCallback() throws Throwable { + public void disabled_testLauncherCallback() throws Throwable { // Disable throttling for this test. mService.updateConfigurationLocked( ConfigConstants.KEY_MAX_UPDATES_PER_INTERVAL + "=99999999," @@ -3779,7 +3779,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { .isEmpty(); } - public void testLauncherCallback_crossProfile() throws Throwable { + public void disabled_testLauncherCallback_crossProfile() throws Throwable { prepareCrossProfileDataSet(); final Handler h = new Handler(Looper.getMainLooper()); @@ -4060,7 +4060,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { // TODO Check all other fields } - public void testLoadCorruptedShortcuts() throws Exception { + public void disabled_testLoadCorruptedShortcuts() throws Exception { initService(); addPackage("com.android.chrome", 0, 0); @@ -4575,7 +4575,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testHandleGonePackage_crossProfile() { + public void disabled_testHandleGonePackage_crossProfile() { // Create some shortcuts. runWithCaller(CALLING_PACKAGE_1, USER_10, () -> { assertTrue(mManager.setDynamicShortcuts(list( @@ -4910,7 +4910,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { checkCanRestoreTo(DISABLED_REASON_BACKUP_NOT_SUPPORTED, spi3, true, 10, true, "sig1"); } - public void testHandlePackageDelete() { + public void disabled_testHandlePackageDelete() { checkHandlePackageDeleteInner((userId, packageName) -> { uninstallPackage(userId, packageName); mService.mPackageMonitor.onReceive(getTestContext(), @@ -4918,7 +4918,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testHandlePackageDisable() { + public void disabled_testHandlePackageDisable() { checkHandlePackageDeleteInner((userId, packageName) -> { disablePackage(userId, packageName); mService.mPackageMonitor.onReceive(getTestContext(), @@ -5050,7 +5050,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { } /** Almost ame as testHandlePackageDelete, except it doesn't uninstall packages. */ - public void testHandlePackageClearData() { + public void disabled_testHandlePackageClearData() { final Icon bmp32x32 = Icon.createWithBitmap(BitmapFactory.decodeResource( getTestContext().getResources(), R.drawable.black_32x32)); setCaller(CALLING_PACKAGE_1, USER_10); @@ -5126,7 +5126,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertTrue(bitmapDirectoryExists(CALLING_PACKAGE_3, USER_11)); } - public void testHandlePackageClearData_manifestRepublished() { + public void disabled_testHandlePackageClearData_manifestRepublished() { mRunningUsers.put(USER_11, true); @@ -5168,7 +5168,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testHandlePackageUpdate() throws Throwable { + public void disabled_testHandlePackageUpdate() throws Throwable { // Set up shortcuts and launchers. final Icon res32x32 = Icon.createWithResource(getTestContext(), R.drawable.black_32x32); @@ -5342,7 +5342,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { /** * Test the case where an updated app has resource IDs changed. */ - public void testHandlePackageUpdate_resIdChanged() throws Exception { + public void disabled_testHandlePackageUpdate_resIdChanged() throws Exception { final Icon icon1 = Icon.createWithResource(getTestContext(), /* res ID */ 1000); final Icon icon2 = Icon.createWithResource(getTestContext(), /* res ID */ 1001); @@ -5417,7 +5417,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testHandlePackageUpdate_systemAppUpdate() { + public void disabled_testHandlePackageUpdate_systemAppUpdate() { // Package1 is a system app. Package 2 is not a system app, so it's not scanned // in this test at all. @@ -5523,7 +5523,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { mService.getUserShortcutsLocked(USER_10).getLastAppScanOsFingerprint()); } - public void testHandlePackageChanged() { + public void disabled_testHandlePackageChanged() { final ComponentName ACTIVITY1 = new ComponentName(CALLING_PACKAGE_1, "act1"); final ComponentName ACTIVITY2 = new ComponentName(CALLING_PACKAGE_1, "act2"); @@ -5653,7 +5653,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testHandlePackageUpdate_activityNoLongerMain() throws Throwable { + public void disabled_testHandlePackageUpdate_activityNoLongerMain() throws Throwable { runWithCaller(CALLING_PACKAGE_1, USER_10, () -> { assertTrue(mManager.setDynamicShortcuts(list( makeShortcutWithActivity("s1a", @@ -5739,7 +5739,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { * - Unpinned dynamic shortcuts * - Bitmaps */ - public void testBackupAndRestore() { + public void disabled_testBackupAndRestore() { assertFileNotExists("user-0/shortcut_dump/restore-0-start.txt"); assertFileNotExists("user-0/shortcut_dump/restore-1-payload.xml"); @@ -5760,7 +5760,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { checkBackupAndRestore_success(/*firstRestore=*/ true); } - public void testBackupAndRestore_backupRestoreTwice() { + public void disabled_testBackupAndRestore_backupRestoreTwice() { prepareForBackupTest(); checkBackupAndRestore_success(/*firstRestore=*/ true); @@ -5776,7 +5776,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { checkBackupAndRestore_success(/*firstRestore=*/ false); } - public void testBackupAndRestore_restoreToNewVersion() { + public void disabled_testBackupAndRestore_restoreToNewVersion() { prepareForBackupTest(); addPackage(CALLING_PACKAGE_1, CALLING_UID_1, 2); @@ -5982,7 +5982,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testBackupAndRestore_publisherWrongSignature() { + public void disabled_testBackupAndRestore_publisherWrongSignature() { prepareForBackupTest(); addPackage(CALLING_PACKAGE_1, CALLING_UID_1, 10, "sigx"); // different signature @@ -5990,7 +5990,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { checkBackupAndRestore_publisherNotRestored(ShortcutInfo.DISABLED_REASON_SIGNATURE_MISMATCH); } - public void testBackupAndRestore_publisherNoLongerBackupTarget() { + public void disabled_testBackupAndRestore_publisherNoLongerBackupTarget() { prepareForBackupTest(); updatePackageInfo(CALLING_PACKAGE_1, @@ -6119,7 +6119,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testBackupAndRestore_launcherLowerVersion() { + public void disabled_testBackupAndRestore_launcherLowerVersion() { prepareForBackupTest(); addPackage(LAUNCHER_1, LAUNCHER_UID_1, 0); // Lower version @@ -6128,7 +6128,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { checkBackupAndRestore_success(/*firstRestore=*/ true); } - public void testBackupAndRestore_launcherWrongSignature() { + public void disabled_testBackupAndRestore_launcherWrongSignature() { prepareForBackupTest(); addPackage(LAUNCHER_1, LAUNCHER_UID_1, 10, "sigx"); // different signature @@ -6136,7 +6136,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { checkBackupAndRestore_launcherNotRestored(true); } - public void testBackupAndRestore_launcherNoLongerBackupTarget() { + public void disabled_testBackupAndRestore_launcherNoLongerBackupTarget() { prepareForBackupTest(); updatePackageInfo(LAUNCHER_1, @@ -6241,7 +6241,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testBackupAndRestore_launcherAndPackageNoLongerBackupTarget() { + public void disabled_testBackupAndRestore_launcherAndPackageNoLongerBackupTarget() { prepareForBackupTest(); updatePackageInfo(CALLING_PACKAGE_1, @@ -6339,7 +6339,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testBackupAndRestore_disabled() { + public void disabled_testBackupAndRestore_disabled() { prepareCrossProfileDataSet(); // Before doing backup & restore, disable s1. @@ -6404,7 +6404,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { } - public void testBackupAndRestore_manifestRePublished() { + public void disabled_testBackupAndRestore_manifestRePublished() { // Publish two manifest shortcuts. addManifestShortcutResource( new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()), @@ -6495,7 +6495,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { * logcat. * - if it has allowBackup=false, we don't touch any of the existing shortcuts. */ - public void testBackupAndRestore_appAlreadyInstalledWhenRestored() { + public void disabled_testBackupAndRestore_appAlreadyInstalledWhenRestored() { // Pre-backup. Same as testBackupAndRestore_manifestRePublished(). // Publish two manifest shortcuts. @@ -6620,7 +6620,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { /** * Test for restoring the pre-P backup format. */ - public void testBackupAndRestore_api27format() throws Exception { + public void disabled_testBackupAndRestore_api27format() throws Exception { final byte[] payload = readTestAsset("shortcut/shortcut_api27_backup.xml").getBytes(); addPackage(CALLING_PACKAGE_1, CALLING_UID_1, 10, "22222"); @@ -6861,7 +6861,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { .getPackageUserId()); } - public void testOnApplicationActive_permission() { + public void disabled_testOnApplicationActive_permission() { assertExpectException(SecurityException.class, "Missing permission", () -> mManager.onApplicationActive(CALLING_PACKAGE_1, USER_10)); @@ -6870,7 +6870,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { mManager.onApplicationActive(CALLING_PACKAGE_1, USER_10); } - public void testGetShareTargets_permission() { + public void disabled_testGetShareTargets_permission() { addPackage(CHOOSER_ACTIVITY_PACKAGE, CHOOSER_ACTIVITY_UID, 10, "sig1"); mInjectedChooserActivity = ComponentName.createRelative(CHOOSER_ACTIVITY_PACKAGE, ".ChooserActivity"); @@ -6889,7 +6889,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testHasShareTargets_permission() { + public void disabled_testHasShareTargets_permission() { assertExpectException(SecurityException.class, "Missing permission", () -> mManager.hasShareTargets(CALLING_PACKAGE_1)); @@ -6898,7 +6898,8 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { mManager.hasShareTargets(CALLING_PACKAGE_1); } - public void testisSharingShortcut_permission() throws IntentFilter.MalformedMimeTypeException { + public void disabled_testisSharingShortcut_permission() + throws IntentFilter.MalformedMimeTypeException { setCaller(LAUNCHER_1, USER_10); IntentFilter filter_any = new IntentFilter(); @@ -6919,12 +6920,12 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { } public void disabled_testDumpsys_withIcons() throws IOException { - testIcons(); + disabled_testIcons(); // Dump after having some icons. dumpsysOnLogcat("test1", /* force= */ true); } - public void testManifestShortcut_publishOnUnlockUser() { + public void disabled_testManifestShortcut_publishOnUnlockUser() { addManifestShortcutResource( new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()), R.xml.shortcut_1); @@ -7138,7 +7139,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertNull(mService.getPackageShortcutForTest(LAUNCHER_1, USER_10)); } - public void testManifestShortcut_publishOnBroadcast() { + public void disabled_testManifestShortcut_publishOnBroadcast() { // First, no packages are installed. uninstallPackage(USER_10, CALLING_PACKAGE_1); uninstallPackage(USER_10, CALLING_PACKAGE_2); @@ -7394,7 +7395,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_missingMandatoryFields() { + public void disabled_testManifestShortcuts_missingMandatoryFields() { // Start with no apps installed. uninstallPackage(USER_10, CALLING_PACKAGE_1); uninstallPackage(USER_10, CALLING_PACKAGE_2); @@ -7463,7 +7464,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_intentDefinitions() { + public void disabled_testManifestShortcuts_intentDefinitions() { addManifestShortcutResource( new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()), R.xml.shortcut_error_4); @@ -7605,7 +7606,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_checkAllFields() { + public void disabled_testManifestShortcuts_checkAllFields() { mService.handleUnlockUser(USER_10); // Package 1 updated, which has one valid manifest shortcut and one invalid. @@ -7710,7 +7711,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_localeChange() throws InterruptedException { + public void disabled_testManifestShortcuts_localeChange() throws InterruptedException { mService.handleUnlockUser(USER_10); // Package 1 updated, which has one valid manifest shortcut and one invalid. @@ -7814,7 +7815,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_updateAndDisabled_notPinned() { + public void disabled_testManifestShortcuts_updateAndDisabled_notPinned() { mService.handleUnlockUser(USER_10); // First, just publish a manifest shortcut. @@ -7854,7 +7855,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_updateAndDisabled_pinned() { + public void disabled_testManifestShortcuts_updateAndDisabled_pinned() { mService.handleUnlockUser(USER_10); // First, just publish a manifest shortcut. @@ -7910,7 +7911,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_duplicateInSingleActivity() { + public void disabled_testManifestShortcuts_duplicateInSingleActivity() { mService.handleUnlockUser(USER_10); // The XML has two shortcuts with the same ID. @@ -7935,7 +7936,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testManifestShortcuts_duplicateInTwoActivities() { + public void disabled_testManifestShortcuts_duplicateInTwoActivities() { mService.handleUnlockUser(USER_10); // ShortcutActivity has shortcut ms1 @@ -7987,7 +7988,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { /** * Manifest shortcuts cannot override shortcuts that were published via the APIs. */ - public void testManifestShortcuts_cannotOverrideNonManifest() { + public void disabled_testManifestShortcuts_cannotOverrideNonManifest() { mService.handleUnlockUser(USER_10); // Create a non-pinned dynamic shortcut and a non-dynamic pinned shortcut. @@ -8060,7 +8061,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { /** * Make sure the APIs won't work on manifest shortcuts. */ - public void testManifestShortcuts_immutable() { + public void disabled_testManifestShortcuts_immutable() { mService.handleUnlockUser(USER_10); // Create a non-pinned manifest shortcut, a pinned shortcut that was originally @@ -8153,7 +8154,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { /** * Make sure the APIs won't work on manifest shortcuts. */ - public void testManifestShortcuts_tooMany() { + public void disabled_testManifestShortcuts_tooMany() { // Change the max number of shortcuts. mService.updateConfigurationLocked(ConfigConstants.KEY_MAX_SHORTCUTS + "=3"); @@ -8172,7 +8173,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testMaxShortcutCount_set() { + public void disabled_testMaxShortcutCount_set() { // Change the max number of shortcuts. mService.updateConfigurationLocked(ConfigConstants.KEY_MAX_SHORTCUTS + "=3"); @@ -8253,7 +8254,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testMaxShortcutCount_add() { + public void disabled_testMaxShortcutCount_add() { // Change the max number of shortcuts. mService.updateConfigurationLocked(ConfigConstants.KEY_MAX_SHORTCUTS + "=3"); @@ -8380,7 +8381,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testMaxShortcutCount_update() { + public void disabled_testMaxShortcutCount_update() { // Change the max number of shortcuts. mService.updateConfigurationLocked(ConfigConstants.KEY_MAX_SHORTCUTS + "=3"); @@ -8625,7 +8626,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testIsForegroundDefaultLauncher_true() { + public void disabled_testIsForegroundDefaultLauncher_true() { // random uid in the USER_10 range. final int uid = 1000024; @@ -8636,7 +8637,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { } - public void testIsForegroundDefaultLauncher_defaultButNotForeground() { + public void disabled_testIsForegroundDefaultLauncher_defaultButNotForeground() { // random uid in the USER_10 range. final int uid = 1000024; @@ -8646,7 +8647,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertFalse(mInternal.isForegroundDefaultLauncher("default", uid)); } - public void testIsForegroundDefaultLauncher_foregroundButNotDefault() { + public void disabled_testIsForegroundDefaultLauncher_foregroundButNotDefault() { // random uid in the USER_10 range. final int uid = 1000024; @@ -8656,7 +8657,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { assertFalse(mInternal.isForegroundDefaultLauncher("another", uid)); } - public void testParseShareTargetsFromManifest() { + public void disabled_testParseShareTargetsFromManifest() { // These values must exactly match the content of shortcuts_share_targets.xml resource List<ShareTargetInfo> expectedValues = new ArrayList<>(); expectedValues.add(new ShareTargetInfo( @@ -8774,7 +8775,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { } } - public void testIsSharingShortcut() throws IntentFilter.MalformedMimeTypeException { + public void disabled_testIsSharingShortcut() throws IntentFilter.MalformedMimeTypeException { addManifestShortcutResource( new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()), R.xml.shortcut_share_targets); @@ -8824,7 +8825,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { filter_any)); } - public void testIsSharingShortcut_PinnedAndCachedOnlyShortcuts() + public void disabled_testIsSharingShortcut_PinnedAndCachedOnlyShortcuts() throws IntentFilter.MalformedMimeTypeException { addManifestShortcutResource( new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()), @@ -8881,7 +8882,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { filter_any)); } - public void testAddingShortcuts_ExcludesHiddenFromLauncherShortcuts() { + public void disabled_testAddingShortcuts_ExcludesHiddenFromLauncherShortcuts() { final ShortcutInfo s1 = makeShortcutExcludedFromLauncher("s1"); final ShortcutInfo s2 = makeShortcutExcludedFromLauncher("s2"); final ShortcutInfo s3 = makeShortcutExcludedFromLauncher("s3"); @@ -8915,7 +8916,7 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { }); } - public void testPinHiddenShortcuts_ThrowsException() { + public void disabled_testPinHiddenShortcuts_ThrowsException() { runWithCaller(CALLING_PACKAGE_1, USER_10, () -> { assertThrown(IllegalArgumentException.class, () -> { mManager.requestPinShortcut(makeShortcutExcludedFromLauncher("s1"), null); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ConditionProvidersTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ConditionProvidersTest.java index b33233107766..6b989cb0aaee 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ConditionProvidersTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ConditionProvidersTest.java @@ -38,6 +38,7 @@ import android.os.IInterface; import android.platform.test.flag.junit.SetFlagsRule; import android.service.notification.Condition; +import com.android.internal.R; import com.android.server.UiServiceTestCase; import org.junit.Before; @@ -46,6 +47,8 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.List; + public class ConditionProvidersTest extends UiServiceTestCase { private ConditionProviders mProviders; @@ -169,4 +172,15 @@ public class ConditionProvidersTest extends UiServiceTestCase { assertTrue(mProviders.getApproved(userId, true).isEmpty()); } + + @Test + public void getDefaultDndAccessPackages_returnsPackages() { + mContext.getOrCreateTestableResources().addOverride( + R.string.config_defaultDndAccessPackages, + "com.example.a:com.example.b::::com.example.c"); + + List<String> packages = ConditionProviders.getDefaultDndAccessPackages(mContext); + + assertThat(packages).containsExactly("com.example.a", "com.example.b", "com.example.c"); + } } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenConfigTrimmerTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenConfigTrimmerTest.java new file mode 100644 index 000000000000..154a905c776b --- /dev/null +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenConfigTrimmerTest.java @@ -0,0 +1,124 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.notification; + +import static com.google.common.truth.Truth.assertThat; + +import android.os.Parcel; +import android.service.notification.ZenModeConfig; +import android.service.notification.ZenModeConfig.ZenRule; + +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import com.android.internal.R; +import com.android.server.UiServiceTestCase; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +public class ZenConfigTrimmerTest extends UiServiceTestCase { + + private static final String TRUSTED_PACKAGE = "com.trust.me"; + private static final int ONE_PERCENT = 1_500; + + private ZenConfigTrimmer mTrimmer; + + @Before + public void setUp() { + mContext.getOrCreateTestableResources().addOverride( + R.string.config_defaultDndAccessPackages, TRUSTED_PACKAGE); + + mTrimmer = new ZenConfigTrimmer(mContext); + } + + @Test + public void trimToMaximumSize_belowMax_untouched() { + ZenModeConfig config = new ZenModeConfig(); + addZenRule(config, "1", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "2", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "3", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "4", "pkg2", 20 * ONE_PERCENT); + addZenRule(config, "5", "pkg2", 20 * ONE_PERCENT); + + mTrimmer.trimToMaximumSize(config); + + assertThat(config.automaticRules.keySet()).containsExactly("1", "2", "3", "4", "5"); + } + + @Test + public void trimToMaximumSize_exceedsMax_removesAllRulesOfLargestPackages() { + ZenModeConfig config = new ZenModeConfig(); + addZenRule(config, "1", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "2", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "3", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "4", "pkg2", 20 * ONE_PERCENT); + addZenRule(config, "5", "pkg2", 20 * ONE_PERCENT); + addZenRule(config, "6", "pkg3", 35 * ONE_PERCENT); + addZenRule(config, "7", "pkg4", 38 * ONE_PERCENT); + + mTrimmer.trimToMaximumSize(config); + + assertThat(config.automaticRules.keySet()).containsExactly("1", "2", "3", "6"); + assertThat(config.automaticRules.values().stream().map(r -> r.pkg).distinct()) + .containsExactly("pkg1", "pkg3"); + } + + @Test + public void trimToMaximumSize_keepsRulesFromTrustedPackages() { + ZenModeConfig config = new ZenModeConfig(); + addZenRule(config, "1", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "2", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "3", "pkg1", 10 * ONE_PERCENT); + addZenRule(config, "4", TRUSTED_PACKAGE, 60 * ONE_PERCENT); + addZenRule(config, "5", "pkg2", 20 * ONE_PERCENT); + addZenRule(config, "6", "pkg3", 35 * ONE_PERCENT); + + mTrimmer.trimToMaximumSize(config); + + assertThat(config.automaticRules.keySet()).containsExactly("4", "5"); + assertThat(config.automaticRules.values().stream().map(r -> r.pkg).distinct()) + .containsExactly(TRUSTED_PACKAGE, "pkg2"); + } + + /** + * Create a ZenRule that, when serialized to a Parcel, will take <em>approximately</em> + * {@code desiredSize} bytes (within 100 bytes). Try to make the tests not rely on a very tight + * fit. + */ + private static void addZenRule(ZenModeConfig config, String id, String pkg, int desiredSize) { + ZenRule rule = new ZenRule(); + rule.id = id; + rule.pkg = pkg; + config.automaticRules.put(id, rule); + + // Make the ZenRule as large as desired. Not to the exact byte, because otherwise this + // test would have to be adjusted whenever we change the parceling of ZenRule in any way. + // (Still might need adjustment if we change the serialization _significantly_). + int nameLength = desiredSize - id.length() - pkg.length() - 232; + rule.name = "A".repeat(nameLength); + + Parcel verification = Parcel.obtain(); + try { + verification.writeParcelable(rule, 0); + assertThat(verification.dataSize()).isWithin(100).of(desiredSize); + } finally { + verification.recycle(); + } + } +} diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java index f8387a4c54cc..51891ef71bbd 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java @@ -90,6 +90,7 @@ import static com.android.os.dnd.DNDProtoEnums.PEOPLE_STARRED; import static com.android.os.dnd.DNDProtoEnums.ROOT_CONFIG; import static com.android.os.dnd.DNDProtoEnums.STATE_ALLOW; import static com.android.os.dnd.DNDProtoEnums.STATE_DISALLOW; +import static com.android.server.notification.Flags.FLAG_LIMIT_ZEN_CONFIG_SIZE; import static com.android.server.notification.Flags.FLAG_PREVENT_ZEN_DEVICE_EFFECTS_WHILE_DRIVING; import static com.android.server.notification.ZenModeEventLogger.ACTIVE_RULE_TYPE_MANUAL; import static com.android.server.notification.ZenModeHelper.RULE_LIMIT_PER_PACKAGE; @@ -236,6 +237,7 @@ import java.util.stream.Collectors; @SmallTest @SuppressLint("GuardedBy") // It's ok for this test to access guarded methods from the service. @RunWith(ParameterizedAndroidJunit4.class) +@EnableFlags(FLAG_LIMIT_ZEN_CONFIG_SIZE) // Should be parameterization, but off path does nothing. @TestableLooper.RunWithLooper public class ZenModeHelperTest extends UiServiceTestCase { @@ -7480,6 +7482,45 @@ public class ZenModeHelperTest extends UiServiceTestCase { assertThat(getZenRule(ruleId).lastActivation).isNull(); } + @Test + @EnableFlags(FLAG_LIMIT_ZEN_CONFIG_SIZE) + public void addAutomaticZenRule_trimsConfiguration() { + mZenModeHelper.mConfig.automaticRules.clear(); + AutomaticZenRule smallRule = new AutomaticZenRule.Builder("Reasonable", CONDITION_ID) + .setConfigurationActivity(new ComponentName(mPkg, "cls")) + .build(); + AutomaticZenRule systemRule = new AutomaticZenRule.Builder("System", CONDITION_ID) + .setOwner(new ComponentName("android", "ScheduleConditionProvider")) + .build(); + + AutomaticZenRule bigRule = new AutomaticZenRule.Builder("Yuge", CONDITION_ID) + .setConfigurationActivity(new ComponentName("evil.package", "cls")) + .setTriggerDescription("0123456789".repeat(6000)) // ~60k bytes utf16. + .build(); + + String systemRuleId = mZenModeHelper.addAutomaticZenRule(UserHandle.CURRENT, "android", + systemRule, ORIGIN_SYSTEM, "add", SYSTEM_UID); + String smallRuleId = mZenModeHelper.addAutomaticZenRule(UserHandle.CURRENT, mPkg, smallRule, + ORIGIN_APP, "add", CUSTOM_PKG_UID); + String bigRuleId1 = mZenModeHelper.addAutomaticZenRule(UserHandle.CURRENT, "evil.package", + bigRule, ORIGIN_APP, "add", CUSTOM_PKG_UID); + assertThat(mZenModeHelper.mConfig.automaticRules.keySet()).containsExactly( + systemRuleId, smallRuleId, bigRuleId1); + + String bigRuleId2 = mZenModeHelper.addAutomaticZenRule(UserHandle.CURRENT, "evil.package", + bigRule, ORIGIN_APP, "add", CUSTOM_PKG_UID); + assertThat(mZenModeHelper.mConfig.automaticRules.keySet()).containsExactly( + systemRuleId, smallRuleId, bigRuleId1, bigRuleId2); + + // This should go over the threshold + String bigRuleId3 = mZenModeHelper.addAutomaticZenRule(UserHandle.CURRENT, "evil.package", + bigRule, ORIGIN_APP, "add", CUSTOM_PKG_UID); + + // Rules from evil.package are gone. + assertThat(mZenModeHelper.mConfig.automaticRules.keySet()).containsExactly( + systemRuleId, smallRuleId); + } + private static void addZenRule(ZenModeConfig config, String id, String ownerPkg, int zenMode, @Nullable ZenPolicy zenPolicy) { ZenRule rule = new ZenRule(); diff --git a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java index d4be7f812cb5..51da5115c95a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/AppCompatCameraOverridesTest.java @@ -18,6 +18,7 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH; +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE; import static android.content.pm.ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA; @@ -231,6 +232,7 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) public void testShouldApplyCameraCompatFreeformTreatment_notEnabledByOverride_returnsFalse() { runTestScenario((robot) -> { robot.activity().createActivityWithComponentInNewTask(); @@ -240,21 +242,19 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { } @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION}) @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT}) - public void testShouldApplyCameraCompatFreeformTreatment_propertyFalse_returnsFalse() { + public void testShouldApplyCameraCompatFreeformTreatment_disablePropertyOn_returnsFalse() { runTestScenario((robot) -> { robot.activity().createActivityWithComponentInNewTask(); - robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION); - robot.checkShouldApplyFreeformTreatmentForCameraCompat(false); }); } @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + @EnableCompatChanges(OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT) @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) public void testShouldApplyCameraCompatFreeformTreatment_optOutFlagNotEnabled_optOutIgnored() { @@ -262,15 +262,31 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { robot.activity().createActivityWithComponentInNewTask(); robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION); + robot.activity().createActivityWithComponentInNewTask(); robot.checkShouldApplyFreeformTreatmentForCameraCompat(true); }); } @Test - @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, + FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT}) + public void testShouldApplyCameraCompatFreeformTreatment_optedOutViaProperty_returnsFalse() { + runTestScenario((robot) -> { + robot.activity().createActivityWithComponentInNewTask(); + + robot.prop().disable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION); + robot.activity().createActivityWithComponentInNewTask(); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(false); + }); + } + + @Test + @EnableCompatChanges(OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT) @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) - public void testShouldApplyCameraCompatFreeformTreatment_overrideAndFlagEnabled_returnsTrue() { + @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) + public void testShouldApplyCameraCompatFreeformTreatment_optInAndFlagEnabled_returnsTrue() { runTestScenario((robot) -> { robot.activity().createActivityWithComponentInNewTask(); @@ -278,6 +294,22 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { }); } + + @Test + @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, + FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT}) + public void testShouldApplyCameraCompatFreeformTreatment_notOptedOut_flagEnabled_returnsTrue() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatTreatment(true); + robot.applyOnActivity((a) -> { + a.createActivityWithComponentInNewTask(); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION); + }); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(true); + }); + } + @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) public void testShouldApplyCameraCompatFreeformTreatment_enabledByShellCommand_returnsTrue() { @@ -294,6 +326,8 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { @EnableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA, OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA, OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) + @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) public void testShouldRecomputeConfigurationForFreeformTreatment() { runTestScenario((robot) -> { robot.conf().enableCameraCompatSplitScreenAspectRatio(true); @@ -307,6 +341,24 @@ public class AppCompatCameraOverridesTest extends WindowTestsBase { } @Test + @EnableCompatChanges({OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA, + OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA}) + @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, + FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT}) + public void testShouldRecomputeConfigurationForFreeformTreatmentWithOptOutMechanism() { + runTestScenario((robot) -> { + robot.conf().enableCameraCompatSplitScreenAspectRatio(true); + robot.conf().enableCameraCompatTreatment(true); + robot.applyOnActivity((a) -> { + a.createActivityWithComponentInNewTask(); + robot.prop().enable(PROPERTY_CAMERA_COMPAT_ALLOW_SIMULATE_REQUESTED_ORIENTATION); + }); + + robot.checkShouldApplyFreeformTreatmentForCameraCompat(true); + }); + } + + @Test @EnableCompatChanges({OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA}) public void shouldOverrideMinAspectRatioForCamera_overrideEnabled_returnsTrue() { runTestScenario((robot) -> { diff --git a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java index 560725241853..50876c7a6758 100644 --- a/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/CameraCompatFreeformPolicyTests.java @@ -25,6 +25,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.servertransaction.ActivityLifecycleItem.ON_PAUSE; import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP; +import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION; import static android.content.pm.ActivityInfo.OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_FULL_USER; @@ -42,6 +43,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static com.android.server.wm.AppCompatConfiguration.MIN_FIXED_ORIENTATION_LETTERBOX_ASPECT_RATIO; import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING; +import static com.android.window.flags.Flags.FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -134,8 +136,10 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase { } @Test - @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) - public void testIsCameraRunningAndWindowingModeEligible_overrideDisabled_returnsFalse() { + @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, + FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT}) + @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_DISABLE_SIMULATE_REQUESTED_ORIENTATION}) + public void testIsCameraRunningAndWindowingModeEligible_disabledViaOverride_returnsFalse() { configureActivity(SCREEN_ORIENTATION_PORTRAIT); mCameraAvailabilityCallback.onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); @@ -165,6 +169,7 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase { @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) + @DisableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT) @EnableCompatChanges({OVERRIDE_CAMERA_COMPAT_ENABLE_FREEFORM_WINDOWING_TREATMENT}) public void testIsCameraRunningAndWindowingModeEligible_optInFreeformCameraRunning_true() { configureActivity(SCREEN_ORIENTATION_PORTRAIT); @@ -175,6 +180,17 @@ public class CameraCompatFreeformPolicyTests extends WindowTestsBase { } @Test + @EnableFlags({FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING, + FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING_OPT_OUT}) + public void testIsCameraRunningAndWindowingModeEligible_freeformCameraRunning_true() { + configureActivity(SCREEN_ORIENTATION_PORTRAIT); + + onCameraOpened(CAMERA_ID_1, TEST_PACKAGE_1); + + assertTrue(mCameraCompatFreeformPolicy.isCameraRunningAndWindowingModeEligible(mActivity)); + } + + @Test @EnableFlags(FLAG_ENABLE_CAMERA_COMPAT_FOR_DESKTOP_WINDOWING) public void testIsFreeformLetterboxingForCameraAllowed_overrideDisabled_returnsFalse() { configureActivity(SCREEN_ORIENTATION_PORTRAIT); diff --git a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java index d305c2f54456..3a06fff1d1a7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java @@ -49,6 +49,8 @@ import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier. import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; import android.app.ActivityOptions; import android.compat.testing.PlatformCompatChangeRule; @@ -98,7 +100,8 @@ public class DesktopModeLaunchParamsModifierTests extends mResult = new LaunchParamsController.LaunchParams(); mResult.reset(); - mTarget = new DesktopModeLaunchParamsModifier(mContext); + mTarget = spy(new DesktopModeLaunchParamsModifier(mContext)); + doReturn(true).when(mTarget).isEnteringDesktopMode(any(), any(), any()); } @Test @@ -137,6 +140,81 @@ public class DesktopModeLaunchParamsModifierTests extends } @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX}) + public void testReturnsSkipIfIsEnteringDesktopModeFalse() { + setupDesktopModeLaunchParamsModifier(); + when(mTarget.isEnteringDesktopMode(any(), any(), any())).thenReturn(false); + + final Task task = new TaskBuilder(mSupervisor).build(); + + assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(task).calculate()); + } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX}) + public void testReturnsContinueIfVisibleFreeformTaskExists() { + setupDesktopModeLaunchParamsModifier(); + when(mTarget.isEnteringDesktopMode(any(), any(), any())).thenCallRealMethod(); + + final DisplayContent dc = spy(createNewDisplay()); + final Task existingFreeformTask = new TaskBuilder(mSupervisor).setCreateActivity(true) + .setWindowingMode(WINDOWING_MODE_FREEFORM).build(); + doReturn(existingFreeformTask.getRootActivity()).when(dc) + .getTopMostVisibleFreeformActivity(); + final Task launchingTask = new TaskBuilder(mSupervisor).build(); + launchingTask.onDisplayChanged(dc); + + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setTask(launchingTask).calculate()); + } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX}) + public void testReturnsContinueIfTaskInFreeform() { + setupDesktopModeLaunchParamsModifier(); + when(mTarget.isEnteringDesktopMode(any(), any(), any())).thenCallRealMethod(); + + final Task task = new TaskBuilder(mSupervisor).setWindowingMode(WINDOWING_MODE_FREEFORM) + .build(); + + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setTask(task).calculate()); + } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX}) + public void testReturnsContinueIfFreeformRequestViaActivityOptions() { + setupDesktopModeLaunchParamsModifier(); + when(mTarget.isEnteringDesktopMode(any(), any(), any())).thenCallRealMethod(); + + final Task task = new TaskBuilder(mSupervisor).build(); + final ActivityOptions options = ActivityOptions.makeBasic(); + options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); + + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setTask(task).setOptions(options).calculate()); + } + + @Test + @EnableFlags({Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, + Flags.FLAG_DISABLE_DESKTOP_LAUNCH_PARAMS_OUTSIDE_DESKTOP_BUG_FIX}) + public void testReturnsContinueIfFreeformRequestViaPreviousModifier() { + setupDesktopModeLaunchParamsModifier(); + when(mTarget.isEnteringDesktopMode(any(), any(), any())).thenCallRealMethod(); + + final Task task = new TaskBuilder(mSupervisor).build(); + final ActivityOptions options = ActivityOptions.makeBasic(); + options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); + + assertEquals(RESULT_CONTINUE, + new CalculateRequestBuilder().setTask(task).setOptions(options).calculate()); + } + + @Test @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) public void testReturnsSkipIfNotBoundsPhase() { setupDesktopModeLaunchParamsModifier(); diff --git a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java index 45436e47e881..d3f3269392d8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java @@ -33,6 +33,7 @@ import android.os.Parcel; import android.platform.test.annotations.Presubmit; import android.view.Display.Mode; import android.view.Surface; +import android.view.WindowInsets; import android.view.WindowManager.LayoutParams; import androidx.test.filters.SmallTest; @@ -283,7 +284,7 @@ public class RefreshRatePolicyTest extends WindowTestsBase { assertEquals(0, mPolicy.getPreferredMinRefreshRate(overrideWindow), FLOAT_TOLERANCE); assertEquals(0, mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE); - overrideWindow.notifyInsetsAnimationRunningStateChanged(true); + overrideWindow.setAnimatingTypes(WindowInsets.Type.statusBars()); assertEquals(LOW_MODE_ID, mPolicy.getPreferredModeId(overrideWindow)); assertTrue(mPolicy.updateFrameRateVote(overrideWindow)); assertEquals(FRAME_RATE_VOTE_NONE, overrideWindow.mFrameRateVote); @@ -303,7 +304,7 @@ public class RefreshRatePolicyTest extends WindowTestsBase { assertEquals(0, mPolicy.getPreferredMinRefreshRate(overrideWindow), FLOAT_TOLERANCE); assertEquals(0, mPolicy.getPreferredMaxRefreshRate(overrideWindow), FLOAT_TOLERANCE); - overrideWindow.notifyInsetsAnimationRunningStateChanged(true); + overrideWindow.setAnimatingTypes(WindowInsets.Type.statusBars()); assertEquals(0, mPolicy.getPreferredModeId(overrideWindow)); assertTrue(mPolicy.updateFrameRateVote(overrideWindow)); assertEquals(FRAME_RATE_VOTE_NONE, overrideWindow.mFrameRateVote); diff --git a/telecomm/java/android/telecom/OWNERS b/telecomm/java/android/telecom/OWNERS index 6656a01403b8..0854c5d45603 100644 --- a/telecomm/java/android/telecom/OWNERS +++ b/telecomm/java/android/telecom/OWNERS @@ -3,4 +3,3 @@ rgreenwalt@google.com tgunn@google.com breadley@google.com -hallliu@google.com diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 6e0304b58489..fbba999bfb36 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -10579,9 +10579,19 @@ public class TelephonyManager { public boolean hasCarrierPrivileges(int subId) { try { ITelephony telephony = getITelephony(); - if (telephony != null) { - return telephony.getCarrierPrivilegeStatus(subId) - == CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; + if (telephony == null) { + Rlog.e(TAG, "hasCarrierPrivileges: no Telephony service"); + return false; + } + int status = telephony.getCarrierPrivilegeStatus(subId); + switch (status) { + case CARRIER_PRIVILEGE_STATUS_HAS_ACCESS: + return true; + case CARRIER_PRIVILEGE_STATUS_NO_ACCESS: + return false; + default: + Rlog.e(TAG, "hasCarrierPrivileges: " + status); + return false; } } catch (RemoteException ex) { Rlog.e(TAG, "hasCarrierPrivileges RemoteException", ex); diff --git a/tests/EnforcePermission/OWNERS b/tests/EnforcePermission/OWNERS index 39550a394f33..160849e5616f 100644 --- a/tests/EnforcePermission/OWNERS +++ b/tests/EnforcePermission/OWNERS @@ -1,3 +1,2 @@ # Bug component: 315013 tweek@google.com -brufino@google.com diff --git a/tools/aapt2/Android.bp b/tools/aapt2/Android.bp index f43cf521edf5..43d5b7165f06 100644 --- a/tools/aapt2/Android.bp +++ b/tools/aapt2/Android.bp @@ -113,6 +113,7 @@ cc_library_host_static { "io/ZipArchive.cpp", "link/AutoVersioner.cpp", "link/FeatureFlagsFilter.cpp", + "link/FlaggedXmlVersioner.cpp", "link/FlagDisabledResourceRemover.cpp", "link/ManifestFixer.cpp", "link/NoDefaultResourceRemover.cpp", diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp index fb576df248be..9e2a4c1b1cc2 100644 --- a/tools/aapt2/ResourceParser.cpp +++ b/tools/aapt2/ResourceParser.cpp @@ -547,7 +547,8 @@ bool ResourceParser::ParseResource(xml::XmlPullParser* parser, }); std::string_view resource_type = parser->element_name(); - if (auto flag = ParseFlag(xml::FindAttribute(parser, xml::kSchemaAndroid, "featureFlag"))) { + if (auto flag = + ParseFlag(xml::FindAttribute(parser, xml::kSchemaAndroid, xml::kAttrFeatureFlag))) { if (options_.flag) { diag_->Error(android::DiagMessage(source_.WithLine(parser->line_number())) << "Resource flag are not allowed both in the path and in the file"); @@ -1529,7 +1530,7 @@ bool ResourceParser::ParseStyleItem(xml::XmlPullParser* parser, Style* style) { ResolvePackage(parser, &maybe_key.value()); maybe_key.value().SetSource(source); - auto flag = ParseFlag(xml::FindAttribute(parser, xml::kSchemaAndroid, "featureFlag")); + auto flag = ParseFlag(xml::FindAttribute(parser, xml::kSchemaAndroid, xml::kAttrFeatureFlag)); std::unique_ptr<Item> value = ParseXml(parser, 0, kAllowRawString); if (!value) { @@ -1674,7 +1675,7 @@ bool ResourceParser::ParseArrayImpl(xml::XmlPullParser* parser, const std::string& element_namespace = parser->element_namespace(); const std::string& element_name = parser->element_name(); if (element_namespace.empty() && element_name == "item") { - auto flag = ParseFlag(xml::FindAttribute(parser, xml::kSchemaAndroid, "featureFlag")); + auto flag = ParseFlag(xml::FindAttribute(parser, xml::kSchemaAndroid, xml::kAttrFeatureFlag)); std::unique_ptr<Item> item = ParseXml(parser, typeMask, kNoRawString); if (!item) { diag_->Error(android::DiagMessage(item_source) << "could not parse array item"); diff --git a/tools/aapt2/cmd/Link.cpp b/tools/aapt2/cmd/Link.cpp index 0a5cb1ff4956..2a7921600477 100644 --- a/tools/aapt2/cmd/Link.cpp +++ b/tools/aapt2/cmd/Link.cpp @@ -58,6 +58,7 @@ #include "java/ProguardRules.h" #include "link/FeatureFlagsFilter.h" #include "link/FlagDisabledResourceRemover.h" +#include "link/FlaggedXmlVersioner.h" #include "link/Linkers.h" #include "link/ManifestFixer.h" #include "link/NoDefaultResourceRemover.h" @@ -503,10 +504,19 @@ std::vector<std::unique_ptr<xml::XmlResource>> ResourceFileFlattener::LinkAndVer const ConfigDescription& config = file_op->config; ResourceEntry* entry = file_op->entry; + FlaggedXmlVersioner flagged_xml_versioner; + auto flag_split_resources = flagged_xml_versioner.Process(context_, doc); + + std::vector<std::unique_ptr<xml::XmlResource>> final_resources; XmlCompatVersioner xml_compat_versioner(&rules_); const util::Range<ApiVersion> api_range{config.sdkVersion, FindNextApiVersionForConfig(entry, config)}; - return xml_compat_versioner.Process(context_, doc, api_range); + for (auto& split_res : flag_split_resources) { + auto inner_resources = xml_compat_versioner.Process(context_, split_res.get(), api_range); + final_resources.insert(final_resources.end(), std::make_move_iterator(inner_resources.begin()), + std::make_move_iterator(inner_resources.end())); + } + return final_resources; } ResourceFile::Type XmlFileTypeForOutputFormat(OutputFormat format) { diff --git a/tools/aapt2/link/FeatureFlagsFilter.cpp b/tools/aapt2/link/FeatureFlagsFilter.cpp index 23f78388b930..74066a37e8ac 100644 --- a/tools/aapt2/link/FeatureFlagsFilter.cpp +++ b/tools/aapt2/link/FeatureFlagsFilter.cpp @@ -51,7 +51,7 @@ class FlagsVisitor : public xml::Visitor { private: bool ShouldRemove(std::unique_ptr<xml::Node>& node) { if (auto* el = NodeCast<Element>(node.get())) { - auto* attr = el->FindAttribute(xml::kSchemaAndroid, "featureFlag"); + auto* attr = el->FindAttribute(xml::kSchemaAndroid, xml::kAttrFeatureFlag); if (attr == nullptr) { return false; } @@ -76,7 +76,7 @@ class FlagsVisitor : public xml::Visitor { // Remove if flag==true && attr=="!flag" (negated) OR flag==false && attr=="flag" bool remove = *it->second.enabled == negated; if (!remove) { - el->RemoveAttribute(xml::kSchemaAndroid, "featureFlag"); + el->RemoveAttribute(xml::kSchemaAndroid, xml::kAttrFeatureFlag); } return remove; } diff --git a/tools/aapt2/link/FlaggedResources_test.cpp b/tools/aapt2/link/FlaggedResources_test.cpp index 7bea96c26990..dbef77615515 100644 --- a/tools/aapt2/link/FlaggedResources_test.cpp +++ b/tools/aapt2/link/FlaggedResources_test.cpp @@ -163,7 +163,7 @@ TEST_F(FlaggedResourcesTest, EnabledXmlELementAttributeRemoved) { auto loaded_apk = LoadedApk::LoadApkFromPath(apk_path, &noop_diag); std::string output; - DumpXmlTreeToString(loaded_apk.get(), "res/layout-v22/layout1.xml", &output); + DumpXmlTreeToString(loaded_apk.get(), "res/layout-v36/layout1.xml", &output); ASSERT_FALSE(output.contains("test.package.trueFlag")); ASSERT_TRUE(output.contains("FIND_ME")); ASSERT_TRUE(output.contains("test.package.readWriteFlag")); diff --git a/tools/aapt2/link/FlaggedXmlVersioner.cpp b/tools/aapt2/link/FlaggedXmlVersioner.cpp new file mode 100644 index 000000000000..75c6f17dcb51 --- /dev/null +++ b/tools/aapt2/link/FlaggedXmlVersioner.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "link/FlaggedXmlVersioner.h" + +#include "SdkConstants.h" +#include "androidfw/Util.h" + +using ::aapt::xml::Element; +using ::aapt::xml::NodeCast; + +namespace aapt { + +// An xml visitor that goes through the a doc and removes any elements that are behind non-negated +// flags. It also removes the featureFlag attribute from elements behind negated flags. +class AllDisabledFlagsVisitor : public xml::Visitor { + public: + void Visit(xml::Element* node) override { + std::erase_if(node->children, [this](const std::unique_ptr<xml::Node>& node) { + return FixupOrShouldRemove(node); + }); + VisitChildren(node); + } + + bool HadFlags() const { + return had_flags_; + } + + private: + bool FixupOrShouldRemove(const std::unique_ptr<xml::Node>& node) { + if (auto* el = NodeCast<Element>(node.get())) { + auto* attr = el->FindAttribute(xml::kSchemaAndroid, xml::kAttrFeatureFlag); + if (attr == nullptr) { + return false; + } + + had_flags_ = true; + // This class assumes all flags are disabled so we want to remove any elements behind flags + // unless the flag specification is negated. In the negated case we remove the featureFlag + // attribute because we have already determined whether we are keeping the element or not. + std::string_view flag_name = util::TrimWhitespace(attr->value); + if (flag_name.starts_with('!')) { + el->RemoveAttribute(xml::kSchemaAndroid, xml::kAttrFeatureFlag); + return false; + } else { + return true; + } + } + + return false; + } + + bool had_flags_ = false; +}; + +std::vector<std::unique_ptr<xml::XmlResource>> FlaggedXmlVersioner::Process(IAaptContext* context, + xml::XmlResource* doc) { + std::vector<std::unique_ptr<xml::XmlResource>> docs; + if ((static_cast<ApiVersion>(doc->file.config.sdkVersion) >= SDK_BAKLAVA) || + (static_cast<ApiVersion>(context->GetMinSdkVersion()) >= SDK_BAKLAVA)) { + // Support for read/write flags was added in baklava so if the doc will only get used on + // baklava or later we can just return the original doc. + docs.push_back(doc->Clone()); + } else { + auto preBaklavaVersion = doc->Clone(); + AllDisabledFlagsVisitor visitor; + preBaklavaVersion->root->Accept(&visitor); + docs.push_back(std::move(preBaklavaVersion)); + + if (visitor.HadFlags()) { + auto baklavaVersion = doc->Clone(); + baklavaVersion->file.config.sdkVersion = SDK_BAKLAVA; + docs.push_back(std::move(baklavaVersion)); + } + } + return docs; +} + +} // namespace aapt
\ No newline at end of file diff --git a/tools/aapt2/link/FlaggedXmlVersioner.h b/tools/aapt2/link/FlaggedXmlVersioner.h new file mode 100644 index 000000000000..44ed266602f6 --- /dev/null +++ b/tools/aapt2/link/FlaggedXmlVersioner.h @@ -0,0 +1,42 @@ +/* + * Copyright 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include <memory> +#include <vector> + +#include "process/IResourceTableConsumer.h" +#include "xml/XmlDom.h" + +namespace aapt { + +// FlaggedXmlVersioner takes an XmlResource and checks if any elements have read write android +// flags on them. If the doc doesn't refer to any such flags the returned vector only contains +// the original doc. +// +// Read/write flags within xml resources files is only supported in android baklava and later. If +// the config resource specifies a version that is baklava or later it returns a vector containing +// the original XmlResource. Otherwise FlaggedXmlVersioner creates a version of the doc where all +// flags are assumed disabled and the config version is the same as the original doc, if specified. +// It also creates an XmlResource where the contents are the same as the original doc and the config +// version is baklava. The returned vector is composed of these two new docs. +class FlaggedXmlVersioner { + public: + std::vector<std::unique_ptr<xml::XmlResource>> Process(IAaptContext* context, + xml::XmlResource* doc); +}; +} // namespace aapt
\ No newline at end of file diff --git a/tools/aapt2/link/FlaggedXmlVersioner_test.cpp b/tools/aapt2/link/FlaggedXmlVersioner_test.cpp new file mode 100644 index 000000000000..0c1314f165cc --- /dev/null +++ b/tools/aapt2/link/FlaggedXmlVersioner_test.cpp @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "link/FlaggedXmlVersioner.h" + +#include "Debug.h" +#include "SdkConstants.h" +#include "io/StringStream.h" +#include "test/Test.h" + +using ::aapt::test::ValueEq; +using ::testing::Eq; +using ::testing::IsNull; +using ::testing::NotNull; +using ::testing::Pointee; +using ::testing::SizeIs; + +namespace aapt { + +class FlaggedXmlVersionerTest : public ::testing::Test { + public: + void SetUp() override { + context_ = test::ContextBuilder() + .SetCompilationPackage("com.app") + .SetPackageId(0x7f) + .SetPackageType(PackageType::kApp) + .Build(); + } + + protected: + std::unique_ptr<IAaptContext> context_; +}; + +static void PrintDocToString(xml::XmlResource* doc, std::string* out) { + io::StringOutputStream stream(out, 1024u); + text::Printer printer(&stream); + Debug::DumpXml(*doc, &printer); + stream.Flush(); +} + +TEST_F(FlaggedXmlVersionerTest, NoFlagReturnsOriginal) { + auto doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView /> + <TextView /> + <TextView /> + </LinearLayout>)"); + doc->file.config.sdkVersion = SDK_GINGERBREAD; + + FlaggedXmlVersioner versioner; + auto results = versioner.Process(context_.get(), doc.get()); + EXPECT_THAT(results.size(), Eq(1)); + EXPECT_THAT(results[0]->file.config.sdkVersion, Eq(SDK_GINGERBREAD)); + + std::string expected; + PrintDocToString(doc.get(), &expected); + std::string actual; + PrintDocToString(results[0].get(), &actual); + + EXPECT_THAT(actual, Eq(expected)); +} + +TEST_F(FlaggedXmlVersionerTest, AlreadyBaklavaReturnsOriginal) { + auto doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView android:featureFlag="package.flag" /> + <TextView /> + <TextView /> + </LinearLayout>)"); + doc->file.config.sdkVersion = SDK_BAKLAVA; + + FlaggedXmlVersioner versioner; + auto results = versioner.Process(context_.get(), doc.get()); + EXPECT_THAT(results.size(), Eq(1)); + EXPECT_THAT(results[0]->file.config.sdkVersion, Eq(SDK_BAKLAVA)); + + std::string expected; + PrintDocToString(doc.get(), &expected); + std::string actual; + PrintDocToString(results[0].get(), &actual); + + EXPECT_THAT(actual, Eq(expected)); +} + +TEST_F(FlaggedXmlVersionerTest, PreBaklavaGetsSplit) { + auto doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView android:featureFlag="package.flag" /><TextView /><TextView /> + </LinearLayout>)"); + doc->file.config.sdkVersion = SDK_GINGERBREAD; + + FlaggedXmlVersioner versioner; + auto results = versioner.Process(context_.get(), doc.get()); + EXPECT_THAT(results.size(), Eq(2)); + EXPECT_THAT(results[0]->file.config.sdkVersion, Eq(SDK_GINGERBREAD)); + EXPECT_THAT(results[1]->file.config.sdkVersion, Eq(SDK_BAKLAVA)); + + auto gingerbread_doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView /><TextView /> + </LinearLayout>)"); + + std::string expected0; + PrintDocToString(gingerbread_doc.get(), &expected0); + std::string actual0; + PrintDocToString(results[0].get(), &actual0); + EXPECT_THAT(actual0, Eq(expected0)); + + std::string expected1; + PrintDocToString(doc.get(), &expected1); + std::string actual1; + PrintDocToString(results[1].get(), &actual1); + EXPECT_THAT(actual1, Eq(expected1)); +} + +TEST_F(FlaggedXmlVersionerTest, NoVersionGetsSplit) { + auto doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView android:featureFlag="package.flag" /><TextView /><TextView /> + </LinearLayout>)"); + + FlaggedXmlVersioner versioner; + auto results = versioner.Process(context_.get(), doc.get()); + EXPECT_THAT(results.size(), Eq(2)); + EXPECT_THAT(results[0]->file.config.sdkVersion, Eq(0)); + EXPECT_THAT(results[1]->file.config.sdkVersion, Eq(SDK_BAKLAVA)); + + auto gingerbread_doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView /><TextView /> + </LinearLayout>)"); + + std::string expected0; + PrintDocToString(gingerbread_doc.get(), &expected0); + std::string actual0; + PrintDocToString(results[0].get(), &actual0); + EXPECT_THAT(actual0, Eq(expected0)); + + std::string expected1; + PrintDocToString(doc.get(), &expected1); + std::string actual1; + PrintDocToString(results[1].get(), &actual1); + EXPECT_THAT(actual1, Eq(expected1)); +} + +TEST_F(FlaggedXmlVersionerTest, NegatedFlagAttributeRemoved) { + auto doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView android:featureFlag="!package.flag" /><TextView /><TextView /> + </LinearLayout>)"); + doc->file.config.sdkVersion = SDK_GINGERBREAD; + + FlaggedXmlVersioner versioner; + auto results = versioner.Process(context_.get(), doc.get()); + EXPECT_THAT(results.size(), Eq(2)); + EXPECT_THAT(results[0]->file.config.sdkVersion, Eq(SDK_GINGERBREAD)); + EXPECT_THAT(results[1]->file.config.sdkVersion, Eq(SDK_BAKLAVA)); + + auto gingerbread_doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView /><TextView /><TextView /> + </LinearLayout>)"); + + std::string expected0; + PrintDocToString(gingerbread_doc.get(), &expected0); + std::string actual0; + PrintDocToString(results[0].get(), &actual0); + EXPECT_THAT(actual0, Eq(expected0)); + + std::string expected1; + PrintDocToString(doc.get(), &expected1); + std::string actual1; + PrintDocToString(results[1].get(), &actual1); + EXPECT_THAT(actual1, Eq(expected1)); +} + +TEST_F(FlaggedXmlVersionerTest, NegatedFlagAttributeRemovedNoSpecifiedVersion) { + auto doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView android:featureFlag="!package.flag" /><TextView /><TextView /> + </LinearLayout>)"); + + FlaggedXmlVersioner versioner; + auto results = versioner.Process(context_.get(), doc.get()); + EXPECT_THAT(results.size(), Eq(2)); + EXPECT_THAT(results[0]->file.config.sdkVersion, Eq(0)); + EXPECT_THAT(results[1]->file.config.sdkVersion, Eq(SDK_BAKLAVA)); + + auto gingerbread_doc = test::BuildXmlDomForPackageName(context_.get(), R"( + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> + <TextView /><TextView /><TextView /> + </LinearLayout>)"); + + std::string expected0; + PrintDocToString(gingerbread_doc.get(), &expected0); + std::string actual0; + PrintDocToString(results[0].get(), &actual0); + EXPECT_THAT(actual0, Eq(expected0)); + + std::string expected1; + PrintDocToString(doc.get(), &expected1); + std::string actual1; + PrintDocToString(results[1].get(), &actual1); + EXPECT_THAT(actual1, Eq(expected1)); +} + +} // namespace aapt
\ No newline at end of file diff --git a/tools/aapt2/xml/XmlUtil.h b/tools/aapt2/xml/XmlUtil.h index ad676ca91886..789f6a05510b 100644 --- a/tools/aapt2/xml/XmlUtil.h +++ b/tools/aapt2/xml/XmlUtil.h @@ -30,6 +30,7 @@ constexpr const char* kSchemaPrivatePrefix = "http://schemas.android.com/apk/prv constexpr const char* kSchemaAndroid = "http://schemas.android.com/apk/res/android"; constexpr const char* kSchemaTools = "http://schemas.android.com/tools"; constexpr const char* kSchemaAapt = "http://schemas.android.com/aapt"; +constexpr const char* kAttrFeatureFlag = "featureFlag"; // Result of extracting a package name from a namespace URI declaration. struct ExtractedPackage { diff --git a/tools/hiddenapi/OWNERS b/tools/hiddenapi/OWNERS index dc82aac9d41c..d1e36b953e7f 100644 --- a/tools/hiddenapi/OWNERS +++ b/tools/hiddenapi/OWNERS @@ -1,6 +1,5 @@ # compat-team@ for changes to hiddenapi files mathewi@google.com -satayev@google.com # soong-team@ as the files these tools protect are tightly coupled with Soong file:platform/build/soong:/OWNERS |