Merge "chore(#Magnification): add new field in metric MagnificationUsageReported" into udc-dev am: 8bd32b525b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23061058 Change-Id: I314d4eef9b086504979e68ac9793f6fe2d31fdb2 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -149,11 +149,13 @@ public final class AccessibilityStatsLogUtils {
|
||||
*
|
||||
* @param mode The activated magnification mode.
|
||||
* @param duration The duration in milliseconds during the magnification is activated.
|
||||
* @param scale The last magnification scale for the activation
|
||||
*/
|
||||
public static void logMagnificationUsageState(int mode, long duration) {
|
||||
public static void logMagnificationUsageState(int mode, long duration, float scale) {
|
||||
FrameworkStatsLog.write(FrameworkStatsLog.MAGNIFICATION_USAGE_REPORTED,
|
||||
convertToLoggingMagnificationMode(mode),
|
||||
duration);
|
||||
duration,
|
||||
convertToLoggingMagnificationScale(scale));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -254,4 +256,8 @@ public final class AccessibilityStatsLogUtils {
|
||||
return MAGNIFICATION_USAGE_REPORTED__ACTIVATED_MODE__MAGNIFICATION_UNKNOWN_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
private static int convertToLoggingMagnificationScale(float scale) {
|
||||
return (int) (scale * 100);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1072,6 +1072,10 @@ public class FullScreenMagnificationController implements
|
||||
}
|
||||
}
|
||||
|
||||
protected float getLastActivatedScale(int displayId) {
|
||||
return getScale(displayId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the X offset of the magnification viewport. If an animation
|
||||
* is in progress, this reflects the end state of the animation.
|
||||
|
||||
@@ -470,12 +470,14 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
||||
disableFullScreenMagnificationIfNeeded(displayId);
|
||||
} else {
|
||||
long duration;
|
||||
float scale;
|
||||
synchronized (mLock) {
|
||||
setCurrentMagnificationModeAndSwitchDelegate(displayId,
|
||||
ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
|
||||
duration = SystemClock.uptimeMillis() - mWindowModeEnabledTimeArray.get(displayId);
|
||||
scale = mWindowMagnificationMgr.getLastActivatedScale(displayId);
|
||||
}
|
||||
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, duration);
|
||||
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, duration, scale);
|
||||
}
|
||||
updateMagnificationUIControls(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
|
||||
}
|
||||
@@ -567,13 +569,16 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
||||
disableWindowMagnificationIfNeeded(displayId);
|
||||
} else {
|
||||
long duration;
|
||||
float scale;
|
||||
synchronized (mLock) {
|
||||
setCurrentMagnificationModeAndSwitchDelegate(displayId,
|
||||
ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
|
||||
duration = SystemClock.uptimeMillis()
|
||||
- mFullScreenModeEnabledTimeArray.get(displayId);
|
||||
scale = mFullScreenMagnificationController.getLastActivatedScale(displayId);
|
||||
}
|
||||
logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, duration);
|
||||
logMagnificationUsageState(
|
||||
ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, duration, scale);
|
||||
}
|
||||
updateMagnificationUIControls(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
|
||||
}
|
||||
@@ -612,10 +617,11 @@ public class MagnificationController implements WindowMagnificationManager.Callb
|
||||
*
|
||||
* @param mode The activated magnification mode.
|
||||
* @param duration The duration in milliseconds during the magnification is activated.
|
||||
* @param scale The last magnification scale for the activation
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public void logMagnificationUsageState(int mode, long duration) {
|
||||
AccessibilityStatsLogUtils.logMagnificationUsageState(mode, duration);
|
||||
public void logMagnificationUsageState(int mode, long duration, float scale) {
|
||||
AccessibilityStatsLogUtils.logMagnificationUsageState(mode, duration, scale);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -142,6 +142,8 @@ public class WindowMagnificationManager implements
|
||||
private boolean mMagnificationFollowTypingEnabled = true;
|
||||
@GuardedBy("mLock")
|
||||
private final SparseBooleanArray mIsImeVisibleArray = new SparseBooleanArray();
|
||||
@GuardedBy("mLock")
|
||||
private final SparseArray<Float> mLastActivatedScale = new SparseArray<>();
|
||||
|
||||
private boolean mReceiverRegistered = false;
|
||||
@VisibleForTesting
|
||||
@@ -528,6 +530,7 @@ public class WindowMagnificationManager implements
|
||||
return;
|
||||
}
|
||||
magnifier.setScale(scale);
|
||||
mLastActivatedScale.put(displayId, scale);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -615,6 +618,9 @@ public class WindowMagnificationManager implements
|
||||
previousEnabled = magnifier.mEnabled;
|
||||
enabled = magnifier.enableWindowMagnificationInternal(scale, centerX, centerY,
|
||||
animationCallback, windowPosition, id);
|
||||
if (enabled) {
|
||||
mLastActivatedScale.put(displayId, getScale(displayId));
|
||||
}
|
||||
}
|
||||
|
||||
if (enabled) {
|
||||
@@ -752,6 +758,15 @@ public class WindowMagnificationManager implements
|
||||
}
|
||||
}
|
||||
|
||||
protected float getLastActivatedScale(int displayId) {
|
||||
synchronized (mLock) {
|
||||
if (!mLastActivatedScale.contains(displayId)) {
|
||||
return -1.0f;
|
||||
}
|
||||
return mLastActivatedScale.get(displayId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves window magnification on the specified display with the specified offset.
|
||||
*
|
||||
|
||||
@@ -208,8 +208,8 @@ public class MagnificationControllerTest {
|
||||
mMockConnection = new MockWindowMagnificationConnection(true);
|
||||
mWindowMagnificationManager.setConnection(mMockConnection.getConnection());
|
||||
|
||||
mMagnificationController = new MagnificationController(mService, globalLock, mContext,
|
||||
mScreenMagnificationController, mWindowMagnificationManager, mScaleProvider);
|
||||
mMagnificationController = spy(new MagnificationController(mService, globalLock, mContext,
|
||||
mScreenMagnificationController, mWindowMagnificationManager, mScaleProvider));
|
||||
mMagnificationController.setMagnificationCapabilities(
|
||||
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL);
|
||||
|
||||
@@ -774,15 +774,21 @@ public class MagnificationControllerTest {
|
||||
verify(mWindowMagnificationManager, times(2)).removeMagnificationButton(eq(TEST_DISPLAY));
|
||||
}
|
||||
|
||||
@Test public void activateWindowMagnification_triggerCallback() throws RemoteException {
|
||||
setMagnificationEnabled(MODE_WINDOW);
|
||||
verify(mMagnificationController).onWindowMagnificationActivationState(
|
||||
eq(TEST_DISPLAY), eq(true));
|
||||
}
|
||||
@Test
|
||||
public void onWindowMagnificationActivationState_windowActivated_logWindowDuration() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
||||
public void deactivateWindowMagnification_windowActivated_triggerCallbackAndLogUsage()
|
||||
throws RemoteException {
|
||||
setMagnificationEnabled(MODE_WINDOW);
|
||||
mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, /* clear= */ true);
|
||||
|
||||
spyController.onWindowMagnificationActivationState(TEST_DISPLAY, false);
|
||||
|
||||
verify(spyController).logMagnificationUsageState(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW), anyLong());
|
||||
verify(mMagnificationController).onWindowMagnificationActivationState(
|
||||
eq(TEST_DISPLAY), eq(false));
|
||||
verify(mMagnificationController).logMagnificationUsageState(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW), anyLong(), eq(DEFAULT_SCALE));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -906,15 +912,22 @@ public class MagnificationControllerTest {
|
||||
assertEquals(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, lastActivatedMode);
|
||||
}
|
||||
|
||||
@Test public void activateFullScreenMagnification_triggerCallback() throws RemoteException {
|
||||
setMagnificationEnabled(MODE_FULLSCREEN);
|
||||
verify(mMagnificationController).onFullScreenMagnificationActivationState(
|
||||
eq(TEST_DISPLAY), eq(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onFullScreenMagnificationActivationState_fullScreenEnabled_logFullScreenDuration() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
|
||||
public void deactivateFullScreenMagnification_fullScreenEnabled_triggerCallbackAndLogUsage()
|
||||
throws RemoteException {
|
||||
setMagnificationEnabled(MODE_FULLSCREEN);
|
||||
mScreenMagnificationController.reset(TEST_DISPLAY, /* animate= */ false);
|
||||
|
||||
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, false);
|
||||
|
||||
verify(spyController).logMagnificationUsageState(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN), anyLong());
|
||||
verify(mMagnificationController).onFullScreenMagnificationActivationState(
|
||||
eq(TEST_DISPLAY), eq(false));
|
||||
verify(mMagnificationController).logMagnificationUsageState(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN), anyLong(), eq(DEFAULT_SCALE));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1106,48 +1119,44 @@ public class MagnificationControllerTest {
|
||||
|
||||
@Test
|
||||
public void imeWindowStateShown_windowMagnifying_logWindowMode() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
||||
mMagnificationController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
||||
|
||||
spyController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||
mMagnificationController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||
|
||||
verify(spyController).logMagnificationModeWithIme(
|
||||
verify(mMagnificationController).logMagnificationModeWithIme(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void imeWindowStateShown_fullScreenMagnifying_logFullScreenMode() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
|
||||
mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
|
||||
|
||||
spyController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||
mMagnificationController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||
|
||||
verify(spyController).logMagnificationModeWithIme(
|
||||
verify(mMagnificationController).logMagnificationModeWithIme(
|
||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void imeWindowStateShown_noMagnifying_noLogAnyMode() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||
mMagnificationController.onImeWindowVisibilityChanged(TEST_DISPLAY, true);
|
||||
|
||||
verify(spyController, never()).logMagnificationModeWithIme(anyInt());
|
||||
verify(mMagnificationController, never()).logMagnificationModeWithIme(anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void imeWindowStateHidden_windowMagnifying_noLogAnyMode() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
|
||||
mMagnificationController.onFullScreenMagnificationActivationState(
|
||||
TEST_DISPLAY, true);
|
||||
|
||||
verify(spyController, never()).logMagnificationModeWithIme(anyInt());
|
||||
verify(mMagnificationController, never()).logMagnificationModeWithIme(anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void imeWindowStateHidden_fullScreenMagnifying_noLogAnyMode() {
|
||||
MagnificationController spyController = spy(mMagnificationController);
|
||||
spyController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
||||
mMagnificationController.onWindowMagnificationActivationState(TEST_DISPLAY, true);
|
||||
|
||||
verify(spyController, never()).logMagnificationModeWithIme(anyInt());
|
||||
verify(mMagnificationController, never()).logMagnificationModeWithIme(anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user