Merge "Revert "fix(magnification thumbnail): remove feature flag, enable thumbnail by default"" into main

This commit is contained in:
Tyler Freeman
2023-07-31 16:19:16 +00:00
committed by Android (Google) Code Review
2 changed files with 83 additions and 5 deletions

View File

@@ -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;
/**
@@ -689,6 +690,13 @@ public class FullScreenMagnificationController implements
}
}
void onThumbnailFeatureFlagChanged() {
synchronized (mLock) {
destroyThumbnail();
createThumbnailIfSupported();
}
}
/**
* Updates the current magnification spec.
*
@@ -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 = () -> {
return new MagnificationThumbnail(
ctx.getContext(),
ctx.getContext().getSystemService(WindowManager.class),
new Handler(ctx.getContext().getMainLooper())
);
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.

View File

@@ -0,0 +1,46 @@
/*
* 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;
}
}