Merge "fix(#AlwaysOnMagnification): mis-activate fullscreen magnifier when display size changed" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f252b781e7
@@ -901,6 +901,10 @@ public class FullScreenMagnificationController implements
|
|||||||
*/
|
*/
|
||||||
void onUserContextChanged(int displayId) {
|
void onUserContextChanged(int displayId) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
|
if (!isActivated(displayId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isAlwaysOnMagnificationEnabled()) {
|
if (isAlwaysOnMagnificationEnabled()) {
|
||||||
setScaleAndCenter(displayId, 1.0f, Float.NaN, Float.NaN,
|
setScaleAndCenter(displayId, 1.0f, Float.NaN, Float.NaN,
|
||||||
true,
|
true,
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void notRegistered_publicMethodsShouldBeBenign(int displayId) {
|
private void notRegistered_publicMethodsShouldBeBenign(int displayId) {
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, displayId);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, displayId);
|
||||||
|
|
||||||
assertFalse(
|
assertFalse(
|
||||||
mFullScreenMagnificationController.magnificationRegionContains(displayId, 100,
|
mFullScreenMagnificationController.magnificationRegionContains(displayId, 100,
|
||||||
@@ -673,9 +673,9 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
.setScale(displayId, 1.5f, startCenter.x, startCenter.y, false,
|
.setScale(displayId, 1.5f, startCenter.x, startCenter.y, false,
|
||||||
SERVICE_ID_2);
|
SERVICE_ID_2);
|
||||||
assertFalse(mFullScreenMagnificationController.resetIfNeeded(displayId, SERVICE_ID_1));
|
assertFalse(mFullScreenMagnificationController.resetIfNeeded(displayId, SERVICE_ID_1));
|
||||||
checkActivatedAndMagnifyingState(/* activated= */true, /* magnifying= */true, displayId);
|
checkActivatedAndMagnifying(/* activated= */ true, /* magnifying= */ true, displayId);
|
||||||
assertTrue(mFullScreenMagnificationController.resetIfNeeded(displayId, SERVICE_ID_2));
|
assertTrue(mFullScreenMagnificationController.resetIfNeeded(displayId, SERVICE_ID_2));
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, displayId);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, displayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -694,7 +694,7 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
assertTrue(mFullScreenMagnificationController.resetIfNeeded(displayId, false));
|
assertTrue(mFullScreenMagnificationController.resetIfNeeded(displayId, false));
|
||||||
verify(mRequestObserver).onFullScreenMagnificationChanged(eq(displayId),
|
verify(mRequestObserver).onFullScreenMagnificationChanged(eq(displayId),
|
||||||
eq(INITIAL_MAGNIFICATION_REGION), any(MagnificationConfig.class));
|
eq(INITIAL_MAGNIFICATION_REGION), any(MagnificationConfig.class));
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, displayId);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, displayId);
|
||||||
assertFalse(mFullScreenMagnificationController.resetIfNeeded(displayId, false));
|
assertFalse(mFullScreenMagnificationController.resetIfNeeded(displayId, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -758,7 +758,7 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
mTargetAnimationListener.onAnimationUpdate(mMockValueAnimator);
|
mTargetAnimationListener.onAnimationUpdate(mMockValueAnimator);
|
||||||
mStateListener.onAnimationEnd(mMockValueAnimator);
|
mStateListener.onAnimationEnd(mMockValueAnimator);
|
||||||
|
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, displayId);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, displayId);
|
||||||
verify(lastAnimationCallback).onResult(true);
|
verify(lastAnimationCallback).onResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -776,26 +776,72 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
br.onReceive(mMockContext, null);
|
br.onReceive(mMockContext, null);
|
||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, DISPLAY_0);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, DISPLAY_0);
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, DISPLAY_1);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, DISPLAY_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUserContextChange_resetsMagnification() {
|
public void testUserContextChange_magnifierActivated_resetMagnification() {
|
||||||
for (int i = 0; i < DISPLAY_COUNT; i++) {
|
for (int i = 0; i < DISPLAY_COUNT; i++) {
|
||||||
contextChange_resetsMagnification(i);
|
contextChange_expectedValues(
|
||||||
|
/* displayId= */ i,
|
||||||
|
/* isMagnifierActivated= */ true,
|
||||||
|
/* isAlwaysOnEnabled= */ false,
|
||||||
|
/* expectedActivated= */ false);
|
||||||
resetMockWindowManager();
|
resetMockWindowManager();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void contextChange_resetsMagnification(int displayId) {
|
@Test
|
||||||
|
public void testUserContextChange_magnifierActivatedAndAlwaysOnEnabled_stayActivated() {
|
||||||
|
for (int i = 0; i < DISPLAY_COUNT; i++) {
|
||||||
|
contextChange_expectedValues(
|
||||||
|
/* displayId= */ i,
|
||||||
|
/* isMagnifierActivated= */ true,
|
||||||
|
/* isAlwaysOnEnabled= */ true,
|
||||||
|
/* expectedActivated= */ true);
|
||||||
|
resetMockWindowManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUserContextChange_magnifierDeactivated_stayDeactivated() {
|
||||||
|
for (int i = 0; i < DISPLAY_COUNT; i++) {
|
||||||
|
contextChange_expectedValues(
|
||||||
|
/* displayId= */ i,
|
||||||
|
/* isMagnifierActivated= */ false,
|
||||||
|
/* isAlwaysOnEnabled= */ false,
|
||||||
|
/* expectedActivated= */ false);
|
||||||
|
resetMockWindowManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUserContextChange_magnifierDeactivatedAndAlwaysOnEnabled_stayDeactivated() {
|
||||||
|
for (int i = 0; i < DISPLAY_COUNT; i++) {
|
||||||
|
contextChange_expectedValues(
|
||||||
|
/* displayId= */ i,
|
||||||
|
/* isMagnifierActivated= */ false,
|
||||||
|
/* isAlwaysOnEnabled= */ true,
|
||||||
|
/* expectedActivated= */ false);
|
||||||
|
resetMockWindowManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void contextChange_expectedValues(
|
||||||
|
int displayId, boolean isMagnifierActivated, boolean isAlwaysOnEnabled,
|
||||||
|
boolean expectedActivated) {
|
||||||
|
mFullScreenMagnificationController.setAlwaysOnMagnificationEnabled(isAlwaysOnEnabled);
|
||||||
register(displayId);
|
register(displayId);
|
||||||
MagnificationCallbacks callbacks = getMagnificationCallbacks(displayId);
|
MagnificationCallbacks callbacks = getMagnificationCallbacks(displayId);
|
||||||
|
if (isMagnifierActivated) {
|
||||||
zoomIn2xToMiddle(displayId);
|
zoomIn2xToMiddle(displayId);
|
||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
|
}
|
||||||
callbacks.onUserContextChanged();
|
callbacks.onUserContextChanged();
|
||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, displayId);
|
checkActivatedAndMagnifying(
|
||||||
|
/* activated= */ expectedActivated, /* magnifying= */ false, displayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -811,10 +857,10 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
MagnificationCallbacks callbacks = getMagnificationCallbacks(displayId);
|
MagnificationCallbacks callbacks = getMagnificationCallbacks(displayId);
|
||||||
zoomIn2xToMiddle(displayId);
|
zoomIn2xToMiddle(displayId);
|
||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
checkActivatedAndMagnifyingState(/* activated= */true, /* magnifying= */true, displayId);
|
checkActivatedAndMagnifying(/* activated= */ true, /* magnifying= */ true, displayId);
|
||||||
callbacks.onDisplaySizeChanged();
|
callbacks.onDisplaySizeChanged();
|
||||||
mMessageCapturingHandler.sendAllMessages();
|
mMessageCapturingHandler.sendAllMessages();
|
||||||
checkActivatedAndMagnifyingState(/* activated= */false, /* magnifying= */false, DISPLAY_0);
|
checkActivatedAndMagnifying(/* activated= */ false, /* magnifying= */ false, DISPLAY_0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -1169,7 +1215,7 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
mFullScreenMagnificationController.setScaleAndCenter(
|
mFullScreenMagnificationController.setScaleAndCenter(
|
||||||
DISPLAY_0, scale, Float.NaN, Float.NaN, true, SERVICE_ID_1);
|
DISPLAY_0, scale, Float.NaN, Float.NaN, true, SERVICE_ID_1);
|
||||||
|
|
||||||
checkActivatedAndMagnifyingState(/* activated= */true, /* magnifying= */false, DISPLAY_0);
|
checkActivatedAndMagnifying(/* activated= */ true, /* magnifying= */ false, DISPLAY_0);
|
||||||
verify(mMockWindowManager).setForceShowMagnifiableBounds(DISPLAY_0, true);
|
verify(mMockWindowManager).setForceShowMagnifiableBounds(DISPLAY_0, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1280,11 +1326,10 @@ public class FullScreenMagnificationControllerTest {
|
|||||||
float scale = 2.0f;
|
float scale = 2.0f;
|
||||||
mFullScreenMagnificationController.setScale(displayId, scale, startCenter.x, startCenter.y,
|
mFullScreenMagnificationController.setScale(displayId, scale, startCenter.x, startCenter.y,
|
||||||
false, SERVICE_ID_1);
|
false, SERVICE_ID_1);
|
||||||
checkActivatedAndMagnifyingState(/* activated= */true, /* magnifying= */true, displayId);
|
checkActivatedAndMagnifying(/* activated= */ true, /* magnifying= */ true, displayId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkActivatedAndMagnifyingState(
|
private void checkActivatedAndMagnifying(boolean activated, boolean magnifying, int displayId) {
|
||||||
boolean activated, boolean magnifying, int displayId) {
|
|
||||||
final boolean isActivated = mFullScreenMagnificationController.isActivated(displayId);
|
final boolean isActivated = mFullScreenMagnificationController.isActivated(displayId);
|
||||||
final boolean isMagnifying = mFullScreenMagnificationController.getScale(displayId) > 1.0f;
|
final boolean isMagnifying = mFullScreenMagnificationController.getScale(displayId) > 1.0f;
|
||||||
assertTrue(isActivated == activated);
|
assertTrue(isActivated == activated);
|
||||||
|
|||||||
Reference in New Issue
Block a user