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

Commit 16bf2842 authored by Riley Jones's avatar Riley Jones Committed by Automerger Merge Worker
Browse files

Merge "AccessibilityMenuService test class setup & initial test." into udc-dev am: 9142b4d4

parents f9b2e3df 9142b4d4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -18,6 +18,15 @@ package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

// This filegroup is used by menu tests.
filegroup {
    name: "AccessibilityMenuSource",
    srcs: [
        "src/**/AccessibilityMenuService.java",
        "src/**/A11yMenuShortcut.java",
    ],
}

android_app {
    name: "AccessibilityMenu",

+1 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shortcutItem"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="@dimen/grid_item_padding"
+34 −7
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.accessibility.accessibilitymenu;

import android.Manifest;
import android.accessibilityservice.AccessibilityButtonController;
import android.accessibilityservice.AccessibilityService;
import android.content.BroadcastReceiver;
@@ -51,8 +52,12 @@ import java.util.List;
/** @hide */
public class AccessibilityMenuService extends AccessibilityService
        implements View.OnTouchListener {
    private static final String TAG = "A11yMenuService";

    public static final String PACKAGE_NAME = AccessibilityMenuService.class.getPackageName();
    public static final String INTENT_TOGGLE_MENU = ".toggle_menu";
    public static final String INTENT_HIDE_MENU = ".hide_menu";

    private static final String TAG = "A11yMenuService";
    private static final long BUFFER_MILLISECONDS_TO_PREVENT_UPDATE_FAILURE = 100L;

    private static final int BRIGHTNESS_UP_INCREMENT_GAMMA =
@@ -74,7 +79,8 @@ public class AccessibilityMenuService extends AccessibilityService

    // TODO(b/136716947): Support multi-display once a11y framework side is ready.
    private DisplayManager mDisplayManager;
    final DisplayManager.DisplayListener mDisplayListener = new DisplayManager.DisplayListener() {
    private final DisplayManager.DisplayListener mDisplayListener =
            new DisplayManager.DisplayListener() {
        int mRotation;

        @Override
@@ -95,13 +101,20 @@ public class AccessibilityMenuService extends AccessibilityService
        }
    };

    final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    private final BroadcastReceiver mHideMenuReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            mA11yMenuLayout.hideMenu();
        }
    };

    private final BroadcastReceiver mToggleMenuReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            mA11yMenuLayout.toggleVisibility();
        }
    };

    /**
     * Update a11y menu layout when large button setting is changed.
     */
@@ -172,7 +185,19 @@ public class AccessibilityMenuService extends AccessibilityService
    protected void onServiceConnected() {
        mA11yMenuLayout = new A11yMenuOverlayLayout(this);

        registerReceiver(mBroadcastReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
        IntentFilter hideMenuFilter = new IntentFilter();
        hideMenuFilter.addAction(Intent.ACTION_SCREEN_OFF);
        hideMenuFilter.addAction(PACKAGE_NAME + INTENT_HIDE_MENU);

        // Including WRITE_SECURE_SETTINGS enforces that we only listen to apps
        // with the restricted WRITE_SECURE_SETTINGS permission who broadcast this intent.
        registerReceiver(mHideMenuReceiver, hideMenuFilter,
                Manifest.permission.WRITE_SECURE_SETTINGS, null,
                Context.RECEIVER_EXPORTED);
        registerReceiver(mToggleMenuReceiver,
                new IntentFilter(PACKAGE_NAME + INTENT_TOGGLE_MENU),
                Manifest.permission.WRITE_SECURE_SETTINGS, null,
                Context.RECEIVER_EXPORTED);

        mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        mPrefs.registerOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener);
@@ -260,7 +285,8 @@ public class AccessibilityMenuService extends AccessibilityService
     * @param increment The increment amount in gamma-space
     */
    private void adjustBrightness(int increment) {
        BrightnessInfo info = getDisplay().getBrightnessInfo();
        Display display = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY);
        BrightnessInfo info = display.getBrightnessInfo();
        int gamma = BrightnessUtils.convertLinearToGammaFloat(
                info.brightness,
                info.brightnessMinimum,
@@ -275,7 +301,7 @@ public class AccessibilityMenuService extends AccessibilityService
                info.brightnessMinimum,
                info.brightnessMaximum
        );
        mDisplayManager.setBrightness(getDisplayId(), brightness);
        mDisplayManager.setBrightness(display.getDisplayId(), brightness);
        mA11yMenuLayout.showSnackbar(
                getString(R.string.brightness_percentage_label,
                        (gamma / (BrightnessUtils.GAMMA_SPACE_MAX / 100))));
@@ -310,7 +336,8 @@ public class AccessibilityMenuService extends AccessibilityService

    @Override
    public boolean onUnbind(Intent intent) {
        unregisterReceiver(mBroadcastReceiver);
        unregisterReceiver(mHideMenuReceiver);
        unregisterReceiver(mToggleMenuReceiver);
        mPrefs.unregisterOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener);
        sInitialized = false;
        return super.onUnbind(intent);
+10 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.view.LayoutInflater;
import android.view.TouchDelegate;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
@@ -146,6 +147,15 @@ public class A11yMenuAdapter extends BaseAdapter {

            shortcutIconButton.setBackground(
                    mShortcutDrawableUtils.createAdaptiveIconDrawable(shortcutItem.imageColor));

            shortcutIconButton.setAccessibilityDelegate(new View.AccessibilityDelegate() {
                @Override
                public void onInitializeAccessibilityNodeInfo(
                        View host, AccessibilityNodeInfo info) {
                    super.onInitializeAccessibilityNodeInfo(host, info);
                    info.setUniqueId(host.getTag().toString());
                }
            });
        }
    }
}
+43 −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 {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

android_test {
    name: "AccessibilityMenuServiceTests",
    certificate: "platform",
    libs: [
        "android.test.runner",
        "android.test.base",
    ],
    static_libs: [
        "androidx.test.core",
        "androidx.test.runner",
        "androidx.test.ext.junit",
        "compatibility-device-util-axt",
        "platform-test-annotations",
        "truth-prebuilt",
    ],
    srcs: [
        "src/**/*.java",
        ":AccessibilityMenuSource",
    ],
    platform_apis: true,
    test_suites: ["device-tests"],
    instrumentation_for: "AccessibilityMenu",
}
Loading