Merge "chore(#AlwaysOnMagnifier): Support feature flag flips observation"

This commit is contained in:
Roy Chou
2023-02-17 01:03:04 +00:00
committed by Android (Google) Code Review
3 changed files with 53 additions and 0 deletions

View File

@@ -4577,6 +4577,17 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
return false;
}
/**
* Called when always on magnification feature flag flips to check if the feature should be
* enabled for current user state.
*/
public void updateAlwaysOnMagnification() {
synchronized (mLock) {
readAlwaysOnMagnificationLocked(getCurrentUserState());
}
}
@GuardedBy("mLock")
boolean readAlwaysOnMagnificationLocked(AccessibilityUserState userState) {
final boolean isSettingsAlwaysOnEnabled = Settings.Secure.getIntForUser(
mContext.getContentResolver(),

View File

@@ -16,10 +16,13 @@
package com.android.server.accessibility.magnification;
import android.annotation.NonNull;
import android.provider.DeviceConfig;
import com.android.internal.annotations.VisibleForTesting;
import java.util.concurrent.Executor;
/**
* Encapsulates the feature flags for always on magnification. {@see DeviceConfig}
*
@@ -50,4 +53,39 @@ public class AlwaysOnMagnificationFeatureFlag {
Boolean.toString(isEnabled),
/* makeDefault= */ false);
}
/**
* Adds a listener for when the feature flag changes.
*
* <p>{@see DeviceConfig#addOnPropertiesChangedListener(
* String, Executor, DeviceConfig.OnPropertiesChangedListener)}
*/
@NonNull
public static DeviceConfig.OnPropertiesChangedListener addOnChangedListener(
@NonNull Executor executor, @NonNull Runnable listener) {
DeviceConfig.OnPropertiesChangedListener onChangedListener =
properties -> {
if (properties.getKeyset().contains(
FEATURE_NAME_ENABLE_ALWAYS_ON_MAGNIFICATION)) {
listener.run();
}
};
DeviceConfig.addOnPropertiesChangedListener(
NAMESPACE,
executor,
onChangedListener);
return onChangedListener;
}
/**
* Remove a listener for when the feature flag changes.
*
* <p>{@see DeviceConfig#addOnPropertiesChangedListener(String, Executor,
* DeviceConfig.OnPropertiesChangedListener)}
*/
public static void removeOnChangedListener(
@NonNull DeviceConfig.OnPropertiesChangedListener onChangedListener) {
DeviceConfig.removeOnPropertiesChangedListener(onChangedListener);
}
}

View File

@@ -48,6 +48,7 @@ import android.view.accessibility.MagnificationAnimationCallback;
import com.android.internal.accessibility.util.AccessibilityStatsLogUtils;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ConcurrentUtils;
import com.android.server.LocalServices;
import com.android.server.accessibility.AccessibilityManagerService;
import com.android.server.wm.WindowManagerInternal;
@@ -149,6 +150,9 @@ public class MagnificationController implements WindowMagnificationManager.Callb
.getAccessibilityController().setUiChangesForAccessibilityCallbacks(this);
mSupportWindowMagnification = context.getPackageManager().hasSystemFeature(
FEATURE_WINDOW_MAGNIFICATION);
AlwaysOnMagnificationFeatureFlag.addOnChangedListener(
ConcurrentUtils.DIRECT_EXECUTOR, mAms::updateAlwaysOnMagnification);
}
@VisibleForTesting