Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fdfd0d85 authored by alanv's avatar alanv
Browse files

Only inject accessibility when speaking service enabled.

Bug: 6922883
Change-Id: I48d03a2da9bcf7375156c84219802bf20af4ddc6
parent 6624afe3
Loading
Loading
Loading
Loading
+23 −9
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package android.webkit;
package android.webkit;


import android.accessibilityservice.AccessibilityServiceInfo;
import android.animation.ObjectAnimator;
import android.animation.ObjectAnimator;
import android.annotation.Widget;
import android.annotation.Widget;
import android.app.ActivityManager;
import android.app.ActivityManager;
@@ -1743,8 +1744,21 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
        event.setMaxScrollY(Math.max(convertedContentHeight - adjustedViewHeight, 0));
        event.setMaxScrollY(Math.max(convertedContentHeight - adjustedViewHeight, 0));
    }
    }


    private boolean isAccessibilityEnabled() {
    private boolean isAccessibilityInjectionEnabled() {
        return AccessibilityManager.getInstance(mContext).isEnabled();
        final AccessibilityManager manager = AccessibilityManager.getInstance(mContext);
        if (!manager.isEnabled()) {
            return false;
        }

        // Accessibility scripts should be injected only when a speaking service
        // is enabled. This may need to change later to accommodate Braille.
        final List<AccessibilityServiceInfo> services = manager.getEnabledAccessibilityServiceList(
                AccessibilityServiceInfo.FEEDBACK_SPOKEN);
        if (services.isEmpty()) {
            return false;
        }

        return true;
    }
    }


    private AccessibilityInjector getAccessibilityInjector() {
    private AccessibilityInjector getAccessibilityInjector() {
@@ -3930,7 +3944,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc


        // reset the flag since we set to true in if need after
        // reset the flag since we set to true in if need after
        // loading is see onPageFinished(Url)
        // loading is see onPageFinished(Url)
        if (isAccessibilityEnabled()) {
        if (isAccessibilityInjectionEnabled()) {
            getAccessibilityInjector().onPageStarted(url);
            getAccessibilityInjector().onPageStarted(url);
        }
        }


@@ -3945,7 +3959,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
    /* package */ void onPageFinished(String url) {
    /* package */ void onPageFinished(String url) {
        mZoomManager.onPageFinished(url);
        mZoomManager.onPageFinished(url);


        if (isAccessibilityEnabled()) {
        if (isAccessibilityInjectionEnabled()) {
            getAccessibilityInjector().onPageFinished(url);
            getAccessibilityInjector().onPageFinished(url);
        }
        }
    }
    }
@@ -4986,7 +5000,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
        }
        }


        // See if the accessibility injector needs to handle this event.
        // See if the accessibility injector needs to handle this event.
        if (isAccessibilityEnabled()
        if (isAccessibilityInjectionEnabled()
                && getAccessibilityInjector().handleKeyEventIfNecessary(event)) {
                && getAccessibilityInjector().handleKeyEventIfNecessary(event)) {
            return true;
            return true;
        }
        }
@@ -5093,7 +5107,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
        }
        }


        // See if the accessibility injector needs to handle this event.
        // See if the accessibility injector needs to handle this event.
        if (isAccessibilityEnabled()
        if (isAccessibilityInjectionEnabled()
                && getAccessibilityInjector().handleKeyEventIfNecessary(event)) {
                && getAccessibilityInjector().handleKeyEventIfNecessary(event)) {
            return true;
            return true;
        }
        }
@@ -5344,7 +5358,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
    public void onAttachedToWindow() {
    public void onAttachedToWindow() {
        if (mWebView.hasWindowFocus()) setActive(true);
        if (mWebView.hasWindowFocus()) setActive(true);


        if (isAccessibilityEnabled()) {
        if (isAccessibilityInjectionEnabled()) {
            getAccessibilityInjector().addAccessibilityApisIfNecessary();
            getAccessibilityInjector().addAccessibilityApisIfNecessary();
        }
        }


@@ -5357,7 +5371,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
        mZoomManager.dismissZoomPicker();
        mZoomManager.dismissZoomPicker();
        if (mWebView.hasWindowFocus()) setActive(false);
        if (mWebView.hasWindowFocus()) setActive(false);


        if (isAccessibilityEnabled()) {
        if (isAccessibilityInjectionEnabled()) {
            getAccessibilityInjector().removeAccessibilityApisIfNecessary();
            getAccessibilityInjector().removeAccessibilityApisIfNecessary();
        } else {
        } else {
            // Ensure the injector is cleared if we're detaching from the window
            // Ensure the injector is cleared if we're detaching from the window
@@ -7439,7 +7453,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
                    break;
                    break;


                case SELECTION_STRING_CHANGED:
                case SELECTION_STRING_CHANGED:
                    if (isAccessibilityEnabled()) {
                    if (isAccessibilityInjectionEnabled()) {
                        getAccessibilityInjector()
                        getAccessibilityInjector()
                                .handleSelectionChangedIfNecessary((String) msg.obj);
                                .handleSelectionChangedIfNecessary((String) msg.obj);
                    }
                    }