Fix no features emitting.
Fix no features emitting by emitting if they are present. Ignore emitting features if the current state is not valid. No features are emitted on registration because consumers are not registered to the source. The following tests ar fixed ExtensionWindowLayoutComponent#testDisplayFeatures ExtensionWindowLayoutComponentTest#testSidecarHasSameDisplayFeatures ExtensionWindowLayoutComponentTest#testGetWindowLayoutInfo_windowRecreated_windowLayoutUpdates ExtensionWindowLayoutComponentTest#testGetWindowLayoutInfo_configChanged_windowLayoutUpdates ExtensionWindowLayoutComponentTest#testGetWindowLayoutInfo_windowRecreated_windowLayoutUpdates Bug: 232354881 Test: atest CtsWindowManagerJetpackTestCases:ExtensionWindowLayoutComponent Change-Id: Ia1f7631576bad0bbefdca0fea3308973c5514056
This commit is contained in:
@@ -199,7 +199,7 @@ public final class CommonFoldingFeature {
|
||||
throw new IllegalArgumentException(
|
||||
"Display feature rectangle cannot have zero width and height simultaneously.");
|
||||
}
|
||||
this.mRect = rect;
|
||||
this.mRect = new Rect(rect);
|
||||
}
|
||||
|
||||
/** Returns the type of the feature. */
|
||||
@@ -217,7 +217,7 @@ public final class CommonFoldingFeature {
|
||||
/** Returns the bounds of the feature. */
|
||||
@NonNull
|
||||
public Rect getRect() {
|
||||
return mRect;
|
||||
return new Rect(mRect);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -166,6 +166,9 @@ public final class DeviceStateManagerFoldingFeatureProducer
|
||||
}
|
||||
|
||||
private void notifyFoldingFeatureChange(String displayFeaturesString) {
|
||||
if (!isCurrentStateValid()) {
|
||||
return;
|
||||
}
|
||||
if (TextUtils.isEmpty(displayFeaturesString)) {
|
||||
notifyDataChanged(new ArrayList<>());
|
||||
} else {
|
||||
|
||||
@@ -79,6 +79,11 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
|
||||
*/
|
||||
public void addWindowLayoutInfoListener(@NonNull Activity activity,
|
||||
@NonNull Consumer<WindowLayoutInfo> consumer) {
|
||||
mFoldingFeatureProducer.getData((features) -> {
|
||||
// Get the WindowLayoutInfo from the activity and pass the value to the layoutConsumer.
|
||||
WindowLayoutInfo newWindowLayout = getWindowLayoutInfo(activity, features);
|
||||
consumer.accept(newWindowLayout);
|
||||
});
|
||||
mWindowLayoutChangeListeners.put(activity, consumer);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user