Disable unused display area features
The amount of DisplayArea keeps growing.
Currently there are 51 areas by default.
The FEATURE_FULLSCREEN_MAGNIFICATION wasn't used for 4 years.
By disabling it, the amount is reduced from 51 to 38, which reduces
the overhead of traversal, configuration propagation and memory usage.
Bug: 154719717
Flag: EXEMPT skip unused initialization.
Test: atest WmTests:DisplayAreaPolicyBuilderTest# \
testBuilder_defaultPolicy_hasMagnificationFeature
Change-Id: Ib24ebe737aec271b9cf2e01425d01bc071a3c91d
diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
index 5bec442..4b30a43 100644
--- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
@@ -53,6 +53,12 @@
* Policy that manages {@link DisplayArea}.
*/
public abstract class DisplayAreaPolicy {
+ /**
+ * No corresponding use case yet (see b/154719717). The current implementation still uses
+ * {@link WindowState#shouldMagnify}.
+ */
+ static final boolean USE_DISPLAY_AREA_FOR_FULLSCREEN_MAGNIFICATION = false;
+
protected final WindowManagerService mWmService;
/**
@@ -161,14 +167,17 @@
TYPE_STATUS_BAR, TYPE_NOTIFICATION_SHADE, TYPE_WALLPAPER)
.build());
}
+ if (USE_DISPLAY_AREA_FOR_FULLSCREEN_MAGNIFICATION) {
+ rootHierarchy.addFeature(
+ new Feature.Builder(wmService.mPolicy, "FullscreenMagnification",
+ FEATURE_FULLSCREEN_MAGNIFICATION)
+ .all()
+ .except(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, TYPE_INPUT_METHOD,
+ TYPE_INPUT_METHOD_DIALOG, TYPE_MAGNIFICATION_OVERLAY,
+ TYPE_NAVIGATION_BAR, TYPE_NAVIGATION_BAR_PANEL)
+ .build());
+ }
rootHierarchy
- .addFeature(new Feature.Builder(wmService.mPolicy, "FullscreenMagnification",
- FEATURE_FULLSCREEN_MAGNIFICATION)
- .all()
- .except(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, TYPE_INPUT_METHOD,
- TYPE_INPUT_METHOD_DIALOG, TYPE_MAGNIFICATION_OVERLAY,
- TYPE_NAVIGATION_BAR, TYPE_NAVIGATION_BAR_PANEL)
- .build())
.addFeature(new Feature.Builder(wmService.mPolicy, "ImePlaceholder",
FEATURE_IME_PLACEHOLDER)
.and(TYPE_INPUT_METHOD, TYPE_INPUT_METHOD_DIALOG)
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
index 22e411e..3f3b24a 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java
@@ -202,7 +202,7 @@
}
@Test
- public void testBuilder_defaultPolicy_hasWindowedMagnificationFeature() {
+ public void testBuilder_defaultPolicy_hasMagnificationFeature() {
final DisplayAreaPolicy.Provider defaultProvider = DisplayAreaPolicy.Provider.fromResources(
resourcesWithProvider(""));
final DisplayAreaPolicyBuilder.Result defaultPolicy =
@@ -210,28 +210,16 @@
mRoot, mImeContainer);
final List<Feature> features = defaultPolicy.getFeatures();
boolean hasWindowedMagnificationFeature = false;
- for (Feature feature : features) {
- hasWindowedMagnificationFeature |= feature.getId() == FEATURE_WINDOWED_MAGNIFICATION;
- }
-
- assertThat(hasWindowedMagnificationFeature).isTrue();
- }
-
- @Test
- public void testBuilder_defaultPolicy_hasFullscreenMagnificationFeature() {
- final DisplayAreaPolicy.Provider defaultProvider = DisplayAreaPolicy.Provider.fromResources(
- resourcesWithProvider(""));
- final DisplayAreaPolicyBuilder.Result defaultPolicy =
- (DisplayAreaPolicyBuilder.Result) defaultProvider.instantiate(mWms, mDisplayContent,
- mRoot, mImeContainer);
- final List<Feature> features = defaultPolicy.getFeatures();
boolean hasFullscreenMagnificationFeature = false;
for (Feature feature : features) {
+ hasWindowedMagnificationFeature |= feature.getId() == FEATURE_WINDOWED_MAGNIFICATION;
hasFullscreenMagnificationFeature |=
feature.getId() == FEATURE_FULLSCREEN_MAGNIFICATION;
}
- assertThat(hasFullscreenMagnificationFeature).isTrue();
+ assertThat(hasWindowedMagnificationFeature).isTrue();
+ assertThat(hasFullscreenMagnificationFeature).isEqualTo(
+ DisplayAreaPolicy.USE_DISPLAY_AREA_FOR_FULLSCREEN_MAGNIFICATION);
}
@Test