summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrii Kulian <akulian@google.com>2020-01-26 20:59:07 -0800
committerAndrii Kulian <akulian@google.com>2020-01-31 01:15:21 +0000
commite57f2dc246532d54229046d319d7b907b23288b3 (patch)
treedbb2b0b84814f0fffaf7b80f4c94c4820dfbf2bf
parentea325634d3c465817c48f31ad2d5b047661128a6 (diff)
Exempt-From-Owner-Approval: Fix usages of WindowManager.getDefaultDisplay() in f/b
Replace the existing usages of now-deprecated API WindowManager.getDefaultDisplay() with WindowMetrics or Context.getDisplay() in frameworks/base. Bug: 128338354 Test: Build, auto test Change-Id: I02d38a022c5e0e6e9d699f03d35b65d6c8126da9
-rw-r--r--core/java/android/app/TaskEmbedder.java11
-rw-r--r--core/java/android/app/WindowContext.java2
-rw-r--r--core/java/android/content/Context.java15
-rw-r--r--core/java/android/hardware/camera2/CameraManager.java1
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java18
-rw-r--r--core/java/android/os/RecoverySystem.java4
-rw-r--r--core/java/android/view/ViewConfiguration.java9
-rw-r--r--core/java/android/view/autofill/AutofillPopupWindow.java11
-rw-r--r--core/java/com/android/internal/view/FloatingActionMode.java4
-rw-r--r--core/java/com/android/internal/view/menu/MenuPopupHelper.java11
-rw-r--r--core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java9
-rw-r--r--core/tests/coretests/src/android/content/ContextTest.java1
-rw-r--r--core/tests/coretests/src/android/util/GridScenario.java2
-rw-r--r--core/tests/coretests/src/android/util/ListScenario.java2
-rw-r--r--core/tests/coretests/src/android/util/ScrollViewScenario.java2
-rw-r--r--core/tests/coretests/src/android/view/BigCache.java7
-rw-r--r--core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java23
-rw-r--r--core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java8
-rw-r--r--core/tests/coretests/src/android/view/menu/ContextMenuTest.java13
-rw-r--r--core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java5
-rw-r--r--core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java5
-rw-r--r--core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java3
-rw-r--r--core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java4
-rwxr-xr-xmedia/java/android/mtp/MtpDatabase.java1
-rw-r--r--media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java9
-rw-r--r--packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java21
-rw-r--r--packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java23
-rw-r--r--packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java5
-rw-r--r--packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java20
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java4
-rw-r--r--services/core/java/com/android/server/audio/RotationHelper.java1
-rw-r--r--services/core/java/com/android/server/backup/SystemBackupAgent.java1
-rw-r--r--services/core/java/com/android/server/display/OverlayDisplayWindow.java3
-rw-r--r--services/core/java/com/android/server/wm/AccessibilityController.java17
-rw-r--r--services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java2
-rw-r--r--services/java/com/android/server/SystemServer.java4
-rw-r--r--test-runner/src/android/test/TouchUtils.java3
-rw-r--r--tests/GamePerformance/src/android/gameperformance/BaseTest.java5
-rw-r--r--tests/GamePerformance/src/android/gameperformance/CustomControlView.java17
-rw-r--r--tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java2
-rw-r--r--tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java25
-rw-r--r--tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java4
42 files changed, 166 insertions, 171 deletions
diff --git a/core/java/android/app/TaskEmbedder.java b/core/java/android/app/TaskEmbedder.java
index 93b1ea84adf7..761b225a7cdc 100644
--- a/core/java/android/app/TaskEmbedder.java
+++ b/core/java/android/app/TaskEmbedder.java
@@ -48,7 +48,6 @@ import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.SurfaceControl;
-import android.view.WindowManager;
import android.view.WindowManagerGlobal;
import android.view.inputmethod.InputMethodManager;
@@ -131,6 +130,7 @@ public class TaskEmbedder {
private TaskStackListener mTaskStackListener;
private Listener mListener;
private boolean mOpened; // Protected by mGuard.
+ private DisplayMetrics mTmpDisplayMetrics;
private final CloseGuard mGuard = CloseGuard.get();
@@ -594,10 +594,11 @@ public class TaskEmbedder {
/** Get density of the hosting display. */
private int getBaseDisplayDensity() {
- final WindowManager wm = mContext.getSystemService(WindowManager.class);
- final DisplayMetrics metrics = new DisplayMetrics();
- wm.getDefaultDisplay().getMetrics(metrics);
- return metrics.densityDpi;
+ if (mTmpDisplayMetrics == null) {
+ mTmpDisplayMetrics = new DisplayMetrics();
+ }
+ mContext.getDisplay().getMetrics(mTmpDisplayMetrics);
+ return mTmpDisplayMetrics.densityDpi;
}
/**
diff --git a/core/java/android/app/WindowContext.java b/core/java/android/app/WindowContext.java
index a0d1c8c1d562..36ae450d342b 100644
--- a/core/java/android/app/WindowContext.java
+++ b/core/java/android/app/WindowContext.java
@@ -32,7 +32,7 @@ import android.view.WindowManagerImpl;
* windows. Its resources and configuration are adjusted to the area of the display that will be
* used when a new window is added via {@link android.view.WindowManager.addView}.
*
- * @see Context#createWindowContext(int)
+ * @see Context#createWindowContext(int, Bundle)
* @hide
*/
// TODO(b/128338354): Handle config/display changes from server side.
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 3208c00dad2e..4c5faf784d51 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -5732,14 +5732,13 @@ public abstract class Context {
* shared, however common state (ClassLoader, other Resources for the
* same configuration) may be so the Context itself can be fairly lightweight.
*
- * The returned display Context provides a {@link WindowManager}
- * (see {@link #getSystemService(String)}) that is configured to show windows
- * on the given display. The WindowManager's {@link WindowManager#getDefaultDisplay}
- * method can be used to retrieve the Display from the returned Context.
- *
- * @param display A {@link Display} object specifying the display
- * for whose metrics the Context's resources should be tailored and upon which
- * new windows should be shown.
+ * To obtain an instance of a {@link WindowManager} (see {@link #getSystemService(String)}) that
+ * is configured to show windows on the given display call
+ * {@link #createWindowContext(int, Bundle)} on the returned display Context or use an
+ * {@link android.app.Activity}.
+ *
+ * @param display A {@link Display} object specifying the display for whose metrics the
+ * Context's resources should be tailored.
*
* @return A {@link Context} for the display.
*/
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index 9ee56a928d81..c5b9a43fb523 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -316,6 +316,7 @@ public final class CameraManager {
CameraManagerGlobal.get().unregisterTorchCallback(callback);
}
+ // TODO(b/147726300): Investigate how to support foldables/multi-display devices.
private Size getDisplaySize() {
Size ret = new Size(0, 0);
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 92047dcad09e..da9cc8a47a39 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -16,7 +16,6 @@
package android.inputmethodservice;
-import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import static android.view.ViewRootImpl.NEW_INSETS_MODE_NONE;
@@ -52,7 +51,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
-import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.SystemClock;
@@ -64,6 +62,7 @@ import android.text.method.MovementMethod;
import android.util.Log;
import android.util.PrintWriterPrinter;
import android.util.Printer;
+import android.util.Size;
import android.view.Gravity;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
@@ -560,12 +559,10 @@ public class InputMethodService extends AbstractInputMethodService {
@Override
public void updateInputMethodDisplay(int displayId) {
// Update display for adding IME window to the right display.
- if (displayId != DEFAULT_DISPLAY) {
- // TODO(b/111364446) Need to address context lifecycle issue if need to re-create
- // for update resources & configuration correctly when show soft input
- // in non-default display.
- updateDisplay(displayId);
- }
+ // TODO(b/111364446) Need to address context lifecycle issue if need to re-create
+ // for update resources & configuration correctly when show soft input
+ // in non-default display.
+ updateDisplay(displayId);
}
/**
@@ -1466,8 +1463,9 @@ public class InputMethodService extends AbstractInputMethodService {
* screen orientation changes.
*/
public int getMaxWidth() {
- WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
- return wm.getDefaultDisplay().getWidth();
+ final WindowManager windowManager = getSystemService(WindowManager.class);
+ final Size windowSize = windowManager.getCurrentWindowMetrics().getSize();
+ return windowSize.getWidth();
}
/**
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index cdcb3ff94264..be2245820bb6 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -41,7 +41,6 @@ import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.Display;
-import android.view.WindowManager;
import libcore.io.Streams;
@@ -615,8 +614,7 @@ public class RecoverySystem {
// On TV, reboot quiescently if the screen is off
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)) {
- WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- if (wm.getDefaultDisplay().getState() != Display.STATE_ON) {
+ if (context.getDisplay().getState() != Display.STATE_ON) {
reason += ",quiescent";
}
}
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 774a2dea6311..f2f0d114653d 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -28,6 +28,7 @@ import android.os.Build;
import android.os.RemoteException;
import android.provider.Settings;
import android.util.DisplayMetrics;
+import android.util.Size;
import android.util.SparseArray;
/**
@@ -398,11 +399,9 @@ public class ViewConfiguration {
mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f);
// Size of the screen in bytes, in ARGB_8888 format
- final WindowManager win = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
- final Display display = win.getDefaultDisplay();
- final Point size = new Point();
- display.getRealSize(size);
- mMaximumDrawingCacheSize = 4 * size.x * size.y;
+ final WindowManager windowManager = context.getSystemService(WindowManager.class);
+ final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize();
+ mMaximumDrawingCacheSize = 4 * maxWindowSize.getWidth() * maxWindowSize.getHeight();
mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f);
mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f);
diff --git a/core/java/android/view/autofill/AutofillPopupWindow.java b/core/java/android/view/autofill/AutofillPopupWindow.java
index 826620710b18..8d3dc83bca0c 100644
--- a/core/java/android/view/autofill/AutofillPopupWindow.java
+++ b/core/java/android/view/autofill/AutofillPopupWindow.java
@@ -19,13 +19,13 @@ package android.view.autofill;
import static android.view.autofill.Helper.sVerbose;
import android.annotation.NonNull;
-import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.IBinder;
import android.os.RemoteException;
import android.transition.Transition;
import android.util.Log;
+import android.util.Size;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewTreeObserver;
@@ -127,11 +127,12 @@ public class AutofillPopupWindow extends PopupWindow {
// If it is not fullscreen height, put window at bottom. Computes absolute position.
// Note that we cannot easily change default gravity from Gravity.TOP to
// Gravity.BOTTOM because PopupWindow base class does not expose computeGravity().
- final Point outPoint = new Point();
- anchor.getContext().getDisplay().getSize(outPoint);
- width = outPoint.x;
+ final WindowManager windowManager = anchor.getContext()
+ .getSystemService(WindowManager.class);
+ final Size windowSize = windowManager.getCurrentWindowMetrics().getSize();
+ width = windowSize.getWidth();
if (height != LayoutParams.MATCH_PARENT) {
- offsetY = outPoint.y - height;
+ offsetY = windowSize.getHeight() - height;
}
actualAnchor = anchor;
} else if (virtualBounds != null) {
diff --git a/core/java/com/android/internal/view/FloatingActionMode.java b/core/java/com/android/internal/view/FloatingActionMode.java
index f9e98e7eb473..69b1609377b7 100644
--- a/core/java/com/android/internal/view/FloatingActionMode.java
+++ b/core/java/com/android/internal/view/FloatingActionMode.java
@@ -29,7 +29,6 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
-import android.view.WindowManager;
import android.widget.PopupWindow;
import com.android.internal.R;
@@ -211,8 +210,7 @@ public final class FloatingActionMode extends ActionMode {
}
private boolean isContentRectWithinBounds() {
- mContext.getSystemService(WindowManager.class)
- .getDefaultDisplay().getRealSize(mDisplaySize);
+ mContext.getDisplay().getRealSize(mDisplaySize);
mScreenRect.set(0, 0, mDisplaySize.x, mDisplaySize.y);
return intersectsClosed(mContentRectOnScreen, mScreenRect)
diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
index bac602509148..0aeaa47ba3d8 100644
--- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java
+++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
@@ -24,10 +24,12 @@ import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
+import android.util.Size;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
+import android.view.WindowMetrics;
import android.widget.PopupWindow.OnDismissListener;
import com.android.internal.view.menu.MenuPresenter.Callback;
@@ -224,13 +226,10 @@ public class MenuPopupHelper implements MenuHelper {
*/
@NonNull
private MenuPopup createPopup() {
- final WindowManager windowManager = (WindowManager) mContext.getSystemService(
- Context.WINDOW_SERVICE);
- final Display display = windowManager.getDefaultDisplay();
- final Point displaySize = new Point();
- display.getRealSize(displaySize);
+ final WindowManager windowManager = mContext.getSystemService(WindowManager.class);
+ final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize();
- final int smallestWidth = Math.min(displaySize.x, displaySize.y);
+ final int smallestWidth = Math.min(maxWindowSize.getWidth(), maxWindowSize.getHeight());
final int minSmallestWidthCascading = mContext.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.cascading_menus_min_smallest_width);
final boolean enableCascadingSubmenus = smallestWidth >= minSmallestWidthCascading;
diff --git a/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java b/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java
index 8a22aca6464d..a027f9eb3a4e 100644
--- a/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java
+++ b/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java
@@ -22,12 +22,12 @@ import android.app.NotificationManager;
import android.app.Service;
import android.content.Intent;
import android.graphics.Color;
-import android.graphics.Point;
import android.os.Handler;
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
import android.util.Log;
+import android.util.Size;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -108,16 +108,15 @@ public class TestService extends Service {
@Override
public void showApplicationOverlay() throws RemoteException {
final WindowManager wm = TestService.this.getSystemService(WindowManager.class);
- final Point size = new Point();
- wm.getDefaultDisplay().getSize(size);
+ final Size size = wm.getCurrentWindowMetrics().getSize();
final WindowManager.LayoutParams wmlp = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
- wmlp.width = size.x / 2;
- wmlp.height = size.y / 2;
+ wmlp.width = size.getWidth() / 2;
+ wmlp.height = size.getHeight() / 2;
wmlp.gravity = Gravity.CENTER | Gravity.LEFT;
wmlp.setTitle(TAG);
diff --git a/core/tests/coretests/src/android/content/ContextTest.java b/core/tests/coretests/src/android/content/ContextTest.java
index b1a54dcced46..f074233070d1 100644
--- a/core/tests/coretests/src/android/content/ContextTest.java
+++ b/core/tests/coretests/src/android/content/ContextTest.java
@@ -48,6 +48,7 @@ public class ContextTest {
assertEquals(testContext.getDisplay().getDisplayId(), testContext.getDisplayId());
}
+ // TODO(b/128338354): Re-visit this test after introducing WindowContext
@Test
public void testDisplayIdForDefaultDisplayContext() {
final Context testContext =
diff --git a/core/tests/coretests/src/android/util/GridScenario.java b/core/tests/coretests/src/android/util/GridScenario.java
index 0f1730e207d5..4809a213ab48 100644
--- a/core/tests/coretests/src/android/util/GridScenario.java
+++ b/core/tests/coretests/src/android/util/GridScenario.java
@@ -233,7 +233,7 @@ public abstract class GridScenario extends Activity {
// turn off title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
- mScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
+ mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
final Params params = new Params();
init(params);
diff --git a/core/tests/coretests/src/android/util/ListScenario.java b/core/tests/coretests/src/android/util/ListScenario.java
index 129484af75de..d4e5a438d855 100644
--- a/core/tests/coretests/src/android/util/ListScenario.java
+++ b/core/tests/coretests/src/android/util/ListScenario.java
@@ -306,7 +306,7 @@ public abstract class ListScenario extends Activity {
requestWindowFeature(Window.FEATURE_NO_TITLE);
- mScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
+ mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
final Params params = createParams();
init(params);
diff --git a/core/tests/coretests/src/android/util/ScrollViewScenario.java b/core/tests/coretests/src/android/util/ScrollViewScenario.java
index e9eb978805bf..2c0aa7362dfa 100644
--- a/core/tests/coretests/src/android/util/ScrollViewScenario.java
+++ b/core/tests/coretests/src/android/util/ScrollViewScenario.java
@@ -239,7 +239,7 @@ public abstract class ScrollViewScenario extends Activity {
// for test stability, turn off title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
- int screenHeight = getWindowManager().getDefaultDisplay().getHeight()
+ int screenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight()
- 25;
mLinearLayout = new LinearLayout(this);
mLinearLayout.setOrientation(LinearLayout.VERTICAL);
diff --git a/core/tests/coretests/src/android/view/BigCache.java b/core/tests/coretests/src/android/view/BigCache.java
index 6a1bcaaf2d00..e465a859218a 100644
--- a/core/tests/coretests/src/android/view/BigCache.java
+++ b/core/tests/coretests/src/android/view/BigCache.java
@@ -18,6 +18,7 @@ package android.view;
import android.app.Activity;
import android.os.Bundle;
+import android.util.Size;
import android.widget.LinearLayout;
import android.widget.ScrollView;
@@ -38,9 +39,9 @@ public class BigCache extends Activity {
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
final int cacheSize = ViewConfiguration.getMaximumDrawingCacheSize();
- final Display display = getWindowManager().getDefaultDisplay();
- final int screenWidth = display.getWidth();
- final int screenHeight = display.getHeight();
+ final Size windowSize = getWindowManager().getCurrentWindowMetrics().getSize();
+ final int screenWidth = windowSize.getWidth();
+ final int screenHeight = windowSize.getHeight();
final View tiny = new View(this);
tiny.setId(R.id.a);
diff --git a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
index f63a4548b478..039387c85b11 100644
--- a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
+++ b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
@@ -22,8 +22,7 @@ import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import android.content.Context;
-import android.util.DisplayMetrics;
+import android.util.Size;
import android.widget.TextView;
import androidx.test.filters.LargeTest;
@@ -54,25 +53,23 @@ public class ScaleGestureDetectorTest {
final float initialScaleFactor = 1.0f;
assertEquals(initialScaleFactor, mScaleGestureActivity.getScaleFactor(), 0f);
- // Specify start and end coordinates, irrespective of device display size.
- final DisplayMetrics dm = new DisplayMetrics();
- final WindowManager wm = (WindowManager) (mScaleGestureActivity.getApplicationContext())
- .getSystemService(Context.WINDOW_SERVICE);
- wm.getDefaultDisplay().getMetrics(dm);
- final int displayWidth = dm.widthPixels;
- final int displayHeight = dm.heightPixels;
+ // Specify start and end coordinates with respect to the window size.
+ final WindowManager wm = mScaleGestureActivity.getSystemService(WindowManager.class);
+ final Size windowSize = wm.getCurrentWindowMetrics().getSize();
+ final int windowWidth = windowSize.getWidth();
+ final int windowHeight = windowSize.getHeight();
// Obtain coordinates to perform pinch and zoom from the center, to 75% of the display.
- final int centerX = displayWidth / 2;
- final int centerY = displayHeight / 2;
+ final int centerX = windowWidth / 2;
+ final int centerY = windowHeight / 2;
// Offset center coordinates by one, so that the two starting points are different.
final float[] firstFingerStartCoords = new float[] {centerX + 1.0f, centerY - 1.0f};
final float[] firstFingerEndCoords =
- new float[] {0.75f * displayWidth, 0.25f * displayHeight};
+ new float[] {0.75f * windowWidth, 0.25f * windowHeight};
final float[] secondFingerStartCoords = new float[] {centerX - 1.0f, centerY + 1.0f};
final float[] secondFingerEndCoords =
- new float[] {0.25f * displayWidth, 0.75f * displayHeight};
+ new float[] {0.25f * windowWidth, 0.75f * windowHeight};
onView(withId(R.id.article)).perform(new PinchZoomAction(firstFingerStartCoords,
firstFingerEndCoords, secondFingerStartCoords, secondFingerEndCoords,
diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
index 9f259a841319..d70572444128 100644
--- a/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
@@ -16,11 +16,13 @@
package android.view.inputmethod;
+import static android.view.Display.DEFAULT_DISPLAY;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import android.content.Context;
-import android.view.WindowManager;
+import android.hardware.display.DisplayManager;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -43,9 +45,9 @@ public class InputMethodManagerTest {
final Context testContext = InstrumentationRegistry.getInstrumentation()
.getTargetContext();
- final WindowManager wm = testContext.getSystemService(WindowManager.class);
+ final DisplayManager dm = testContext.getSystemService(DisplayManager.class);
final Context defaultDisplayContext =
- testContext.createDisplayContext(wm.getDefaultDisplay());
+ testContext.createDisplayContext(dm.getDisplay(DEFAULT_DISPLAY));
final InputMethodManager imm =
defaultDisplayContext.getSystemService(InputMethodManager.class);
assertEquals("InputMethodManager.getInstance() always returns the instance for the default"
diff --git a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
index ba85d765ceda..d5825e20163c 100644
--- a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
+++ b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
@@ -16,11 +16,9 @@
package android.view.menu;
-import android.content.Context;
-import android.graphics.Point;
import android.test.ActivityInstrumentationTestCase;
import android.util.PollingCheck;
-import android.view.Display;
+import android.util.Size;
import android.view.View;
import android.view.WindowManager;
import android.widget.espresso.ContextMenuUtils;
@@ -82,12 +80,9 @@ public class ContextMenuTest extends ActivityInstrumentationTestCase<ContextMenu
* Returns the minimum of the default display's width and height.
*/
private int getMinScreenDimension() {
- final WindowManager windowManager = (WindowManager) getActivity().getSystemService(
- Context.WINDOW_SERVICE);
- final Display display = windowManager.getDefaultDisplay();
- final Point displaySize = new Point();
- display.getRealSize(displaySize);
- return Math.min(displaySize.x, displaySize.y);
+ final WindowManager windowManager = getActivity().getSystemService(WindowManager.class);
+ final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize();
+ return Math.min(maxWindowSize.getWidth(), maxWindowSize.getHeight());
}
/**
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
index 73e4ea8f718d..8e90a824c873 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
@@ -17,7 +17,6 @@
package android.widget.focus;
import android.app.Activity;
-import android.graphics.Point;
import android.os.Bundle;
import android.util.InternalSelectionView;
import android.view.View;
@@ -112,9 +111,7 @@ public class ListOfInternalSelectionViews extends Activity {
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
- Point size = new Point();
- getWindowManager().getDefaultDisplay().getSize(size);
- mScreenHeight = size.y;
+ mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
Bundle extras = getIntent().getExtras();
if (extras != null) {
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
index 0d3092cbc2f3..fd1dbfc63708 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
@@ -106,9 +106,10 @@ public class GridTouchVerticalSpacingStackFromBottomTest extends ActivityInstrum
int firstTop = firstChild.getTop();
+ int windowHeight = mActivity.getWindowManager().getCurrentWindowMetrics().getSize()
+ .getHeight();
int distance = TouchUtils.dragViewBy(this, firstChild,
- Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0,
- (int) (mActivity.getWindowManager().getDefaultDisplay().getHeight() * 0.75f));
+ Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, (int) (windowHeight * 0.75f));
assertEquals("View scrolled to wrong position", firstTop
+ (distance - mViewConfig.getScaledTouchSlop() - 1), firstChild.getTop());
diff --git a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
index 9e49719c6527..e6195b147045 100644
--- a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
+++ b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
@@ -65,7 +65,8 @@ public class AdjacentListsWithAdjacentISVsInside extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- final int desiredHeight = (int) (0.8 * getWindowManager().getDefaultDisplay().getHeight());
+ final int desiredHeight =
+ (int) (0.8 * getWindowManager().getCurrentWindowMetrics().getSize().getHeight());
mLeftListView = new ListView(this);
mLeftListView.setAdapter(new AdjacentISVAdapter(desiredHeight));
diff --git a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
index cd706089929e..cdcf23fc10bb 100644
--- a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
+++ b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
@@ -26,7 +26,6 @@ import android.platform.test.annotations.Presubmit;
import android.view.Display;
import android.view.DisplayAdjustments;
import android.view.DisplayInfo;
-import android.view.WindowManager;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -71,8 +70,7 @@ public final class DecorContextTest {
private static void assertDecorContextDisplay(int expectedDisplayId,
DecorContext decorContext) {
- WindowManager wm = (WindowManager) decorContext.getSystemService(Context.WINDOW_SERVICE);
- Display associatedDisplay = wm.getDefaultDisplay();
+ Display associatedDisplay = decorContext.getDisplay();
assertEquals(expectedDisplayId, associatedDisplay.getDisplayId());
}
}
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index f3c071a06eba..a828e2d04347 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -722,6 +722,7 @@ public class MtpDatabase implements AutoCloseable {
return MtpConstants.RESPONSE_OK;
case MtpConstants.DEVICE_PROPERTY_IMAGE_SIZE:
// use screen size as max image size
+ // TODO(b/147721765): Add support for foldables/multi-display devices.
Display display = ((WindowManager) mContext.getSystemService(
Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getMaximumSizeDimension();
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java
index 0ae640dd7910..25220951dd7b 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java
@@ -58,7 +58,6 @@ import android.os.Handler;
import android.util.Log;
import android.util.Pair;
import android.util.Size;
-import android.view.Display;
import android.view.Surface;
import android.view.WindowManager;
@@ -2211,14 +2210,14 @@ public class CameraTestUtils extends Assert {
}
public static Size getPreviewSizeBound(WindowManager windowManager, Size bound) {
- Display display = windowManager.getDefaultDisplay();
+ Size windowSize = windowManager.getCurrentWindowMetrics().getSize();
- int width = display.getWidth();
- int height = display.getHeight();
+ int width = windowSize.getWidth();
+ int height = windowSize.getHeight();
if (height > width) {
height = width;
- width = display.getHeight();
+ width = windowSize.getHeight();
}
if (bound.getWidth() <= width &&
diff --git a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java
index c9e0d0ab351d..d4eb2a9c75d0 100644
--- a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java
+++ b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java
@@ -16,6 +16,9 @@
package com.android.fakeoemfeatures;
+import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
import android.app.ActivityManager;
import android.app.ActivityThread;
import android.app.AlertDialog;
@@ -25,9 +28,11 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
+import android.util.Size;
import android.util.Slog;
import android.view.Display;
import android.view.ViewGroup;
@@ -94,8 +99,13 @@ public class FakeApp extends Application {
return;
}
- final WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
- final Display display = wm.getDefaultDisplay();
+ // Construct an instance of WindowManager to add the window of TYPE_APPLICATION_OVERLAY to
+ // the default display.
+ final DisplayManager dm = getSystemService(DisplayManager.class);
+ final Display defaultDisplay = dm.getDisplay(DEFAULT_DISPLAY);
+ final Context windowContext = createDisplayContext(defaultDisplay)
+ .createWindowContext(TYPE_APPLICATION_OVERLAY, null /* options */);
+ final WindowManager wm = windowContext.getSystemService(WindowManager.class);
// Check to make sure we are not running on a user build. If this
// is a user build, WARN! Do not want!
@@ -108,14 +118,14 @@ public class FakeApp extends Application {
builder.setCancelable(false);
builder.setPositiveButton("I understand", null);
Dialog dialog = builder.create();
- dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
+ dialog.getWindow().setType(TYPE_APPLICATION_OVERLAY);
dialog.show();
}
// Make a fake window that is always around eating graphics resources.
FakeView view = new FakeView(this);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
- WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
+ TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
@@ -124,7 +134,8 @@ public class FakeApp extends Application {
}
lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
- int maxSize = display.getMaximumSizeDimension();
+ Size maxWindowSize = wm.getMaximumWindowMetrics().getSize();
+ int maxSize = Math.max(maxWindowSize.getWidth(), maxWindowSize.getHeight());
maxSize *= 2;
lp.x = maxSize;
lp.y = maxSize;
diff --git a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java
index ff09000b7bbd..df00eee63b50 100644
--- a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java
+++ b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java
@@ -16,6 +16,9 @@
package com.android.fakeoemfeatures;
+import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
import java.util.ArrayList;
import java.util.Random;
@@ -23,9 +26,11 @@ import android.app.Dialog;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
+import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
+import android.util.Size;
import android.view.Display;
import android.view.ViewGroup;
import android.view.WindowManager;
@@ -68,13 +73,15 @@ public class FakeBackgroundService extends Service {
super.onCreate();
mHandler.sendEmptyMessageDelayed(MSG_TICK, TICK_DELAY);
- final WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
- final Display display = wm.getDefaultDisplay();
+ final DisplayManager dm = getSystemService(DisplayManager.class);
+ final Display display = dm.getDisplay(DEFAULT_DISPLAY);
+ final Context windowContext = createDisplayContext(display)
+ .createWindowContext(TYPE_APPLICATION_OVERLAY, null /* options */);
// Make a fake window that is always around eating graphics resources.
- FakeView view = new FakeView(this);
- Dialog dialog = new Dialog(this, android.R.style.Theme_Holo_Dialog);
- dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
+ FakeView view = new FakeView(windowContext);
+ Dialog dialog = new Dialog(windowContext, android.R.style.Theme_Holo_Dialog);
+ dialog.getWindow().setType(TYPE_APPLICATION_OVERLAY);
dialog.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
@@ -89,7 +96,11 @@ public class FakeBackgroundService extends Service {
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
- int maxSize = display.getMaximumSizeDimension();
+ // Create an instance of WindowManager that is adjusted to the area of the display dedicated
+ // for windows with type TYPE_APPLICATION_OVERLAY.
+ final WindowManager wm = windowContext.getSystemService(WindowManager.class);
+ Size maxWindowSize = wm.getMaximumWindowMetrics().getSize();
+ int maxSize = Math.max(maxWindowSize.getWidth(), maxWindowSize.getHeight());
maxSize *= 2;
lp.x = maxSize;
lp.y = maxSize;
diff --git a/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java b/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java
index 950107301af3..fcb113e90720 100644
--- a/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java
+++ b/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java
@@ -26,7 +26,6 @@ import android.util.Log;
import android.util.Pools.Pool;
import android.util.Pools.SynchronizedPool;
import android.view.View;
-import android.view.WindowManager;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.glrenderer.BasicTexture;
@@ -164,9 +163,7 @@ public class TiledImageRenderer {
private static boolean isHighResolution(Context context) {
DisplayMetrics metrics = new DisplayMetrics();
- WindowManager wm = (WindowManager)
- context.getSystemService(Context.WINDOW_SERVICE);
- wm.getDefaultDisplay().getMetrics(metrics);
+ context.getDisplay().getMetrics(metrics);
return metrics.heightPixels > 2048 || metrics.widthPixels > 2048;
}
diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
index f878b4d11f72..6112da5cd13b 100644
--- a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
+++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
@@ -37,9 +37,9 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
+import android.util.Size;
import android.view.Display;
import android.view.View;
-import android.view.WindowManager;
import android.widget.Toast;
import com.android.gallery3d.common.Utils;
@@ -231,18 +231,18 @@ public class WallpaperCropActivity extends Activity {
return x * aspectRatio + y;
}
- static protected Point getDefaultWallpaperSize(Resources res, WindowManager windowManager) {
+ static protected Point getDefaultWallpaperSize(Resources res, Display display) {
if (sDefaultWallpaperSize == null) {
Point minDims = new Point();
Point maxDims = new Point();
- windowManager.getDefaultDisplay().getCurrentSizeRange(minDims, maxDims);
+ display.getCurrentSizeRange(minDims, maxDims);
int maxDim = Math.max(maxDims.x, maxDims.y);
int minDim = Math.max(minDims.x, minDims.y);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
Point realSize = new Point();
- windowManager.getDefaultDisplay().getRealSize(realSize);
+ display.getRealSize(realSize);
maxDim = Math.max(realSize.x, realSize.y);
minDim = Math.min(realSize.x, realSize.y);
}
@@ -331,8 +331,7 @@ public class WallpaperCropActivity extends Activity {
// this device
int rotation = getRotationFromExif(res, resId);
Point inSize = mCropView.getSourceDimensions();
- Point outSize = getDefaultWallpaperSize(getResources(),
- getWindowManager());
+ Point outSize = getDefaultWallpaperSize(getResources(), getDisplay());
RectF crop = getMaxCropRect(
inSize.x, inSize.y, outSize.x, outSize.y, false);
Runnable onEndCrop = new Runnable() {
@@ -359,14 +358,11 @@ public class WallpaperCropActivity extends Activity {
// Get the crop
boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
- Display d = getWindowManager().getDefaultDisplay();
-
- Point displaySize = new Point();
- d.getSize(displaySize);
- boolean isPortrait = displaySize.x < displaySize.y;
+ Size windowSize = getWindowManager().getCurrentWindowMetrics().getSize();
+ boolean isPortrait = windowSize.getWidth() < windowSize.getHeight();
Point defaultWallpaperSize = getDefaultWallpaperSize(getResources(),
- getWindowManager());
+ getDisplay());
// Get the crop
RectF cropRect = mCropView.getCrop();
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 97f27caaad48..7151d2b86e83 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -98,7 +98,6 @@ import android.util.Xml;
import android.util.proto.ProtoOutputStream;
import android.view.Display;
import android.view.View;
-import android.view.WindowManager;
import android.widget.RemoteViews;
import com.android.internal.R;
@@ -282,8 +281,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
}
private void computeMaximumWidgetBitmapMemory() {
- WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
- Display display = wm.getDefaultDisplay();
+ Display display = mContext.getDisplay();
Point size = new Point();
display.getRealSize(size);
// Cap memory usage at 1.5 times the size of the display
diff --git a/services/core/java/com/android/server/audio/RotationHelper.java b/services/core/java/com/android/server/audio/RotationHelper.java
index ad20ed895805..ad7216600e61 100644
--- a/services/core/java/com/android/server/audio/RotationHelper.java
+++ b/services/core/java/com/android/server/audio/RotationHelper.java
@@ -80,6 +80,7 @@ class RotationHelper {
static void updateOrientation() {
// Even though we're responding to device orientation events,
// use display rotation so audio stays in sync with video/dialogs
+ // TODO(b/148458001): Support multi-display
int newRotation = ((WindowManager) sContext.getSystemService(
Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
synchronized(sRotationLock) {
diff --git a/services/core/java/com/android/server/backup/SystemBackupAgent.java b/services/core/java/com/android/server/backup/SystemBackupAgent.java
index 1f4563b801fe..0a30b763b8f4 100644
--- a/services/core/java/com/android/server/backup/SystemBackupAgent.java
+++ b/services/core/java/com/android/server/backup/SystemBackupAgent.java
@@ -113,6 +113,7 @@ public class SystemBackupAgent extends BackupAgentHelper {
throws IOException {
// Slot in a restore helper for the older wallpaper backup schema to support restore
// from devices still generating data in that format.
+ //TODO(b/147732386): Add multi-display support for wallpaper backup.
addHelper(WALLPAPER_HELPER, new WallpaperBackupHelper(this,
new String[] { WALLPAPER_IMAGE_KEY}));
diff --git a/services/core/java/com/android/server/display/OverlayDisplayWindow.java b/services/core/java/com/android/server/display/OverlayDisplayWindow.java
index 0fdf2daf1c8d..49f0d35d2e78 100644
--- a/services/core/java/com/android/server/display/OverlayDisplayWindow.java
+++ b/services/core/java/com/android/server/display/OverlayDisplayWindow.java
@@ -109,7 +109,8 @@ final class OverlayDisplayWindow implements DumpUtils.Dump {
mWindowManager = (WindowManager)context.getSystemService(
Context.WINDOW_SERVICE);
- mDefaultDisplay = mWindowManager.getDefaultDisplay();
+ // TODO(b/148458868): Support multi-display
+ mDefaultDisplay = mContext.getDisplay();
updateDefaultDisplayInfo();
resize(width, height, densityDpi, false /* doLayout */);
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index d746691b4773..61a33b4fb781 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -361,7 +361,7 @@ final class AccessibilityController {
private final Region mTempRegion3 = new Region();
private final Region mTempRegion4 = new Region();
- private final Context mContext;
+ private final Context mDisplayContext;
private final WindowManagerService mService;
private final MagnifiedViewport mMagnifedViewport;
private final Handler mHandler;
@@ -378,14 +378,14 @@ final class AccessibilityController {
DisplayContent displayContent,
Display display,
MagnificationCallbacks callbacks) {
- mContext = windowManagerService.mContext;
+ mDisplayContext = windowManagerService.mContext.createDisplayContext(display);
mService = windowManagerService;
mCallbacks = callbacks;
mDisplayContent = displayContent;
mDisplay = display;
mHandler = new MyHandler(mService.mH.getLooper());
mMagnifedViewport = new MagnifiedViewport();
- mLongAnimationDuration = mContext.getResources().getInteger(
+ mLongAnimationDuration = mDisplayContext.getResources().getInteger(
com.android.internal.R.integer.config_longAnimTime);
}
@@ -568,8 +568,6 @@ final class AccessibilityController {
private final MagnificationSpec mMagnificationSpec = MagnificationSpec.obtain();
- private final WindowManager mWindowManager;
-
private final float mBorderWidth;
private final int mHalfBorderWidth;
private final int mDrawBorderInset;
@@ -580,14 +578,13 @@ final class AccessibilityController {
private int mTempLayer = 0;
public MagnifiedViewport() {
- mWindowManager = (WindowManager) mContext.getSystemService(Service.WINDOW_SERVICE);
- mBorderWidth = mContext.getResources().getDimension(
+ mBorderWidth = mDisplayContext.getResources().getDimension(
com.android.internal.R.dimen.accessibility_magnification_indicator_width);
mHalfBorderWidth = (int) Math.ceil(mBorderWidth / 2);
mDrawBorderInset = (int) mBorderWidth / 2;
- mWindow = new ViewportWindow(mContext);
+ mWindow = new ViewportWindow(mDisplayContext);
- if (mContext.getResources().getConfiguration().isScreenRound()) {
+ if (mDisplayContext.getResources().getConfiguration().isScreenRound()) {
mCircularPath = new Path();
mDisplay.getRealSize(mTempPoint);
final int centerXY = mTempPoint.x / 2;
@@ -916,7 +913,7 @@ final class AccessibilityController {
public void updateSize(SurfaceControl.Transaction t) {
synchronized (mService.mGlobalLock) {
- mWindowManager.getDefaultDisplay().getRealSize(mTempPoint);
+ mDisplay.getRealSize(mTempPoint);
t.setBufferSize(mSurfaceControl, mTempPoint.x, mTempPoint.y);
invalidate(mDirtyRect);
}
diff --git a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
index ef6f84703723..2f02ffb17d3a 100644
--- a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
+++ b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
@@ -275,7 +275,7 @@ public class ImmersiveModeConfirmation {
super.onAttachedToWindow();
DisplayMetrics metrics = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(metrics);
+ mContext.getDisplay().getMetrics(metrics);
float density = metrics.density;
getViewTreeObserver().addOnComputeInternalInsetsListener(mInsetsListener);
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index df2b9e932fbc..57b94058b317 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -72,7 +72,6 @@ import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.Slog;
import android.util.StatsLog;
-import android.view.WindowManager;
import android.view.contentcapture.ContentCaptureManager;
import com.android.internal.R;
@@ -2083,8 +2082,7 @@ public final class SystemServer {
// propagate to it.
final Configuration config = wm.computeNewConfiguration(DEFAULT_DISPLAY);
DisplayMetrics metrics = new DisplayMetrics();
- WindowManager w = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- w.getDefaultDisplay().getMetrics(metrics);
+ context.getDisplay().getMetrics(metrics);
context.getResources().updateConfiguration(config, metrics);
// The system context's theme may be configuration-dependent.
diff --git a/test-runner/src/android/test/TouchUtils.java b/test-runner/src/android/test/TouchUtils.java
index 28dc7b2f900c..bb4e00ba1ef9 100644
--- a/test-runner/src/android/test/TouchUtils.java
+++ b/test-runner/src/android/test/TouchUtils.java
@@ -222,7 +222,8 @@ public class TouchUtils {
*/
public static void dragViewToBottom(InstrumentationTestCase test, Activity activity, View v,
int stepCount) {
- int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight();
+ int screenHeight =
+ activity.getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
int[] xy = new int[2];
v.getLocationOnScreen(xy);
diff --git a/tests/GamePerformance/src/android/gameperformance/BaseTest.java b/tests/GamePerformance/src/android/gameperformance/BaseTest.java
index b0640b444914..e7057565499c 100644
--- a/tests/GamePerformance/src/android/gameperformance/BaseTest.java
+++ b/tests/GamePerformance/src/android/gameperformance/BaseTest.java
@@ -21,7 +21,6 @@ import java.util.concurrent.TimeUnit;
import android.annotation.NonNull;
import android.content.Context;
import android.util.Log;
-import android.view.WindowManager;
/**
* Base class for a test that performs bisection to determine maximum
@@ -55,9 +54,7 @@ public abstract class BaseTest {
public BaseTest(@NonNull GamePerformanceActivity activity) {
mActivity = activity;
- final WindowManager windowManager =
- (WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);
- mRefreshRate = windowManager.getDefaultDisplay().getRefreshRate();
+ mRefreshRate = activity.getDisplay().getRefreshRate();
}
@NonNull
diff --git a/tests/GamePerformance/src/android/gameperformance/CustomControlView.java b/tests/GamePerformance/src/android/gameperformance/CustomControlView.java
index 219085a83b2c..e63736b9ee61 100644
--- a/tests/GamePerformance/src/android/gameperformance/CustomControlView.java
+++ b/tests/GamePerformance/src/android/gameperformance/CustomControlView.java
@@ -25,18 +25,16 @@ import android.annotation.WorkerThread;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
+import android.graphics.Point;
import android.graphics.drawable.AnimationDrawable;
-import android.util.Log;
-import android.view.WindowManager;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;
-import android.widget.RelativeLayout;
/**
* View that holds requested number of UI controls as ImageView with an infinite animation.
*/
public class CustomControlView extends AbsoluteLayout {
- private final static int CONTROL_DIMENTION = 48;
+ private final static int CONTROL_DIMENSION = 48;
private final int mPerRowControlCount;
private List<Long> mFrameTimes = new ArrayList<>();
@@ -44,8 +42,9 @@ public class CustomControlView extends AbsoluteLayout {
public CustomControlView(@NonNull Context context) {
super(context);
- final WindowManager windowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
- mPerRowControlCount = windowManager.getDefaultDisplay().getWidth() / CONTROL_DIMENTION;
+ final Point size = new Point();
+ context.getDisplay().getSize(size);
+ mPerRowControlCount = size.x / CONTROL_DIMENSION;
}
/**
@@ -76,11 +75,11 @@ public class CustomControlView extends AbsoluteLayout {
for (int i = 0; i < controlCount; ++i) {
final ImageView image = (i == 0) ?
new ReferenceImageView(activity) : new ImageView(activity);
- final int x = (i % mPerRowControlCount) * CONTROL_DIMENTION;
- final int y = (i / mPerRowControlCount) * CONTROL_DIMENTION;
+ final int x = (i % mPerRowControlCount) * CONTROL_DIMENSION;
+ final int y = (i / mPerRowControlCount) * CONTROL_DIMENSION;
final AbsoluteLayout.LayoutParams layoutParams =
new AbsoluteLayout.LayoutParams(
- CONTROL_DIMENTION, CONTROL_DIMENTION, x, y);
+ CONTROL_DIMENSION, CONTROL_DIMENSION, x, y);
image.setLayoutParams(layoutParams);
image.setBackgroundResource(R.drawable.animation);
final AnimationDrawable animation =
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
index 0f4c66817a05..6d8c43c00acf 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
@@ -122,7 +122,7 @@ public class TextureViewActivity extends Activity implements TextureView.Surface
if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) break;
}
- int rotation = getWindowManager().getDefaultDisplay().getRotation();
+ int rotation = getDisplay().getRotation();
int degrees = 0;
switch (rotation) {
diff --git a/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java b/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java
index b863713df15b..e255ce234c65 100644
--- a/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java
+++ b/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java
@@ -16,6 +16,7 @@
package com.google.android.test.mirrorsurface;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import android.app.Activity;
import android.graphics.Canvas;
@@ -26,7 +27,7 @@ import android.graphics.Rect;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
-import android.util.DisplayMetrics;
+import android.util.Size;
import android.view.Gravity;
import android.view.IWindowManager;
import android.view.MotionEvent;
@@ -48,6 +49,8 @@ public class MirrorSurfaceActivity extends Activity implements View.OnClickListe
private static final int MOVE_FRAME_AMOUNT = 20;
private IWindowManager mIWm;
+ // An instance of WindowManager that is adjusted for adding windows with type
+ // TYPE_APPLICATION_OVERLAY.
private WindowManager mWm;
private SurfaceControl mSurfaceControl = new SurfaceControl();
@@ -57,7 +60,7 @@ public class MirrorSurfaceActivity extends Activity implements View.OnClickListe
private View mOverlayView;
private View mArrowOverlay;
- private Rect mDisplayBounds = new Rect();
+ private Rect mWindowBounds = new Rect();
private EditText mScaleText;
private EditText mDisplayFrameText;
@@ -83,21 +86,21 @@ public class MirrorSurfaceActivity extends Activity implements View.OnClickListe
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mirror_surface);
- mWm = (WindowManager) getSystemService(WINDOW_SERVICE);
+ mWm = createWindowContext(TYPE_APPLICATION_OVERLAY, null /* options */)
+ .getSystemService(WindowManager.class);
mIWm = WindowManagerGlobal.getWindowManagerService();
- DisplayMetrics displayMetrics = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
- mDisplayBounds.set(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
+ Size windowSize = mWm.getCurrentWindowMetrics().getSize();
+ mWindowBounds.set(0, 0, windowSize.getWidth(), windowSize.getHeight());
mScaleText = findViewById(R.id.scale);
mDisplayFrameText = findViewById(R.id.displayFrame);
mSourcePositionText = findViewById(R.id.sourcePosition);
- mCurrFrame.set(0, 0, mDisplayBounds.width() / 2, mDisplayBounds.height() / 2);
+ mCurrFrame.set(0, 0, mWindowBounds.width() / 2, mWindowBounds.height() / 2);
mCurrScale = DEFAULT_SCALE;
- mDisplayId = getWindowManager().getDefaultDisplay().getDisplayId();
+ mDisplayId = getDisplay().getDisplayId();
updateEditTexts();
findViewById(R.id.mirror_button).setOnClickListener(view -> {
@@ -194,8 +197,8 @@ public class MirrorSurfaceActivity extends Activity implements View.OnClickListe
private void createMirrorOverlay() {
mOverlayView = new LinearLayout(this);
- WindowManager.LayoutParams params = new WindowManager.LayoutParams(mDisplayBounds.width(),
- mDisplayBounds.height(),
+ WindowManager.LayoutParams params = new WindowManager.LayoutParams(mWindowBounds.width(),
+ mWindowBounds.height(),
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
@@ -290,7 +293,7 @@ public class MirrorSurfaceActivity extends Activity implements View.OnClickListe
private void updateMirror(Rect displayFrame, float scale) {
if (displayFrame.isEmpty()) {
- Rect bounds = mDisplayBounds;
+ Rect bounds = mWindowBounds;
int defaultCropW = Math.round(bounds.width() / 2);
int defaultCropH = Math.round(bounds.height() / 2);
displayFrame.set(0, 0, defaultCropW, defaultCropH);
diff --git a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java
index 4771b6cfc750..e0a96689c191 100644
--- a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java
+++ b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java
@@ -23,7 +23,6 @@ import android.app.ActionBar;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
-import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.graphics.PixelFormat;
@@ -531,8 +530,7 @@ public class SurfaceCompositionMeasuringActivity extends Activity implements OnC
}
private void detectRefreshRate() {
- WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
- mRefreshRate = wm.getDefaultDisplay().getRefreshRate();
+ mRefreshRate = getDisplay().getRefreshRate();
if (mRefreshRate < MIN_REFRESH_RATE_SUPPORTED)
throw new RuntimeException("Unsupported display refresh rate: " + mRefreshRate);
mTargetFPS = mRefreshRate - 2.0f;