Merge "chore(magnification settings): add logging for settings panel ui interactions" into udc-dev am: ded297bc86
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23150040 Change-Id: I1a31eab998cf5ba66f8f359b7cc0669b593ef999 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.systemui.accessibility
|
||||||
|
|
||||||
|
import com.android.internal.logging.UiEvent
|
||||||
|
import com.android.internal.logging.UiEventLogger
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles logging UiEvent stats for simple UI interactions.
|
||||||
|
*
|
||||||
|
* See go/uievent
|
||||||
|
*/
|
||||||
|
class AccessibilityLogger @Inject constructor(private val uiEventLogger: UiEventLogger) {
|
||||||
|
/** Logs the given event */
|
||||||
|
fun log(event: UiEventLogger.UiEventEnum) {
|
||||||
|
uiEventLogger.log(event)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Events regarding interaction with the magnifier settings panel */
|
||||||
|
enum class MagnificationSettingsEvent constructor(private val id: Int) :
|
||||||
|
UiEventLogger.UiEventEnum {
|
||||||
|
@UiEvent(doc = "Magnification settings panel opened.")
|
||||||
|
MAGNIFICATION_SETTINGS_PANEL_OPENED(1381),
|
||||||
|
|
||||||
|
@UiEvent(doc = "Magnification settings panel closed")
|
||||||
|
MAGNIFICATION_SETTINGS_PANEL_CLOSED(1382),
|
||||||
|
|
||||||
|
@UiEvent(doc = "Magnification settings panel edit size button clicked")
|
||||||
|
MAGNIFICATION_SETTINGS_SIZE_EDITING_ACTIVATED(1383),
|
||||||
|
|
||||||
|
@UiEvent(doc = "Magnification settings panel edit size save button clicked")
|
||||||
|
MAGNIFICATION_SETTINGS_SIZE_EDITING_DEACTIVATED(1384),
|
||||||
|
|
||||||
|
@UiEvent(doc = "Magnification settings panel window size selected")
|
||||||
|
MAGNIFICATION_SETTINGS_WINDOW_SIZE_SELECTED(1386);
|
||||||
|
|
||||||
|
override fun getId(): Int = this.id
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,6 +19,7 @@ package com.android.systemui.accessibility;
|
|||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
||||||
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
|
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
|
||||||
|
|
||||||
|
import static com.android.systemui.accessibility.AccessibilityLogger.MagnificationSettingsEvent;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_MAGNIFICATION_OVERLAP;
|
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_MAGNIFICATION_OVERLAP;
|
||||||
|
|
||||||
import android.annotation.MainThread;
|
import android.annotation.MainThread;
|
||||||
@@ -66,6 +67,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
|||||||
private final CommandQueue mCommandQueue;
|
private final CommandQueue mCommandQueue;
|
||||||
private final OverviewProxyService mOverviewProxyService;
|
private final OverviewProxyService mOverviewProxyService;
|
||||||
private final DisplayTracker mDisplayTracker;
|
private final DisplayTracker mDisplayTracker;
|
||||||
|
private final AccessibilityLogger mA11yLogger;
|
||||||
|
|
||||||
private WindowMagnificationConnectionImpl mWindowMagnificationConnectionImpl;
|
private WindowMagnificationConnectionImpl mWindowMagnificationConnectionImpl;
|
||||||
private SysUiState mSysUiState;
|
private SysUiState mSysUiState;
|
||||||
@@ -151,7 +153,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
|||||||
CommandQueue commandQueue, ModeSwitchesController modeSwitchesController,
|
CommandQueue commandQueue, ModeSwitchesController modeSwitchesController,
|
||||||
SysUiState sysUiState, OverviewProxyService overviewProxyService,
|
SysUiState sysUiState, OverviewProxyService overviewProxyService,
|
||||||
SecureSettings secureSettings, DisplayTracker displayTracker,
|
SecureSettings secureSettings, DisplayTracker displayTracker,
|
||||||
DisplayManager displayManager) {
|
DisplayManager displayManager, AccessibilityLogger a11yLogger) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mHandler = mainHandler;
|
mHandler = mainHandler;
|
||||||
mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
|
mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class);
|
||||||
@@ -160,6 +162,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
|||||||
mSysUiState = sysUiState;
|
mSysUiState = sysUiState;
|
||||||
mOverviewProxyService = overviewProxyService;
|
mOverviewProxyService = overviewProxyService;
|
||||||
mDisplayTracker = displayTracker;
|
mDisplayTracker = displayTracker;
|
||||||
|
mA11yLogger = a11yLogger;
|
||||||
mMagnificationControllerSupplier = new ControllerSupplier(context,
|
mMagnificationControllerSupplier = new ControllerSupplier(context,
|
||||||
mHandler, mWindowMagnifierCallback,
|
mHandler, mWindowMagnifierCallback,
|
||||||
displayManager, sysUiState, secureSettings);
|
displayManager, sysUiState, secureSettings);
|
||||||
@@ -343,6 +346,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
|||||||
@Override
|
@Override
|
||||||
public void onSetMagnifierSize(int displayId, int index) {
|
public void onSetMagnifierSize(int displayId, int index) {
|
||||||
mHandler.post(() -> onSetMagnifierSizeInternal(displayId, index));
|
mHandler.post(() -> onSetMagnifierSizeInternal(displayId, index));
|
||||||
|
mA11yLogger.log(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_WINDOW_SIZE_SELECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -353,6 +357,9 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
|||||||
@Override
|
@Override
|
||||||
public void onEditMagnifierSizeMode(int displayId, boolean enable) {
|
public void onEditMagnifierSizeMode(int displayId, boolean enable) {
|
||||||
mHandler.post(() -> onEditMagnifierSizeModeInternal(displayId, enable));
|
mHandler.post(() -> onEditMagnifierSizeModeInternal(displayId, enable));
|
||||||
|
mA11yLogger.log(enable
|
||||||
|
? MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_SIZE_EDITING_ACTIVATED
|
||||||
|
: MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_SIZE_EDITING_DEACTIVATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -370,6 +377,9 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
|
|||||||
@Override
|
@Override
|
||||||
public void onSettingsPanelVisibilityChanged(int displayId, boolean shown) {
|
public void onSettingsPanelVisibilityChanged(int displayId, boolean shown) {
|
||||||
mHandler.post(() -> onSettingsPanelVisibilityChangedInternal(displayId, shown));
|
mHandler.post(() -> onSettingsPanelVisibilityChangedInternal(displayId, shown));
|
||||||
|
mA11yLogger.log(shown
|
||||||
|
? MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_OPENED
|
||||||
|
: MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_CLOSED);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -80,6 +80,8 @@ public class IWindowMagnificationConnectionTest extends SysuiTestCase {
|
|||||||
private OverviewProxyService mOverviewProxyService;
|
private OverviewProxyService mOverviewProxyService;
|
||||||
@Mock
|
@Mock
|
||||||
private SecureSettings mSecureSettings;
|
private SecureSettings mSecureSettings;
|
||||||
|
@Mock
|
||||||
|
private AccessibilityLogger mA11yLogger;
|
||||||
|
|
||||||
private IWindowMagnificationConnection mIWindowMagnificationConnection;
|
private IWindowMagnificationConnection mIWindowMagnificationConnection;
|
||||||
private WindowMagnification mWindowMagnification;
|
private WindowMagnification mWindowMagnification;
|
||||||
@@ -97,7 +99,7 @@ public class IWindowMagnificationConnectionTest extends SysuiTestCase {
|
|||||||
mWindowMagnification = new WindowMagnification(getContext(),
|
mWindowMagnification = new WindowMagnification(getContext(),
|
||||||
getContext().getMainThreadHandler(), mCommandQueue,
|
getContext().getMainThreadHandler(), mCommandQueue,
|
||||||
mModeSwitchesController, mSysUiState, mOverviewProxyService, mSecureSettings,
|
mModeSwitchesController, mSysUiState, mOverviewProxyService, mSecureSettings,
|
||||||
mDisplayTracker, getContext().getSystemService(DisplayManager.class));
|
mDisplayTracker, getContext().getSystemService(DisplayManager.class), mA11yLogger);
|
||||||
mWindowMagnification.mMagnificationControllerSupplier = new FakeControllerSupplier(
|
mWindowMagnification.mMagnificationControllerSupplier = new FakeControllerSupplier(
|
||||||
mContext.getSystemService(DisplayManager.class));
|
mContext.getSystemService(DisplayManager.class));
|
||||||
mWindowMagnification.mMagnificationSettingsSupplier = new FakeSettingsSupplier(
|
mWindowMagnification.mMagnificationSettingsSupplier = new FakeSettingsSupplier(
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package com.android.systemui.accessibility;
|
|||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
|
||||||
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
|
||||||
|
|
||||||
|
import static com.android.systemui.accessibility.AccessibilityLogger.MagnificationSettingsEvent;
|
||||||
import static com.android.systemui.accessibility.WindowMagnificationSettings.MagnificationSize;
|
import static com.android.systemui.accessibility.WindowMagnificationSettings.MagnificationSize;
|
||||||
import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
|
import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_MAGNIFICATION_OVERLAP;
|
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_MAGNIFICATION_OVERLAP;
|
||||||
@@ -89,6 +90,8 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
private WindowMagnificationController mWindowMagnificationController;
|
private WindowMagnificationController mWindowMagnificationController;
|
||||||
@Mock
|
@Mock
|
||||||
private MagnificationSettingsController mMagnificationSettingsController;
|
private MagnificationSettingsController mMagnificationSettingsController;
|
||||||
|
@Mock
|
||||||
|
private AccessibilityLogger mA11yLogger;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
@@ -103,11 +106,22 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
|
|
||||||
when(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState);
|
when(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState);
|
||||||
|
|
||||||
|
doAnswer(invocation -> {
|
||||||
|
mWindowMagnification.mMagnificationSettingsControllerCallback
|
||||||
|
.onSettingsPanelVisibilityChanged(TEST_DISPLAY, /* shown= */ true);
|
||||||
|
return null;
|
||||||
|
}).when(mMagnificationSettingsController).showMagnificationSettings();
|
||||||
|
doAnswer(invocation -> {
|
||||||
|
mWindowMagnification.mMagnificationSettingsControllerCallback
|
||||||
|
.onSettingsPanelVisibilityChanged(TEST_DISPLAY, /* shown= */ false);
|
||||||
|
return null;
|
||||||
|
}).when(mMagnificationSettingsController).closeMagnificationSettings();
|
||||||
|
|
||||||
mCommandQueue = new CommandQueue(getContext(), mDisplayTracker);
|
mCommandQueue = new CommandQueue(getContext(), mDisplayTracker);
|
||||||
mWindowMagnification = new WindowMagnification(getContext(),
|
mWindowMagnification = new WindowMagnification(getContext(),
|
||||||
getContext().getMainThreadHandler(), mCommandQueue, mModeSwitchesController,
|
getContext().getMainThreadHandler(), mCommandQueue, mModeSwitchesController,
|
||||||
mSysUiState, mOverviewProxyService, mSecureSettings, mDisplayTracker,
|
mSysUiState, mOverviewProxyService, mSecureSettings, mDisplayTracker,
|
||||||
getContext().getSystemService(DisplayManager.class));
|
getContext().getSystemService(DisplayManager.class), mA11yLogger);
|
||||||
mWindowMagnification.mMagnificationControllerSupplier = new FakeControllerSupplier(
|
mWindowMagnification.mMagnificationControllerSupplier = new FakeControllerSupplier(
|
||||||
mContext.getSystemService(DisplayManager.class), mWindowMagnificationController);
|
mContext.getSystemService(DisplayManager.class), mWindowMagnificationController);
|
||||||
mWindowMagnification.mMagnificationSettingsSupplier = new FakeSettingsSupplier(
|
mWindowMagnification.mMagnificationSettingsSupplier = new FakeSettingsSupplier(
|
||||||
@@ -185,6 +199,8 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
|
|
||||||
verify(mMagnificationSettingsController).showMagnificationSettings();
|
verify(mMagnificationSettingsController).showMagnificationSettings();
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_OPENED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -195,6 +211,8 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
|
|
||||||
verify(mWindowMagnificationController).changeMagnificationSize(eq(index));
|
verify(mWindowMagnificationController).changeMagnificationSize(eq(index));
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_WINDOW_SIZE_SELECTED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -214,6 +232,16 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
|
|
||||||
verify(mWindowMagnificationController).setEditMagnifierSizeMode(eq(true));
|
verify(mWindowMagnificationController).setEditMagnifierSizeMode(eq(true));
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_SIZE_EDITING_ACTIVATED));
|
||||||
|
|
||||||
|
mWindowMagnification.mMagnificationSettingsControllerCallback.onEditMagnifierSizeMode(
|
||||||
|
TEST_DISPLAY, /* enable= */ false);
|
||||||
|
waitForIdleSync();
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_SIZE_EDITING_ACTIVATED));
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_SIZE_EDITING_DEACTIVATED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -239,6 +267,8 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
|
|
||||||
verify(mMagnificationSettingsController).closeMagnificationSettings();
|
verify(mMagnificationSettingsController).closeMagnificationSettings();
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_CLOSED));
|
||||||
verify(mConnectionCallback).onChangeMagnificationMode(eq(TEST_DISPLAY),
|
verify(mConnectionCallback).onChangeMagnificationMode(eq(TEST_DISPLAY),
|
||||||
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
|
eq(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
|
||||||
}
|
}
|
||||||
@@ -268,6 +298,8 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
|||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
|
|
||||||
verify(mWindowMagnificationController).updateDragHandleResourcesIfNeeded(eq(shown));
|
verify(mWindowMagnificationController).updateDragHandleResourcesIfNeeded(eq(shown));
|
||||||
|
verify(mA11yLogger).log(
|
||||||
|
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_CLOSED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user