Loading services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java +19 −1 Original line number Diff line number Diff line Loading @@ -39,8 +39,10 @@ import android.accessibilityservice.AccessibilityTrace; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread; import android.content.ComponentCallbacks; import android.content.ContentResolver; import android.content.Context; import android.content.res.Configuration; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; Loading Loading @@ -85,7 +87,8 @@ import com.android.server.accessibility.Flags; * * Each instance is associated to a single user (and it does not handle user switch itself). */ public class AutoclickController extends BaseEventStreamTransformation { public class AutoclickController extends BaseEventStreamTransformation implements ComponentCallbacks { // Default duration between mouse movement stops and the auto click happens. public static final int DEFAULT_AUTOCLICK_DELAY_TIME = Flags.enableAutoclickIndicator() Loading Loading @@ -335,6 +338,7 @@ public class AutoclickController extends BaseEventStreamTransformation { }; mAutoclickTypePanel.show(); mContext.registerComponentCallbacks(this); mWindowManager.addView(mAutoclickIndicatorView, mAutoclickIndicatorView.getLayoutParams()); } Loading Loading @@ -370,6 +374,7 @@ public class AutoclickController extends BaseEventStreamTransformation { @Override public void onDestroy() { mContext.unregisterComponentCallbacks(this); if (mAutoclickSettingsObserver != null) { mAutoclickSettingsObserver.stop(); mAutoclickSettingsObserver = null; Loading Loading @@ -575,6 +580,19 @@ public class AutoclickController extends BaseEventStreamTransformation { return mActiveClickType; } @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { if (mAutoclickIndicatorView != null) { // When system configuration is changed, update the indicator view configuration. mAutoclickIndicatorView.onConfigurationChanged(newConfig); } } @Override public void onLowMemory() { } /** * Observes and updates various autoclick setting values. */ Loading services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickIndicatorView.java +15 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.accessibility.AccessibilityManager.AUTOCLICK_CURSOR_A import android.animation.ValueAnimator; import android.content.Context; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PixelFormat; Loading @@ -47,6 +48,8 @@ public class AutoclickIndicatorView extends View { static final int MINIMAL_ANIMATION_DURATION = 50; private final int mColor = R.color.materialColorPrimary; // Radius of the indicator circle. private int mRadius = AUTOCLICK_CURSOR_AREA_SIZE_DEFAULT; Loading Loading @@ -77,7 +80,7 @@ public class AutoclickIndicatorView extends View { super(context); mPaint = new Paint(); mPaint.setColor(context.getColor(R.color.materialColorPrimary)); mPaint.setColor(context.getColor(mColor)); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(10); Loading Loading @@ -141,6 +144,17 @@ public class AutoclickIndicatorView extends View { setMeasuredDimension(screenWidth, screenHeight); } @Override public void onConfigurationChanged(Configuration newConfig) { post(new Runnable() { @Override public void run() { // Only color needs to be updated when system theme is changed. mPaint.setColor(getContext().getColor(mColor)); } }); } public void setCoordination(float x, float y) { mMouseX = x; mMouseY = y; Loading services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Configuration; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; Loading Loading @@ -1525,6 +1526,23 @@ public class AutoclickControllerTest { assertThat(mController.getActiveClickTypeForTest()) .isEqualTo(AutoclickTypePanel.AUTOCLICK_TYPE_LEFT_CLICK); } @Test @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) public void onConfigurationChanged_tellsPanelToUpdateTheme() throws Exception { injectFakeMouseActionHoverMoveEvent(); // Create a spy on the real object to verify method calls. AutoclickIndicatorView spyIndicatorView = spy(mController.mAutoclickIndicatorView); mController.mAutoclickIndicatorView = spyIndicatorView; // Simulate a theme change. Configuration newConfig = new Configuration(); mController.onConfigurationChanged(newConfig); // Verify updateConfiguration was called. verify(spyIndicatorView).onConfigurationChanged(newConfig); } /** * ========================================================================= * Helper Functions Loading Loading
services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickController.java +19 −1 Original line number Diff line number Diff line Loading @@ -39,8 +39,10 @@ import android.accessibilityservice.AccessibilityTrace; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread; import android.content.ComponentCallbacks; import android.content.ContentResolver; import android.content.Context; import android.content.res.Configuration; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; Loading Loading @@ -85,7 +87,8 @@ import com.android.server.accessibility.Flags; * * Each instance is associated to a single user (and it does not handle user switch itself). */ public class AutoclickController extends BaseEventStreamTransformation { public class AutoclickController extends BaseEventStreamTransformation implements ComponentCallbacks { // Default duration between mouse movement stops and the auto click happens. public static final int DEFAULT_AUTOCLICK_DELAY_TIME = Flags.enableAutoclickIndicator() Loading Loading @@ -335,6 +338,7 @@ public class AutoclickController extends BaseEventStreamTransformation { }; mAutoclickTypePanel.show(); mContext.registerComponentCallbacks(this); mWindowManager.addView(mAutoclickIndicatorView, mAutoclickIndicatorView.getLayoutParams()); } Loading Loading @@ -370,6 +374,7 @@ public class AutoclickController extends BaseEventStreamTransformation { @Override public void onDestroy() { mContext.unregisterComponentCallbacks(this); if (mAutoclickSettingsObserver != null) { mAutoclickSettingsObserver.stop(); mAutoclickSettingsObserver = null; Loading Loading @@ -575,6 +580,19 @@ public class AutoclickController extends BaseEventStreamTransformation { return mActiveClickType; } @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { if (mAutoclickIndicatorView != null) { // When system configuration is changed, update the indicator view configuration. mAutoclickIndicatorView.onConfigurationChanged(newConfig); } } @Override public void onLowMemory() { } /** * Observes and updates various autoclick setting values. */ Loading
services/accessibility/java/com/android/server/accessibility/autoclick/AutoclickIndicatorView.java +15 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.accessibility.AccessibilityManager.AUTOCLICK_CURSOR_A import android.animation.ValueAnimator; import android.content.Context; import android.content.res.Configuration; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PixelFormat; Loading @@ -47,6 +48,8 @@ public class AutoclickIndicatorView extends View { static final int MINIMAL_ANIMATION_DURATION = 50; private final int mColor = R.color.materialColorPrimary; // Radius of the indicator circle. private int mRadius = AUTOCLICK_CURSOR_AREA_SIZE_DEFAULT; Loading Loading @@ -77,7 +80,7 @@ public class AutoclickIndicatorView extends View { super(context); mPaint = new Paint(); mPaint.setColor(context.getColor(R.color.materialColorPrimary)); mPaint.setColor(context.getColor(mColor)); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(10); Loading Loading @@ -141,6 +144,17 @@ public class AutoclickIndicatorView extends View { setMeasuredDimension(screenWidth, screenHeight); } @Override public void onConfigurationChanged(Configuration newConfig) { post(new Runnable() { @Override public void run() { // Only color needs to be updated when system theme is changed. mPaint.setColor(getContext().getColor(mColor)); } }); } public void setCoordination(float x, float y) { mMouseX = x; mMouseY = y; Loading
services/tests/servicestests/src/com/android/server/accessibility/autoclick/AutoclickControllerTest.java +18 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Configuration; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; Loading Loading @@ -1525,6 +1526,23 @@ public class AutoclickControllerTest { assertThat(mController.getActiveClickTypeForTest()) .isEqualTo(AutoclickTypePanel.AUTOCLICK_TYPE_LEFT_CLICK); } @Test @EnableFlags(com.android.server.accessibility.Flags.FLAG_ENABLE_AUTOCLICK_INDICATOR) public void onConfigurationChanged_tellsPanelToUpdateTheme() throws Exception { injectFakeMouseActionHoverMoveEvent(); // Create a spy on the real object to verify method calls. AutoclickIndicatorView spyIndicatorView = spy(mController.mAutoclickIndicatorView); mController.mAutoclickIndicatorView = spyIndicatorView; // Simulate a theme change. Configuration newConfig = new Configuration(); mController.onConfigurationChanged(newConfig); // Verify updateConfiguration was called. verify(spyIndicatorView).onConfigurationChanged(newConfig); } /** * ========================================================================= * Helper Functions Loading