Merge changes from topics "presubmit-am-6d6a4b4f29394bb498818c2f4488d08d", "presubmit-am-b0e37416e8c743989854206f0e1f2acb" into tm-dev
* changes: Add a condition of ime should be visible on tracking typing focus. Disables tracking focus on move a11y actions.
This commit is contained in:
@@ -68,12 +68,10 @@ import android.graphics.Rect;
|
|||||||
void onAccessibilityActionPerformed(int displayId);
|
void onAccessibilityActionPerformed(int displayId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the user is performing dragging gesture. It is started after the offset
|
* Called when the user is performing move action.
|
||||||
* between the down location and the move event location exceed
|
|
||||||
* {@link ViewConfiguration#getScaledTouchSlop()}.
|
|
||||||
*
|
*
|
||||||
* @param displayId The logical display id.
|
* @param displayId The logical display id.
|
||||||
*/
|
*/
|
||||||
void onDrag(int displayId);
|
void onMove(int displayId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -221,9 +221,9 @@ public class WindowMagnification extends CoreStartable implements WindowMagnifie
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDrag(int displayId) {
|
public void onMove(int displayId) {
|
||||||
if (mWindowMagnificationConnectionImpl != null) {
|
if (mWindowMagnificationConnectionImpl != null) {
|
||||||
mWindowMagnificationConnectionImpl.onDrag(displayId);
|
mWindowMagnificationConnectionImpl.onMove(displayId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,10 +150,10 @@ class WindowMagnificationConnectionImpl extends IWindowMagnificationConnection.S
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void onDrag(int displayId) {
|
void onMove(int displayId) {
|
||||||
if (mConnectionCallback != null) {
|
if (mConnectionCallback != null) {
|
||||||
try {
|
try {
|
||||||
mConnectionCallback.onDrag(displayId);
|
mConnectionCallback.onMove(displayId);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.e(TAG, "Failed to inform taking control by a user", e);
|
Log.e(TAG, "Failed to inform taking control by a user", e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -852,6 +852,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
|
|||||||
@Override
|
@Override
|
||||||
public void move(int xOffset, int yOffset) {
|
public void move(int xOffset, int yOffset) {
|
||||||
moveWindowMagnifier(xOffset, yOffset);
|
moveWindowMagnifier(xOffset, yOffset);
|
||||||
|
mWindowMagnifierCallback.onMove(mDisplayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1045,8 +1046,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onDrag(float offsetX, float offsetY) {
|
public boolean onDrag(float offsetX, float offsetY) {
|
||||||
moveWindowMagnifier(offsetX, offsetY);
|
move((int) offsetX, (int) offsetY);
|
||||||
mWindowMagnifierCallback.onDrag(mDisplayId);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package com.android.systemui.accessibility;
|
package com.android.systemui.accessibility;
|
||||||
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.view.ViewConfiguration;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A callback to inform {@link com.android.server.accessibility.AccessibilityManagerService} about
|
* A callback to inform {@link com.android.server.accessibility.AccessibilityManagerService} about
|
||||||
@@ -56,11 +55,9 @@ interface WindowMagnifierCallback {
|
|||||||
void onAccessibilityActionPerformed(int displayId);
|
void onAccessibilityActionPerformed(int displayId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the user is performing dragging gesture. It is started after the offset
|
* Called when the user is performing a move action.
|
||||||
* between the down location and the move event location exceed
|
|
||||||
* {@link ViewConfiguration#getScaledTouchSlop()}.
|
|
||||||
*
|
*
|
||||||
* @param displayId The logical display id.
|
* @param displayId The logical display id.
|
||||||
*/
|
*/
|
||||||
void onDrag(int displayId);
|
void onMove(int displayId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import static org.mockito.Mockito.atLeastOnce;
|
|||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.timeout;
|
import static org.mockito.Mockito.timeout;
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -566,6 +567,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase {
|
|||||||
mirrorView.performAccessibilityAction(R.id.accessibility_action_move_right, null));
|
mirrorView.performAccessibilityAction(R.id.accessibility_action_move_right, null));
|
||||||
assertTrue(
|
assertTrue(
|
||||||
mirrorView.performAccessibilityAction(R.id.accessibility_action_move_left, null));
|
mirrorView.performAccessibilityAction(R.id.accessibility_action_move_left, null));
|
||||||
|
verify(mWindowMagnifierCallback, times(4)).onMove(eq(displayId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -148,13 +148,13 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onDrag_enabled_notifyCallback() throws RemoteException {
|
public void onMove_enabled_notifyCallback() throws RemoteException {
|
||||||
mCommandQueue.requestWindowMagnificationConnection(true);
|
mCommandQueue.requestWindowMagnificationConnection(true);
|
||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
|
|
||||||
mWindowMagnification.onDrag(TEST_DISPLAY);
|
mWindowMagnification.onMove(TEST_DISPLAY);
|
||||||
|
|
||||||
verify(mConnectionCallback).onDrag(TEST_DISPLAY);
|
verify(mConnectionCallback).onMove(TEST_DISPLAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ public class FullScreenMagnificationController implements
|
|||||||
public void onImeWindowVisibilityChanged(boolean shown) {
|
public void onImeWindowVisibilityChanged(boolean shown) {
|
||||||
final Message m = PooledLambda.obtainMessage(
|
final Message m = PooledLambda.obtainMessage(
|
||||||
FullScreenMagnificationController::notifyImeWindowVisibilityChanged,
|
FullScreenMagnificationController::notifyImeWindowVisibilityChanged,
|
||||||
FullScreenMagnificationController.this, shown);
|
FullScreenMagnificationController.this, mDisplayId, shown);
|
||||||
mControllerCtx.getHandler().sendMessage(m);
|
mControllerCtx.getHandler().sendMessage(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1215,11 +1215,12 @@ public class FullScreenMagnificationController implements
|
|||||||
/**
|
/**
|
||||||
* Notifies that the IME window visibility changed.
|
* Notifies that the IME window visibility changed.
|
||||||
*
|
*
|
||||||
|
* @param displayId the logical display id
|
||||||
* @param shown {@code true} means the IME window shows on the screen. Otherwise it's
|
* @param shown {@code true} means the IME window shows on the screen. Otherwise it's
|
||||||
* hidden.
|
* hidden.
|
||||||
*/
|
*/
|
||||||
void notifyImeWindowVisibilityChanged(boolean shown) {
|
void notifyImeWindowVisibilityChanged(int displayId, boolean shown) {
|
||||||
mMagnificationInfoChangedCallback.onImeWindowVisibilityChanged(shown);
|
mMagnificationInfoChangedCallback.onImeWindowVisibilityChanged(displayId, shown);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1609,17 +1610,19 @@ public class FullScreenMagnificationController implements
|
|||||||
* Called when the state of the magnification activation is changed.
|
* Called when the state of the magnification activation is changed.
|
||||||
* It is for the logging data of the magnification activation state.
|
* It is for the logging data of the magnification activation state.
|
||||||
*
|
*
|
||||||
* @param displayId The logical display id.
|
* @param displayId the logical display id
|
||||||
* @param activated {@code true} if the magnification is activated, otherwise {@code false}.
|
* @param activated {@code true} if the magnification is activated, otherwise {@code false}.
|
||||||
*/
|
*/
|
||||||
void onFullScreenMagnificationActivationState(int displayId, boolean activated);
|
void onFullScreenMagnificationActivationState(int displayId, boolean activated);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the IME window visibility changed.
|
* Called when the IME window visibility changed.
|
||||||
|
*
|
||||||
|
* @param displayId the logical display id
|
||||||
* @param shown {@code true} means the IME window shows on the screen. Otherwise it's
|
* @param shown {@code true} means the IME window shows on the screen. Otherwise it's
|
||||||
* hidden.
|
* hidden.
|
||||||
*/
|
*/
|
||||||
void onImeWindowVisibilityChanged(boolean shown);
|
void onImeWindowVisibilityChanged(int displayId, boolean shown);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the magnification spec changed.
|
* Called when the magnification spec changed.
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import android.os.UserHandle;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
import android.util.SparseBooleanArray;
|
||||||
import android.view.accessibility.MagnificationAnimationCallback;
|
import android.view.accessibility.MagnificationAnimationCallback;
|
||||||
|
|
||||||
import com.android.internal.accessibility.util.AccessibilityStatsLogUtils;
|
import com.android.internal.accessibility.util.AccessibilityStatsLogUtils;
|
||||||
@@ -102,7 +103,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
|||||||
// Track the active user to reset the magnification and get the associated user settings.
|
// Track the active user to reset the magnification and get the associated user settings.
|
||||||
private @UserIdInt int mUserId = UserHandle.USER_SYSTEM;
|
private @UserIdInt int mUserId = UserHandle.USER_SYSTEM;
|
||||||
@GuardedBy("mLock")
|
@GuardedBy("mLock")
|
||||||
private boolean mImeWindowVisible = false;
|
private final SparseBooleanArray mIsImeVisibleArray = new SparseBooleanArray();
|
||||||
private long mWindowModeEnabledTime = 0;
|
private long mWindowModeEnabledTime = 0;
|
||||||
private long mFullScreenModeEnabledTime = 0;
|
private long mFullScreenModeEnabledTime = 0;
|
||||||
|
|
||||||
@@ -387,7 +388,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
|||||||
setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||||
mLastActivatedMode = mActivatedMode;
|
mLastActivatedMode = mActivatedMode;
|
||||||
}
|
}
|
||||||
logMagnificationModeWithImeOnIfNeeded();
|
logMagnificationModeWithImeOnIfNeeded(displayId);
|
||||||
disableFullScreenMagnificationIfNeeded(displayId);
|
disableFullScreenMagnificationIfNeeded(displayId);
|
||||||
} else {
|
} else {
|
||||||
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
|
||||||
@@ -442,7 +443,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
|||||||
setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
|
setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
|
||||||
mLastActivatedMode = mActivatedMode;
|
mLastActivatedMode = mActivatedMode;
|
||||||
}
|
}
|
||||||
logMagnificationModeWithImeOnIfNeeded();
|
logMagnificationModeWithImeOnIfNeeded(displayId);
|
||||||
disableWindowMagnificationIfNeeded(displayId);
|
disableWindowMagnificationIfNeeded(displayId);
|
||||||
} else {
|
} else {
|
||||||
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
|
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
|
||||||
@@ -464,12 +465,12 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onImeWindowVisibilityChanged(boolean shown) {
|
public void onImeWindowVisibilityChanged(int displayId, boolean shown) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
mImeWindowVisible = shown;
|
mIsImeVisibleArray.put(displayId, shown);
|
||||||
}
|
}
|
||||||
getWindowMagnificationMgr().onImeWindowVisibilityChanged(shown);
|
getWindowMagnificationMgr().onImeWindowVisibilityChanged(displayId, shown);
|
||||||
logMagnificationModeWithImeOnIfNeeded();
|
logMagnificationModeWithImeOnIfNeeded(displayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -585,11 +586,12 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logMagnificationModeWithImeOnIfNeeded() {
|
private void logMagnificationModeWithImeOnIfNeeded(int displayId) {
|
||||||
final int mode;
|
final int mode;
|
||||||
|
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
if (!mImeWindowVisible || mActivatedMode == ACCESSIBILITY_MAGNIFICATION_MODE_NONE) {
|
if (!mIsImeVisibleArray.get(displayId, false)
|
||||||
|
|| mActivatedMode == ACCESSIBILITY_MAGNIFICATION_MODE_NONE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mode = mActivatedMode;
|
mode = mActivatedMode;
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import android.os.RemoteException;
|
|||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
import android.util.SparseBooleanArray;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.accessibility.IWindowMagnificationConnection;
|
import android.view.accessibility.IWindowMagnificationConnection;
|
||||||
import android.view.accessibility.IWindowMagnificationConnectionCallback;
|
import android.view.accessibility.IWindowMagnificationConnectionCallback;
|
||||||
@@ -124,6 +125,7 @@ public class WindowMagnificationManager implements
|
|||||||
private SparseArray<WindowMagnifier> mWindowMagnifiers = new SparseArray<>();
|
private SparseArray<WindowMagnifier> mWindowMagnifiers = new SparseArray<>();
|
||||||
// Whether the following typing focus feature for magnification is enabled.
|
// Whether the following typing focus feature for magnification is enabled.
|
||||||
private boolean mMagnificationFollowTypingEnabled = true;
|
private boolean mMagnificationFollowTypingEnabled = true;
|
||||||
|
private final SparseBooleanArray mIsImeVisibleArray = new SparseBooleanArray();
|
||||||
|
|
||||||
private boolean mReceiverRegistered = false;
|
private boolean mReceiverRegistered = false;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -384,7 +386,8 @@ public class WindowMagnificationManager implements
|
|||||||
float toCenterY = (float) (top + bottom) / 2;
|
float toCenterY = (float) (top + bottom) / 2;
|
||||||
|
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
if (!isPositionInSourceBounds(displayId, toCenterX, toCenterY)
|
if (mIsImeVisibleArray.get(displayId, false)
|
||||||
|
&& !isPositionInSourceBounds(displayId, toCenterX, toCenterY)
|
||||||
&& isTrackingTypingFocusEnabled(displayId)) {
|
&& isTrackingTypingFocusEnabled(displayId)) {
|
||||||
moveWindowMagnifierToPositionInternal(displayId, toCenterX, toCenterY,
|
moveWindowMagnifierToPositionInternal(displayId, toCenterX, toCenterY,
|
||||||
STUB_ANIMATION_CALLBACK);
|
STUB_ANIMATION_CALLBACK);
|
||||||
@@ -456,7 +459,8 @@ public class WindowMagnificationManager implements
|
|||||||
*
|
*
|
||||||
* @param shown {@code true} means the IME window shows on the screen. Otherwise, it's hidden.
|
* @param shown {@code true} means the IME window shows on the screen. Otherwise, it's hidden.
|
||||||
*/
|
*/
|
||||||
void onImeWindowVisibilityChanged(boolean shown) {
|
void onImeWindowVisibilityChanged(int displayId, boolean shown) {
|
||||||
|
mIsImeVisibleArray.put(displayId, shown);
|
||||||
if (shown) {
|
if (shown) {
|
||||||
enableAllTrackingTypingFocus();
|
enableAllTrackingTypingFocus();
|
||||||
}
|
}
|
||||||
@@ -903,10 +907,10 @@ public class WindowMagnificationManager implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDrag(int displayId) {
|
public void onMove(int displayId) {
|
||||||
if (mTrace.isA11yTracingEnabledForTypes(
|
if (mTrace.isA11yTracingEnabledForTypes(
|
||||||
FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK)) {
|
FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK)) {
|
||||||
mTrace.logTrace(TAG + "ConnectionCallback.onDrag",
|
mTrace.logTrace(TAG + "ConnectionCallback.onMove",
|
||||||
FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK,
|
FLAGS_WINDOW_MAGNIFICATION_CONNECTION_CALLBACK,
|
||||||
"displayId=" + displayId);
|
"displayId=" + displayId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ import android.util.ArraySet;
|
|||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
import android.util.SparseBooleanArray;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.util.proto.ProtoOutputStream;
|
import android.util.proto.ProtoOutputStream;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
@@ -138,7 +139,7 @@ final class AccessibilityController {
|
|||||||
new SparseArray<>();
|
new SparseArray<>();
|
||||||
private SparseArray<IBinder> mFocusedWindow = new SparseArray<>();
|
private SparseArray<IBinder> mFocusedWindow = new SparseArray<>();
|
||||||
private int mFocusedDisplay = -1;
|
private int mFocusedDisplay = -1;
|
||||||
private boolean mIsImeVisible = false;
|
private final SparseBooleanArray mIsImeVisibleArray = new SparseBooleanArray();
|
||||||
// Set to true if initializing window population complete.
|
// Set to true if initializing window population complete.
|
||||||
private boolean mAllObserversInitialized = true;
|
private boolean mAllObserversInitialized = true;
|
||||||
private final AccessibilityWindowsPopulator mAccessibilityWindowsPopulator;
|
private final AccessibilityWindowsPopulator mAccessibilityWindowsPopulator;
|
||||||
@@ -167,8 +168,11 @@ final class AccessibilityController {
|
|||||||
if (dc != null) {
|
if (dc != null) {
|
||||||
final Display display = dc.getDisplay();
|
final Display display = dc.getDisplay();
|
||||||
if (display != null && display.getType() != Display.TYPE_OVERLAY) {
|
if (display != null && display.getType() != Display.TYPE_OVERLAY) {
|
||||||
mDisplayMagnifiers.put(displayId, new DisplayMagnifier(
|
final DisplayMagnifier magnifier = new DisplayMagnifier(
|
||||||
mService, dc, display, callbacks));
|
mService, dc, display, callbacks);
|
||||||
|
magnifier.notifyImeWindowVisibilityChanged(
|
||||||
|
mIsImeVisibleArray.get(displayId, false));
|
||||||
|
mDisplayMagnifiers.put(displayId, magnifier);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -494,11 +498,13 @@ final class AccessibilityController {
|
|||||||
mAccessibilityTracing.logTrace(TAG + ".updateImeVisibilityIfNeeded",
|
mAccessibilityTracing.logTrace(TAG + ".updateImeVisibilityIfNeeded",
|
||||||
FLAGS_MAGNIFICATION_CALLBACK, "displayId=" + displayId + ";shown=" + shown);
|
FLAGS_MAGNIFICATION_CALLBACK, "displayId=" + displayId + ";shown=" + shown);
|
||||||
}
|
}
|
||||||
if (mIsImeVisible == shown) {
|
|
||||||
|
final boolean isDisplayImeVisible = mIsImeVisibleArray.get(displayId, false);
|
||||||
|
if (isDisplayImeVisible == shown) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mIsImeVisible = shown;
|
mIsImeVisibleArray.put(displayId, shown);
|
||||||
final DisplayMagnifier displayMagnifier = mDisplayMagnifiers.get(displayId);
|
final DisplayMagnifier displayMagnifier = mDisplayMagnifiers.get(displayId);
|
||||||
if (displayMagnifier != null) {
|
if (displayMagnifier != null) {
|
||||||
displayMagnifier.notifyImeWindowVisibilityChanged(shown);
|
displayMagnifier.notifyImeWindowVisibilityChanged(shown);
|
||||||
@@ -534,6 +540,7 @@ final class AccessibilityController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onDisplayRemoved(int displayId) {
|
public void onDisplayRemoved(int displayId) {
|
||||||
|
mIsImeVisibleArray.delete(displayId);
|
||||||
mFocusedWindow.remove(displayId);
|
mFocusedWindow.remove(displayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1158,7 +1158,7 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
MagnificationCallbacks callbacks = getMagnificationCallbacks(DISPLAY_0);
|
MagnificationCallbacks callbacks = getMagnificationCallbacks(DISPLAY_0);
|
||||||
callbacks.onImeWindowVisibilityChanged(true);
|
callbacks.onImeWindowVisibilityChanged(true);
|
||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
verify(mRequestObserver).onImeWindowVisibilityChanged(eq(true));
|
verify(mRequestObserver).onImeWindowVisibilityChanged(eq(DISPLAY_0), eq(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setScaleToMagnifying() {
|
private void setScaleToMagnifying() {
|
||||||
|
|||||||
@@ -752,7 +752,7 @@ public class MagnificationControllerTest {
|
|||||||
MagnificationController spyController = spy(mMagnificationController);
|
MagnificationController spyController = spy(mMagnificationController);
|
||||||
spyController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
spyController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
||||||
|
|
||||||
spyController.onImeWindowVisibilityChanged(true);
|
spyController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
|
|
||||||
verify(spyController).logMagnificationModeWithIme(
|
verify(spyController).logMagnificationModeWithIme(
|
||||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
|
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
|
||||||
@@ -763,7 +763,7 @@ public class MagnificationControllerTest {
|
|||||||
MagnificationController spyController = spy(mMagnificationController);
|
MagnificationController spyController = spy(mMagnificationController);
|
||||||
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
|
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
|
||||||
|
|
||||||
spyController.onImeWindowVisibilityChanged(true);
|
spyController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
|
|
||||||
verify(spyController).logMagnificationModeWithIme(
|
verify(spyController).logMagnificationModeWithIme(
|
||||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
|
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
|
||||||
@@ -772,7 +772,7 @@ public class MagnificationControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void imeWindowStateShown_noMagnifying_noLogAnyMode() {
|
public void imeWindowStateShown_noMagnifying_noLogAnyMode() {
|
||||||
MagnificationController spyController = spy(mMagnificationController);
|
MagnificationController spyController = spy(mMagnificationController);
|
||||||
spyController.onImeWindowVisibilityChanged(true);
|
spyController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
|
|
||||||
verify(spyController, never()).logMagnificationModeWithIme(anyInt());
|
verify(spyController, never()).logMagnificationModeWithIme(anyInt());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -297,11 +297,12 @@ public class WindowMagnificationManagerTest {
|
|||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
final Region outRegion = new Region();
|
final Region outRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
final Rect requestedRect = outRegion.getBounds();
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10);
|
requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10);
|
||||||
mMockConnection.getConnectionCallback().onDrag(TEST_DISPLAY);
|
mMockConnection.getConnectionCallback().onMove(TEST_DISPLAY);
|
||||||
|
|
||||||
mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY,
|
mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY,
|
||||||
requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom);
|
requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom);
|
||||||
@@ -318,6 +319,7 @@ public class WindowMagnificationManagerTest {
|
|||||||
final float distanceY = 10f;
|
final float distanceY = 10f;
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
final Region outRegion = new Region();
|
final Region outRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
final Rect requestedRect = outRegion.getBounds();
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
@@ -336,6 +338,7 @@ public class WindowMagnificationManagerTest {
|
|||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
final Region outRegion = new Region();
|
final Region outRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
final Rect requestedRect = outRegion.getBounds();
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
@@ -347,12 +350,29 @@ public class WindowMagnificationManagerTest {
|
|||||||
verify(mMockConnection.getConnection(), never())
|
verify(mMockConnection.getConnection(), never())
|
||||||
.moveWindowMagnifierToPosition(anyInt(), anyFloat(), anyFloat(), any());
|
.moveWindowMagnifierToPosition(anyInt(), anyFloat(), anyFloat(), any());
|
||||||
}
|
}
|
||||||
|
@Test
|
||||||
|
public void onRectangleOnScreenRequested_imeVisibilityDefaultInvisible_withoutMovingMagnifier()
|
||||||
|
throws RemoteException {
|
||||||
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
final Region outRegion = new Region();
|
||||||
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
|
requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10);
|
||||||
|
|
||||||
|
mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY,
|
||||||
|
requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom);
|
||||||
|
|
||||||
|
verify(mMockConnection.getConnection(), never())
|
||||||
|
.moveWindowMagnifierToPosition(anyInt(), anyFloat(), anyFloat(), any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onRectangleOnScreenRequested_trackingEnabledByDefault_movingMagnifier()
|
public void onRectangleOnScreenRequested_trackingEnabledByDefault_movingMagnifier()
|
||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
final Region outRegion = new Region();
|
final Region outRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
final Rect requestedRect = outRegion.getBounds();
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
@@ -366,13 +386,33 @@ public class WindowMagnificationManagerTest {
|
|||||||
any(IRemoteMagnificationAnimationCallback.class));
|
any(IRemoteMagnificationAnimationCallback.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onRectangleOnScreenRequested_imeInvisible_withoutMovingMagnifier()
|
||||||
|
throws RemoteException {
|
||||||
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
|
final Region outRegion = new Region();
|
||||||
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
|
requestedRect.offsetTo(requestedRect.right + 10, requestedRect.bottom + 10);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, false);
|
||||||
|
|
||||||
|
mWindowMagnificationManager.onRectangleOnScreenRequested(TEST_DISPLAY,
|
||||||
|
requestedRect.left, requestedRect.top, requestedRect.right, requestedRect.bottom);
|
||||||
|
|
||||||
|
verify(mMockConnection.getConnection(), never())
|
||||||
|
.moveWindowMagnifierToPosition(anyInt(), anyFloat(), anyFloat(), any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onRectangleOnScreenRequested_trackingEnabledByDragAndReset_movingMagnifier()
|
public void onRectangleOnScreenRequested_trackingEnabledByDragAndReset_movingMagnifier()
|
||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
mMockConnection.getConnectionCallback().onDrag(TEST_DISPLAY);
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
mWindowMagnificationManager.onImeWindowVisibilityChanged(true);
|
mMockConnection.getConnectionCallback().onMove(TEST_DISPLAY);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
final Region outRegion = new Region();
|
final Region outRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, outRegion);
|
||||||
final Rect requestedRect = outRegion.getBounds();
|
final Rect requestedRect = outRegion.getBounds();
|
||||||
@@ -390,6 +430,7 @@ public class WindowMagnificationManagerTest {
|
|||||||
public void onRectangleOnScreenRequested_followTypingIsDisabled_withoutMovingMagnifier() {
|
public void onRectangleOnScreenRequested_followTypingIsDisabled_withoutMovingMagnifier() {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
final Region beforeRegion = new Region();
|
final Region beforeRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
||||||
final Rect requestedRect = beforeRegion.getBounds();
|
final Rect requestedRect = beforeRegion.getBounds();
|
||||||
@@ -408,6 +449,7 @@ public class WindowMagnificationManagerTest {
|
|||||||
public void onRectangleOnScreenRequested_trackingDisabled_withoutMovingMagnifier() {
|
public void onRectangleOnScreenRequested_trackingDisabled_withoutMovingMagnifier() {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
mWindowMagnificationManager.setTrackingTypingFocusEnabled(TEST_DISPLAY, false);
|
mWindowMagnificationManager.setTrackingTypingFocusEnabled(TEST_DISPLAY, false);
|
||||||
final Region beforeRegion = new Region();
|
final Region beforeRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
||||||
@@ -427,6 +469,7 @@ public class WindowMagnificationManagerTest {
|
|||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||||
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, 3.0f, 50f, 50f);
|
||||||
|
mWindowMagnificationManager.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||||
mWindowMagnificationManager.setTrackingTypingFocusEnabled(TEST_DISPLAY, false);
|
mWindowMagnificationManager.setTrackingTypingFocusEnabled(TEST_DISPLAY, false);
|
||||||
final Region beforeRegion = new Region();
|
final Region beforeRegion = new Region();
|
||||||
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
mWindowMagnificationManager.getMagnificationSourceBounds(TEST_DISPLAY, beforeRegion);
|
||||||
|
|||||||
Reference in New Issue
Block a user