Merge "Revert "Making ScreenOnUnblocked and ScreenOffUnblocked public""
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 6d42bb8..712ac94 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -393,6 +393,8 @@
}
public static final class R.bool {
+ field public static final int config_enableDefaultNotes;
+ field public static final int config_enableDefaultNotesForWorkProfile;
field public static final int config_enableQrCodeScannerOnLockScreen = 17891336; // 0x1110008
field public static final int config_safetyProtectionEnabled;
field public static final int config_sendPackageName = 17891328; // 0x1110000
@@ -429,6 +431,7 @@
field public static final int config_defaultCallRedirection = 17039397; // 0x1040025
field public static final int config_defaultCallScreening = 17039398; // 0x1040026
field public static final int config_defaultDialer = 17039395; // 0x1040023
+ field public static final int config_defaultNotes;
field public static final int config_defaultSms = 17039396; // 0x1040024
field public static final int config_devicePolicyManagement = 17039421; // 0x104003d
field public static final int config_feedbackIntentExtraKey = 17039391; // 0x104001f
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 184f869..2310367 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2135,6 +2135,12 @@
<string name="config_defaultAutomotiveNavigation" translatable="false"></string>
<!-- The name of the package that will hold the system wear health service role. -->
<string name="config_systemWearHealthService" translatable="false"></string>
+ <!-- The name of the package that will hold the default notes role. -->
+ <string name="config_defaultNotes" translatable="false"></string>
+ <!-- Whether the default notes role should be enabled. -->
+ <bool name="config_enableDefaultNotes">false</bool>
+ <!-- Whether the default notes role for work profile should be enabled. -->
+ <bool name="config_enableDefaultNotesForWorkProfile">false</bool>
<!-- The name of the package that will handle updating the device management role. -->
<string name="config_devicePolicyManagementUpdater" translatable="false"></string>
diff --git a/core/res/res/values/public-staging.xml b/core/res/res/values/public-staging.xml
index 97feaac..dfd4d9a 100644
--- a/core/res/res/values/public-staging.xml
+++ b/core/res/res/values/public-staging.xml
@@ -139,6 +139,8 @@
<staging-public-group type="string" first-id="0x01cb0000">
<!-- @hide @SystemApi -->
<public name="config_systemWearHealthService" />
+ <!-- @hide @SystemApi -->
+ <public name="config_defaultNotes" />
</staging-public-group>
<staging-public-group type="dimen" first-id="0x01ca0000">
@@ -182,6 +184,10 @@
<staging-public-group type="bool" first-id="0x01be0000">
<!-- @hide @SystemApi -->
<public name="config_safetyProtectionEnabled" />
+ <!-- @hide @SystemApi -->
+ <public name="config_enableDefaultNotes" />
+ <!-- @hide @SystemApi -->
+ <public name="config_enableDefaultNotesForWorkProfile" />
</staging-public-group>
<staging-public-group type="fraction" first-id="0x01bd0000">
diff --git a/libs/WindowManager/Jetpack/Android.bp b/libs/WindowManager/Jetpack/Android.bp
index a5b192c..dc4b563 100644
--- a/libs/WindowManager/Jetpack/Android.bp
+++ b/libs/WindowManager/Jetpack/Android.bp
@@ -63,12 +63,6 @@
sdk_version: "current",
}
-android_library_import {
- name: "window-extensions-core",
- aars: ["window-extensions-core-release.aar"],
- sdk_version: "current",
-}
-
java_library {
name: "androidx.window.extensions",
srcs: [
@@ -76,10 +70,7 @@
"src/androidx/window/util/**/*.java",
"src/androidx/window/common/**/*.java",
],
- static_libs: [
- "window-extensions",
- "window-extensions-core",
- ],
+ static_libs: ["window-extensions"],
installable: true,
sdk_version: "core_platform",
system_ext_specific: true,
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index 54474ae..ce7d695 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -75,10 +75,7 @@
import androidx.annotation.Nullable;
import androidx.window.common.CommonFoldingFeature;
import androidx.window.common.EmptyLifecycleCallbacksAdapter;
-import androidx.window.extensions.WindowExtensionsImpl;
import androidx.window.extensions.WindowExtensionsProvider;
-import androidx.window.extensions.core.util.function.Consumer;
-import androidx.window.extensions.core.util.function.Function;
import androidx.window.extensions.embedding.TransactionManager.TransactionRecord;
import androidx.window.extensions.layout.WindowLayoutComponentImpl;
@@ -89,6 +86,7 @@
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executor;
+import java.util.function.Consumer;
/**
* Main controller class that manages split states and presentation.
@@ -114,7 +112,7 @@
/**
* A developer-defined {@link SplitAttributes} calculator to compute the current
* {@link SplitAttributes} with the current device and window states.
- * It is registered via {@link #setSplitAttributesCalculator(Function)}
+ * It is registered via {@link #setSplitAttributesCalculator(SplitAttributesCalculator)}
* and unregistered via {@link #clearSplitAttributesCalculator()}.
* This is called when:
* <ul>
@@ -127,7 +125,7 @@
*/
@GuardedBy("mLock")
@Nullable
- private Function<SplitAttributesCalculatorParams, SplitAttributes> mSplitAttributesCalculator;
+ private SplitAttributesCalculator mSplitAttributesCalculator;
/**
* Map from Task id to {@link TaskContainer} which contains all TaskFragment and split pair info
@@ -140,7 +138,6 @@
final SparseArray<TaskContainer> mTaskContainers = new SparseArray<>();
/** Callback to Jetpack to notify about changes to split states. */
- @GuardedBy("mLock")
@Nullable
private Consumer<List<SplitInfo>> mEmbeddingCallback;
private final List<SplitInfo> mLastReportedSplitStates = new ArrayList<>();
@@ -174,8 +171,7 @@
mWindowLayoutComponent.addFoldingStateChangedCallback(new FoldingFeatureListener());
}
- private class FoldingFeatureListener
- implements java.util.function.Consumer<List<CommonFoldingFeature>> {
+ private class FoldingFeatureListener implements Consumer<List<CommonFoldingFeature>> {
@Override
public void accept(List<CommonFoldingFeature> foldingFeatures) {
synchronized (mLock) {
@@ -216,8 +212,7 @@
}
@Override
- public void setSplitAttributesCalculator(
- @NonNull Function<SplitAttributesCalculatorParams, SplitAttributes> calculator) {
+ public void setSplitAttributesCalculator(@NonNull SplitAttributesCalculator calculator) {
synchronized (mLock) {
mSplitAttributesCalculator = calculator;
}
@@ -232,7 +227,7 @@
@GuardedBy("mLock")
@Nullable
- Function<SplitAttributesCalculatorParams, SplitAttributes> getSplitAttributesCalculator() {
+ SplitAttributesCalculator getSplitAttributesCalculator() {
return mSplitAttributesCalculator;
}
@@ -245,22 +240,9 @@
/**
* Registers the split organizer callback to notify about changes to active splits.
- * @deprecated Use {@link #setSplitInfoCallback(Consumer)} starting with
- * {@link WindowExtensionsImpl#getVendorApiLevel()} 2.
*/
- @Deprecated
@Override
- public void setSplitInfoCallback(
- @NonNull java.util.function.Consumer<List<SplitInfo>> callback) {
- Consumer<List<SplitInfo>> oemConsumer = callback::accept;
- setSplitInfoCallback(oemConsumer);
- }
-
- /**
- * Registers the split organizer callback to notify about changes to active splits.
- * @since {@link WindowExtensionsImpl#getVendorApiLevel()} 2
- */
- public void setSplitInfoCallback(Consumer<List<SplitInfo>> callback) {
+ public void setSplitInfoCallback(@NonNull Consumer<List<SplitInfo>> callback) {
synchronized (mLock) {
mEmbeddingCallback = callback;
updateCallbackIfNecessary();
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index 41580a0..9db9f87 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -42,11 +42,11 @@
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.window.extensions.core.util.function.Function;
import androidx.window.extensions.embedding.SplitAttributes.SplitType;
import androidx.window.extensions.embedding.SplitAttributes.SplitType.ExpandContainersSplitType;
import androidx.window.extensions.embedding.SplitAttributes.SplitType.HingeSplitType;
import androidx.window.extensions.embedding.SplitAttributes.SplitType.RatioSplitType;
+import androidx.window.extensions.embedding.SplitAttributesCalculator.SplitAttributesCalculatorParams;
import androidx.window.extensions.embedding.TaskContainer.TaskProperties;
import androidx.window.extensions.layout.DisplayFeature;
import androidx.window.extensions.layout.FoldingFeature;
@@ -522,8 +522,7 @@
@NonNull SplitRule rule, @Nullable Pair<Size, Size> minDimensionsPair) {
final Configuration taskConfiguration = taskProperties.getConfiguration();
final WindowMetrics taskWindowMetrics = getTaskWindowMetrics(taskConfiguration);
- final Function<SplitAttributesCalculatorParams, SplitAttributes> calculator =
- mController.getSplitAttributesCalculator();
+ final SplitAttributesCalculator calculator = mController.getSplitAttributesCalculator();
final SplitAttributes defaultSplitAttributes = rule.getDefaultSplitAttributes();
final boolean isDefaultMinSizeSatisfied = rule.checkParentMetrics(taskWindowMetrics);
if (calculator == null) {
@@ -539,7 +538,7 @@
final SplitAttributesCalculatorParams params = new SplitAttributesCalculatorParams(
taskWindowMetrics, taskConfiguration, defaultSplitAttributes,
isDefaultMinSizeSatisfied, windowLayoutInfo, rule.getTag());
- final SplitAttributes splitAttributes = calculator.apply(params);
+ final SplitAttributes splitAttributes = calculator.computeSplitAttributesForParams(params);
return sanitizeSplitAttributes(taskProperties, splitAttributes, minDimensionsPair);
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/layout/WindowLayoutComponentImpl.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/layout/WindowLayoutComponentImpl.java
index 32b915c..84b2bfc 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/layout/WindowLayoutComponentImpl.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/layout/WindowLayoutComponentImpl.java
@@ -44,7 +44,6 @@
import androidx.window.common.DeviceStateManagerFoldingFeatureProducer;
import androidx.window.common.EmptyLifecycleCallbacksAdapter;
import androidx.window.common.RawFoldingFeatureProducer;
-import androidx.window.extensions.core.util.function.Consumer;
import androidx.window.util.DataProducer;
import java.util.ArrayList;
@@ -52,6 +51,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.function.Consumer;
/**
* Reference implementation of androidx.window.extensions.layout OEM interface for use with
@@ -80,10 +80,6 @@
private final Map<IBinder, ConfigurationChangeListener> mConfigurationChangeListeners =
new ArrayMap<>();
- @GuardedBy("mLock")
- private final Map<java.util.function.Consumer<WindowLayoutInfo>, Consumer<WindowLayoutInfo>>
- mJavaToExtConsumers = new ArrayMap<>();
-
public WindowLayoutComponentImpl(@NonNull Context context) {
((Application) context.getApplicationContext())
.registerActivityLifecycleCallbacks(new NotifyOnConfigurationChanged());
@@ -94,8 +90,7 @@
}
/** Registers to listen to {@link CommonFoldingFeature} changes */
- public void addFoldingStateChangedCallback(
- java.util.function.Consumer<List<CommonFoldingFeature>> consumer) {
+ public void addFoldingStateChangedCallback(Consumer<List<CommonFoldingFeature>> consumer) {
synchronized (mLock) {
mFoldingFeatureProducer.addDataChangedCallback(consumer);
}
@@ -109,17 +104,13 @@
*/
@Override
public void addWindowLayoutInfoListener(@NonNull Activity activity,
- @NonNull java.util.function.Consumer<WindowLayoutInfo> consumer) {
- final Consumer<WindowLayoutInfo> extConsumer = consumer::accept;
- synchronized (mLock) {
- mJavaToExtConsumers.put(consumer, extConsumer);
- }
- addWindowLayoutInfoListener(activity, extConsumer);
+ @NonNull Consumer<WindowLayoutInfo> consumer) {
+ addWindowLayoutInfoListener((Context) activity, consumer);
}
/**
- * Similar to {@link #addWindowLayoutInfoListener(Activity, java.util.function.Consumer)}, but
- * takes a UI Context as a parameter.
+ * Similar to {@link #addWindowLayoutInfoListener(Activity, Consumer)}, but takes a UI Context
+ * as a parameter.
*
* Jetpack {@link androidx.window.layout.ExtensionWindowLayoutInfoBackend} makes sure all
* consumers related to the same {@link Context} gets updated {@link WindowLayoutInfo}
@@ -160,18 +151,6 @@
}
}
- @Override
- public void removeWindowLayoutInfoListener(
- @NonNull java.util.function.Consumer<WindowLayoutInfo> consumer) {
- final Consumer<WindowLayoutInfo> extConsumer;
- synchronized (mLock) {
- extConsumer = mJavaToExtConsumers.remove(consumer);
- }
- if (extConsumer != null) {
- removeWindowLayoutInfoListener(extConsumer);
- }
- }
-
/**
* Removes a listener no longer interested in receiving updates.
*
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java
index 459ec9f..2f92a57 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/EmbeddingTestUtils.java
@@ -34,11 +34,9 @@
import android.graphics.Point;
import android.graphics.Rect;
import android.util.Pair;
-import android.view.WindowMetrics;
import android.window.TaskFragmentInfo;
import android.window.WindowContainerToken;
-import androidx.window.extensions.core.util.function.Predicate;
import androidx.window.extensions.embedding.SplitAttributes.SplitType;
import androidx.window.extensions.layout.DisplayFeature;
import androidx.window.extensions.layout.FoldingFeature;
@@ -109,7 +107,7 @@
static SplitRule createSplitRule(@NonNull Activity primaryActivity,
@NonNull Intent secondaryIntent, boolean clearTop) {
final Pair<Activity, Intent> targetPair = new Pair<>(primaryActivity, secondaryIntent);
- return createSplitPairRuleBuilder(
+ return new SplitPairRule.Builder(
activityPair -> false,
targetPair::equals,
w -> true)
@@ -146,7 +144,7 @@
@NonNull Activity secondaryActivity, int finishPrimaryWithSecondary,
int finishSecondaryWithPrimary, boolean clearTop) {
final Pair<Activity, Activity> targetPair = new Pair<>(primaryActivity, secondaryActivity);
- return createSplitPairRuleBuilder(
+ return new SplitPairRule.Builder(
targetPair::equals,
activityIntentPair -> false,
w -> true)
@@ -225,26 +223,4 @@
displayFeatures.add(foldingFeature);
return new WindowLayoutInfo(displayFeatures);
}
-
- static ActivityRule.Builder createActivityBuilder(
- @NonNull Predicate<Activity> activityPredicate,
- @NonNull Predicate<Intent> intentPredicate) {
- return new ActivityRule.Builder(activityPredicate, intentPredicate);
- }
-
- static SplitPairRule.Builder createSplitPairRuleBuilder(
- @NonNull Predicate<Pair<Activity, Activity>> activitiesPairPredicate,
- @NonNull Predicate<Pair<Activity, Intent>> activityIntentPairPredicate,
- @NonNull Predicate<WindowMetrics> windowMetricsPredicate) {
- return new SplitPairRule.Builder(activitiesPairPredicate, activityIntentPairPredicate,
- windowMetricsPredicate);
- }
-
- static SplitPlaceholderRule.Builder createSplitPlaceholderRuleBuilder(
- @NonNull Intent placeholderIntent, @NonNull Predicate<Activity> activityPredicate,
- @NonNull Predicate<Intent> intentPredicate,
- @NonNull Predicate<WindowMetrics> windowMetricsPredicate) {
- return new SplitPlaceholderRule.Builder(placeholderIntent, activityPredicate,
- intentPredicate, windowMetricsPredicate);
- }
}
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java
index f9cbb5c..3cc31f9 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitControllerTest.java
@@ -34,11 +34,8 @@
import static androidx.window.extensions.embedding.EmbeddingTestUtils.TASK_BOUNDS;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.TASK_ID;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.TEST_TAG;
-import static androidx.window.extensions.embedding.EmbeddingTestUtils.createActivityBuilder;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createActivityInfoWithMinDimensions;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createMockTaskFragmentInfo;
-import static androidx.window.extensions.embedding.EmbeddingTestUtils.createSplitPairRuleBuilder;
-import static androidx.window.extensions.embedding.EmbeddingTestUtils.createSplitPlaceholderRuleBuilder;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createSplitRule;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createTestTaskContainer;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.getSplitBounds;
@@ -432,7 +429,7 @@
@Test
public void testResolveStartActivityIntent_withoutLaunchingActivity() {
final Intent intent = new Intent();
- final ActivityRule expandRule = createActivityBuilder(r -> false, i -> i == intent)
+ final ActivityRule expandRule = new ActivityRule.Builder(r -> false, i -> i == intent)
.setShouldAlwaysExpand(true)
.build();
mSplitController.setEmbeddingRules(Collections.singleton(expandRule));
@@ -1170,7 +1167,7 @@
@Test
public void testHasSamePresentation() {
- SplitPairRule splitRule1 = createSplitPairRuleBuilder(
+ SplitPairRule splitRule1 = new SplitPairRule.Builder(
activityPair -> true,
activityIntentPair -> true,
windowMetrics -> true)
@@ -1178,7 +1175,7 @@
.setFinishPrimaryWithSecondary(DEFAULT_FINISH_PRIMARY_WITH_SECONDARY)
.setDefaultSplitAttributes(SPLIT_ATTRIBUTES)
.build();
- SplitPairRule splitRule2 = createSplitPairRuleBuilder(
+ SplitPairRule splitRule2 = new SplitPairRule.Builder(
activityPair -> true,
activityIntentPair -> true,
windowMetrics -> true)
@@ -1191,7 +1188,7 @@
SplitController.haveSamePresentation(splitRule1, splitRule2,
new WindowMetrics(TASK_BOUNDS, WindowInsets.CONSUMED)));
- splitRule2 = createSplitPairRuleBuilder(
+ splitRule2 = new SplitPairRule.Builder(
activityPair -> true,
activityIntentPair -> true,
windowMetrics -> true)
@@ -1355,7 +1352,7 @@
/** Setups a rule to always expand the given intent. */
private void setupExpandRule(@NonNull Intent expandIntent) {
- final ActivityRule expandRule = createActivityBuilder(r -> false, expandIntent::equals)
+ final ActivityRule expandRule = new ActivityRule.Builder(r -> false, expandIntent::equals)
.setShouldAlwaysExpand(true)
.build();
mSplitController.setEmbeddingRules(Collections.singleton(expandRule));
@@ -1363,7 +1360,7 @@
/** Setups a rule to always expand the given activity. */
private void setupExpandRule(@NonNull Activity expandActivity) {
- final ActivityRule expandRule = createActivityBuilder(expandActivity::equals, i -> false)
+ final ActivityRule expandRule = new ActivityRule.Builder(expandActivity::equals, i -> false)
.setShouldAlwaysExpand(true)
.build();
mSplitController.setEmbeddingRules(Collections.singleton(expandRule));
@@ -1371,7 +1368,7 @@
/** Setups a rule to launch placeholder for the given activity. */
private void setupPlaceholderRule(@NonNull Activity primaryActivity) {
- final SplitRule placeholderRule = createSplitPlaceholderRuleBuilder(PLACEHOLDER_INTENT,
+ final SplitRule placeholderRule = new SplitPlaceholderRule.Builder(PLACEHOLDER_INTENT,
primaryActivity::equals, i -> false, w -> true)
.setDefaultSplitAttributes(SPLIT_ATTRIBUTES)
.build();
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java
index cbb6e31..6dae0a1 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java
@@ -27,7 +27,6 @@
import static androidx.window.extensions.embedding.EmbeddingTestUtils.TASK_ID;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createActivityInfoWithMinDimensions;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createMockTaskFragmentInfo;
-import static androidx.window.extensions.embedding.EmbeddingTestUtils.createSplitPairRuleBuilder;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createSplitRule;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.createWindowLayoutInfo;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.getSplitBounds;
@@ -474,7 +473,7 @@
final Activity secondaryActivity = createMockActivity();
final TaskFragmentContainer bottomTf = mController.newContainer(secondaryActivity, TASK_ID);
final TaskFragmentContainer primaryTf = mController.newContainer(mActivity, TASK_ID);
- final SplitPairRule rule = createSplitPairRuleBuilder(pair ->
+ final SplitPairRule rule = new SplitPairRule.Builder(pair ->
pair.first == mActivity && pair.second == secondaryActivity, pair -> false,
metrics -> true)
.setDefaultSplitAttributes(SPLIT_ATTRIBUTES)
@@ -492,7 +491,7 @@
@Test
public void testComputeSplitAttributes() {
- final SplitPairRule splitPairRule = createSplitPairRuleBuilder(
+ final SplitPairRule splitPairRule = new SplitPairRule.Builder(
activityPair -> true,
activityIntentPair -> true,
windowMetrics -> windowMetrics.getBounds().equals(TASK_BOUNDS))
diff --git a/libs/WindowManager/Jetpack/window-extensions-core-release.aar b/libs/WindowManager/Jetpack/window-extensions-core-release.aar
deleted file mode 100644
index 4c08074..0000000
--- a/libs/WindowManager/Jetpack/window-extensions-core-release.aar
+++ /dev/null
Binary files differ
diff --git a/libs/WindowManager/Jetpack/window-extensions-release.aar b/libs/WindowManager/Jetpack/window-extensions-release.aar
index 6fd8d29..4978e04 100644
--- a/libs/WindowManager/Jetpack/window-extensions-release.aar
+++ b/libs/WindowManager/Jetpack/window-extensions-release.aar
Binary files differ
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 2845916..8508878 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -1368,7 +1368,7 @@
<string name="user_add_user_message_long">You can share this device with other people by creating additional users. Each user has their own space, which they can customize with apps, wallpaper, and so on. Users can also adjust device settings like Wi\u2011Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user.</string>
<!-- Message for add user confirmation dialog - short version. [CHAR LIMIT=none] -->
<string name="user_add_user_message_short">When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. </string>
- <!-- Title for grant user admin privileges dialog [CHAR LIMIT=30] -->
+ <!-- Title for grant user admin privileges dialog [CHAR LIMIT=65] -->
<string name="user_grant_admin_title">Give this user admin privileges?</string>
<!-- Message for grant admin privileges dialog. [CHAR LIMIT=none] -->
<string name="user_grant_admin_message">As an admin, they will be able to manage other users, modify device settings and factory reset the device.</string>
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index b3f8af5..81fbd78 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -4281,6 +4281,7 @@
if (mContexts == null) {
mContexts = new ArrayList<>(1);
}
+ mContexts.add(new FillContext(requestId, new AssistStructure(), mCurrentViewId));
if (inlineSuggestionsRequest != null && !inlineSuggestionsRequest.isClientSupported()) {
inlineSuggestionsRequest = null;
diff --git a/services/core/java/com/android/server/infra/AbstractMasterSystemService.java b/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
index b813995..3ae699b 100644
--- a/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
+++ b/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
@@ -684,6 +684,16 @@
*/
@GuardedBy("mLock")
protected List<S> updateCachedServiceListLocked(@UserIdInt int userId, boolean disabled) {
+ if (mServiceNameResolver != null
+ && mServiceNameResolver.isConfiguredInMultipleMode()) {
+ // In multiple mode, we have multiple instances of AbstractPerUserSystemService, per
+ // user where each instance holds information needed to connect to a backend. An
+ // update operation in this mode needs to account for addition, deletion, change
+ // of backends and cannot be executed in the scope of a given
+ // AbstractPerUserSystemService.
+ return updateCachedServiceListMultiModeLocked(userId, disabled);
+ }
+ // isConfiguredInMultipleMode is false
final List<S> services = getServiceListForUserLocked(userId);
if (services == null) {
return null;
@@ -704,6 +714,19 @@
return services;
}
+ @GuardedBy("mLock")
+ private List<S> updateCachedServiceListMultiModeLocked(int userId, boolean disabled) {
+ final int resolvedUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), userId, false, false, null,
+ null);
+ List<S> services = new ArrayList<>();
+ synchronized (mLock) {
+ removeCachedServiceListLocked(resolvedUserId);
+ services = getServiceListForUserLocked(userId);
+ }
+ return services;
+ }
+
/**
* Gets the Settings property that defines the name of the component name used to bind this
* service to an external service, or {@code null} when the service is not defined by such
diff --git a/services/core/java/com/android/server/infra/AbstractPerUserSystemService.java b/services/core/java/com/android/server/infra/AbstractPerUserSystemService.java
index ddb19f0..af025c0 100644
--- a/services/core/java/com/android/server/infra/AbstractPerUserSystemService.java
+++ b/services/core/java/com/android/server/infra/AbstractPerUserSystemService.java
@@ -154,7 +154,14 @@
if (mMaster.mServiceNameResolver != null
&& mMaster.mServiceNameResolver.isConfiguredInMultipleMode()) {
- updateServiceInfoListLocked();
+ // Update of multi configured mode should always happen in AbstractMasterSystemService
+ // as this class is not aware of the complete list of multiple backends. Since we
+ // should never end up in this state, it is safe to not do anything if we end up here
+ // through a different code path.
+ if (mMaster.debug) {
+ Slog.d(mTag, "Should not end up in updateLocked when "
+ + "isConfiguredInMultipleMode is true");
+ }
} else {
updateServiceInfoLocked();
}