Loading services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +37 −5 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ public class FullScreenMagnificationController implements private boolean mAlwaysOnMagnificationEnabled = false; private final DisplayManagerInternal mDisplayManagerInternal; private final MagnificationThumbnailFeatureFlag mMagnificationThumbnailFeatureFlag; @NonNull private final Supplier<MagnificationThumbnail> mThumbnailSupplier; /** Loading Loading @@ -689,6 +690,13 @@ public class FullScreenMagnificationController implements } } void onThumbnailFeatureFlagChanged() { synchronized (mLock) { destroyThumbnail(); createThumbnailIfSupported(); } } /** * Updates the current magnification spec. * Loading Loading @@ -849,19 +857,43 @@ public class FullScreenMagnificationController implements addInfoChangedCallback(magnificationInfoChangedCallback); mScaleProvider = scaleProvider; mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); mMagnificationThumbnailFeatureFlag = new MagnificationThumbnailFeatureFlag(); mMagnificationThumbnailFeatureFlag.addOnChangedListener( backgroundExecutor, this::onMagnificationThumbnailFeatureFlagChanged); if (thumbnailSupplier != null) { mThumbnailSupplier = thumbnailSupplier; } else { mThumbnailSupplier = () -> { if (mMagnificationThumbnailFeatureFlag.isFeatureFlagEnabled()) { return new MagnificationThumbnail( ctx.getContext(), ctx.getContext().getSystemService(WindowManager.class), new Handler(ctx.getContext().getMainLooper()) ); } return null; }; } } private void onMagnificationThumbnailFeatureFlagChanged() { synchronized (mLock) { for (int i = 0; i < mDisplays.size(); i++) { onMagnificationThumbnailFeatureFlagChanged(mDisplays.keyAt(i)); } } } private void onMagnificationThumbnailFeatureFlagChanged(int displayId) { synchronized (mLock) { final DisplayMagnification display = mDisplays.get(displayId); if (display == null) { return; } display.onThumbnailFeatureFlagChanged(); } } /** * Start tracking the magnification region for services that control magnification and the * magnification gesture handler. Loading services/accessibility/java/com/android/server/accessibility/magnification/MagnificationThumbnailFeatureFlag.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * 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.server.accessibility.magnification; import android.provider.DeviceConfig; /** * Encapsulates the feature flags for magnification thumbnail. {@see DeviceConfig} * * @hide */ public class MagnificationThumbnailFeatureFlag extends MagnificationFeatureFlagBase { private static final String NAMESPACE = DeviceConfig.NAMESPACE_ACCESSIBILITY; private static final String FEATURE_NAME_ENABLE_MAGNIFIER_THUMBNAIL = "enable_magnifier_thumbnail"; @Override String getNamespace() { return NAMESPACE; } @Override String getFeatureName() { return FEATURE_NAME_ENABLE_MAGNIFIER_THUMBNAIL; } @Override boolean getDefaultValue() { return false; } } Loading
services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +37 −5 Original line number Diff line number Diff line Loading @@ -110,6 +110,7 @@ public class FullScreenMagnificationController implements private boolean mAlwaysOnMagnificationEnabled = false; private final DisplayManagerInternal mDisplayManagerInternal; private final MagnificationThumbnailFeatureFlag mMagnificationThumbnailFeatureFlag; @NonNull private final Supplier<MagnificationThumbnail> mThumbnailSupplier; /** Loading Loading @@ -689,6 +690,13 @@ public class FullScreenMagnificationController implements } } void onThumbnailFeatureFlagChanged() { synchronized (mLock) { destroyThumbnail(); createThumbnailIfSupported(); } } /** * Updates the current magnification spec. * Loading Loading @@ -849,19 +857,43 @@ public class FullScreenMagnificationController implements addInfoChangedCallback(magnificationInfoChangedCallback); mScaleProvider = scaleProvider; mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class); mMagnificationThumbnailFeatureFlag = new MagnificationThumbnailFeatureFlag(); mMagnificationThumbnailFeatureFlag.addOnChangedListener( backgroundExecutor, this::onMagnificationThumbnailFeatureFlagChanged); if (thumbnailSupplier != null) { mThumbnailSupplier = thumbnailSupplier; } else { mThumbnailSupplier = () -> { if (mMagnificationThumbnailFeatureFlag.isFeatureFlagEnabled()) { return new MagnificationThumbnail( ctx.getContext(), ctx.getContext().getSystemService(WindowManager.class), new Handler(ctx.getContext().getMainLooper()) ); } return null; }; } } private void onMagnificationThumbnailFeatureFlagChanged() { synchronized (mLock) { for (int i = 0; i < mDisplays.size(); i++) { onMagnificationThumbnailFeatureFlagChanged(mDisplays.keyAt(i)); } } } private void onMagnificationThumbnailFeatureFlagChanged(int displayId) { synchronized (mLock) { final DisplayMagnification display = mDisplays.get(displayId); if (display == null) { return; } display.onThumbnailFeatureFlagChanged(); } } /** * Start tracking the magnification region for services that control magnification and the * magnification gesture handler. Loading
services/accessibility/java/com/android/server/accessibility/magnification/MagnificationThumbnailFeatureFlag.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * 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.server.accessibility.magnification; import android.provider.DeviceConfig; /** * Encapsulates the feature flags for magnification thumbnail. {@see DeviceConfig} * * @hide */ public class MagnificationThumbnailFeatureFlag extends MagnificationFeatureFlagBase { private static final String NAMESPACE = DeviceConfig.NAMESPACE_ACCESSIBILITY; private static final String FEATURE_NAME_ENABLE_MAGNIFIER_THUMBNAIL = "enable_magnifier_thumbnail"; @Override String getNamespace() { return NAMESPACE; } @Override String getFeatureName() { return FEATURE_NAME_ENABLE_MAGNIFIER_THUMBNAIL; } @Override boolean getDefaultValue() { return false; } }