Enables following typing functionality when the window magnifier is on again.
There are 3 conditions that we have to reset the tracking typing focus state to on. 1. IME is shown again. (It already exists.) 2. A user re-enable a window magnifier. 3. A user switch to a window magnifier from a full-screen magnifier. In this CL, we add the 2nd and 3rd condition to turn on this functionality in a window magnifier. Bug: 216394179 Test: atest WindowMagnificationManagerTest Change-Id: I78ca62b00559c242d5562f4247e3854e8386a512
This commit is contained in:
@@ -360,7 +360,7 @@ public class WindowMagnificationManager implements
|
||||
* @param displayId The logical display id.
|
||||
* @param trackingTypingFocusEnabled Enabled or disable the function of tracking typing focus.
|
||||
*/
|
||||
private void setTrackingTypingFocusEnabled(int displayId, boolean trackingTypingFocusEnabled) {
|
||||
void setTrackingTypingFocusEnabled(int displayId, boolean trackingTypingFocusEnabled) {
|
||||
synchronized (mLock) {
|
||||
WindowMagnifier magnifier = mWindowMagnifiers.get(displayId);
|
||||
if (magnifier == null) {
|
||||
@@ -503,8 +503,11 @@ public class WindowMagnificationManager implements
|
||||
animationCallback, windowPosition, id);
|
||||
}
|
||||
|
||||
if (enabled && !previousEnabled) {
|
||||
mCallback.onWindowMagnificationActivationState(displayId, true);
|
||||
if (enabled) {
|
||||
setTrackingTypingFocusEnabled(displayId, true);
|
||||
if (!previousEnabled) {
|
||||
mCallback.onWindowMagnificationActivationState(displayId, true);
|
||||
}
|
||||
}
|
||||
return enabled;
|
||||
}
|
||||
@@ -886,7 +889,6 @@ public class WindowMagnificationManager implements
|
||||
mWindowMagnificationManager = windowMagnificationManager;
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
boolean enableWindowMagnificationInternal(float scale, float centerX, float centerY,
|
||||
@Nullable MagnificationAnimationCallback animationCallback,
|
||||
@WindowPosition int windowPosition, int id) {
|
||||
|
||||
@@ -277,7 +277,7 @@ public class WindowMagnificationManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_trackingDisabledByOnDrag_withoutMovingMagnification()
|
||||
public void onRectangleOnScreenRequested_trackingDisabledByOnDrag_withoutMovingMagnifier()
|
||||
throws RemoteException {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
@@ -296,7 +296,7 @@ public class WindowMagnificationManagerTest {
|
||||
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_trackingDisabledByScroll_withoutMovingMagnification()
|
||||
public void onRectangleOnScreenRequested_trackingDisabledByScroll_withoutMovingMagnifier()
|
||||
throws RemoteException {
|
||||
final float distanceX = 10f;
|
||||
final float distanceY = 10f;
|
||||
@@ -316,7 +316,7 @@ public class WindowMagnificationManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_requestRectangleInBound_withoutMovingMagnification()
|
||||
public void onRectangleOnScreenRequested_requestRectangleInBound_withoutMovingMagnifier()
|
||||
throws RemoteException {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
@@ -333,7 +333,7 @@ public class WindowMagnificationManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_trackingEnabledByDefault_movingMagnification()
|
||||
public void onRectangleOnScreenRequested_trackingEnabledByDefault_movingMagnifier()
|
||||
throws RemoteException {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
@@ -351,12 +351,10 @@ public class WindowMagnificationManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_trackingEnabledByDragAndReset_movingMagnification()
|
||||
public void onRectangleOnScreenRequested_trackingEnabledByDragAndReset_movingMagnifier()
|
||||
throws RemoteException {
|
||||
final PointF initialPoint = new PointF(50f, 50f);
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f,
|
||||
initialPoint.x, initialPoint.y);
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
mMockConnection.getConnectionCallback().onDrag(TEST_DISPLAY);
|
||||
mWindowMagnificationManager.onImeWindowVisibilityChanged(true);
|
||||
final Region outRegion = new Region();
|
||||
@@ -373,7 +371,7 @@ public class WindowMagnificationManagerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_followTypingIsDisabled_withoutMovingMagnification() {
|
||||
public void onRectangleOnScreenRequested_followTypingIsDisabled_withoutMovingMagnifier() {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
final Region beforeRegion = new Region();
|
||||
@@ -390,6 +388,46 @@ public class WindowMagnificationManagerTest {
|
||||
assertEquals(afterRegion, beforeRegion);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_trackingDisabled_withoutMovingMagnifier() {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
mWindowMagnificationManager.setTrackingTypingFocusEnabled(TEST_DISPLAY, false);
|
||||
final Region beforeRegion = new Region();
|
||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
||||
final Rect requestedRect = beforeRegion.getBounds();
|
||||
requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10);
|
||||
|
||||
mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY,
|
||||
requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom);
|
||||
|
||||
final Region afterRegion = new Region();
|
||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, afterRegion);
|
||||
assertEquals(afterRegion, beforeRegion);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onRectangleOnScreenRequested_trackingDisabledAndEnabledMagnifier_movingMagnifier()
|
||||
throws RemoteException {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||
mWindowMagnificationManager.setTrackingTypingFocusEnabled(TEST_DISPLAY, false);
|
||||
final Region beforeRegion = new Region();
|
||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
||||
final Rect requestedRect = beforeRegion.getBounds();
|
||||
requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10);
|
||||
mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
|
||||
// Enabling a window magnifier again will turn on the tracking typing focus functionality.
|
||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, NaN, NaN, NaN);
|
||||
|
||||
mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY,
|
||||
requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom);
|
||||
|
||||
verify(mMockConnection.getConnection()).moveWindowMagnifierToPosition(eq(TEST_DISPLAY),
|
||||
eq(requestedRect.exactCenterX()), eq(requestedRect.exactCenterY()),
|
||||
any(IRemoteMagnificationAnimationCallback.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void moveWindowMagnifier_enabled_invokeConnectionMethod() throws RemoteException {
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
|
||||
Reference in New Issue
Block a user