diff options
| author | 2023-01-03 22:56:24 +0000 | |
|---|---|---|
| committer | 2023-01-03 22:56:24 +0000 | |
| commit | b5e10e8d837e629012d622750fa479f422698d34 (patch) | |
| tree | eff23d7f7a719912ea53e53f9c2344b098318684 | |
| parent | d55869f9de43a55705f0f93e9fec701fa296aa09 (diff) | |
| parent | f9701b65e377c1424313cf79b1b1c391de64e870 (diff) | |
Merge "Revert "Update Window Extensions library APIs"" into tm-qpr-dev am: f9701b65e3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20848944
Change-Id: I2ed152ab6d38fe516b8e9002e249bbbb9b90fe20
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
9 files changed, 28 insertions, 105 deletions
diff --git a/libs/WindowManager/Jetpack/Android.bp b/libs/WindowManager/Jetpack/Android.bp index a5b192cd7ceb..dc4b5636a246 100644 --- a/libs/WindowManager/Jetpack/Android.bp +++ b/libs/WindowManager/Jetpack/Android.bp @@ -63,12 +63,6 @@ android_library_import { 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 @@ java_library { "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 85812ea3d72d..1af1313f0bbb 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.NonNull; 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.List; 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 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen /** * 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 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen */ @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 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen 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 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen 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 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen } @Override - public void setSplitAttributesCalculator( - @NonNull Function<SplitAttributesCalculatorParams, SplitAttributes> calculator) { + public void setSplitAttributesCalculator(@NonNull SplitAttributesCalculator calculator) { synchronized (mLock) { mSplitAttributesCalculator = calculator; } @@ -232,7 +227,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen @GuardedBy("mLock") @Nullable - Function<SplitAttributesCalculatorParams, SplitAttributes> getSplitAttributesCalculator() { + SplitAttributesCalculator getSplitAttributesCalculator() { return mSplitAttributesCalculator; } @@ -245,22 +240,9 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen /** * 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 41580a097ec4..9db9f8788190 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 android.window.WindowContainerTransaction; 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 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { @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 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer { 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 32b915cb49f7..84b2bfc38559 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.CommonFoldingFeature; 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.Collections; 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 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent { 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 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent { } /** 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 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent { */ @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 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent { } } - @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 459ec9f89c4a..2f92a577baa2 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.content.res.Resources; 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 @@ public class EmbeddingTestUtils { 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 @@ public class EmbeddingTestUtils { @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 @@ public class EmbeddingTestUtils { 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 f9cbb5c65877..3cc31f9761c1 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.SPLIT_ATTR 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 @@ public class SplitControllerTest { @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 @@ public class SplitControllerTest { @Test public void testHasSamePresentation() { - SplitPairRule splitRule1 = createSplitPairRuleBuilder( + SplitPairRule splitRule1 = new SplitPairRule.Builder( activityPair -> true, activityIntentPair -> true, windowMetrics -> true) @@ -1178,7 +1175,7 @@ public class SplitControllerTest { .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 @@ public class SplitControllerTest { 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 @@ public class SplitControllerTest { /** 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 @@ public class SplitControllerTest { /** 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 @@ public class SplitControllerTest { /** 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 cbb6e31512db..6dae0a1086b3 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_BOUND 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 @@ public class SplitPresenterTest { 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 @@ public class SplitPresenterTest { @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 Binary files differdeleted file mode 100644 index 4c0807441870..000000000000 --- a/libs/WindowManager/Jetpack/window-extensions-core-release.aar +++ /dev/null diff --git a/libs/WindowManager/Jetpack/window-extensions-release.aar b/libs/WindowManager/Jetpack/window-extensions-release.aar Binary files differindex 6fd8d296733a..4978e04e0115 100644 --- a/libs/WindowManager/Jetpack/window-extensions-release.aar +++ b/libs/WindowManager/Jetpack/window-extensions-release.aar |