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

Commit 26db4709 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove VibrationAttributes#CATEGORY_KEYBOARD (in framework)" into main

parents acdbc9c1 6f9cf751
Loading
Loading
Loading
Loading
+4 −80
Original line number Diff line number Diff line
@@ -151,31 +151,6 @@ public final class VibrationAttributes implements Parcelable {
     */
    public static final int USAGE_MEDIA = 0x10 | USAGE_CLASS_MEDIA;

    /** @hide */
    @IntDef(prefix = { "CATEGORY_" }, value = {
            CATEGORY_UNKNOWN,
            CATEGORY_KEYBOARD,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface Category {}

    /**
     * Category value when the vibration category is unknown.
     *
     * @hide
     */
    public static final int CATEGORY_UNKNOWN = 0x0;

    /**
     * Category value for keyboard vibrations.
     *
     * <p>Most typical keyboard vibrations are haptic feedback for virtual keyboard key
     * press/release, for example.
     *
     * @hide
     */
    public static final int CATEGORY_KEYBOARD = 1;

    /**
     * @hide
     */
@@ -252,14 +227,12 @@ public final class VibrationAttributes implements Parcelable {
    private final int mUsage;
    private final int mFlags;
    private final int mOriginalAudioUsage;
    private final int mCategory;

    private VibrationAttributes(@Usage int usage, @AudioAttributes.AttributeUsage int audioUsage,
            @Flag int flags, @Category int category) {
            @Flag int flags) {
        mUsage = usage;
        mOriginalAudioUsage = audioUsage;
        mFlags = flags & FLAG_ALL_SUPPORTED;
        mCategory = category;
    }

    /**
@@ -296,20 +269,6 @@ public final class VibrationAttributes implements Parcelable {
        return mFlags;
    }

    /**
     * Return the vibration category.
     *
     * <p>Vibration categories describe the source of the vibration, and it can be combined with
     * the vibration usage to best match to a user setting, e.g. a vibration with usage touch and
     * category keyboard can be used to control keyboard haptic feedback independently.
     *
     * @hide
     */
    @Category
    public int getCategory() {
        return mCategory;
    }

    /**
     * Check whether a flag is set
     * @return true if a flag is set and false otherwise
@@ -362,14 +321,12 @@ public final class VibrationAttributes implements Parcelable {
        dest.writeInt(mUsage);
        dest.writeInt(mOriginalAudioUsage);
        dest.writeInt(mFlags);
        dest.writeInt(mCategory);
    }

    private VibrationAttributes(Parcel src) {
        mUsage = src.readInt();
        mOriginalAudioUsage = src.readInt();
        mFlags = src.readInt();
        mCategory = src.readInt();
    }

    public static final @NonNull Parcelable.Creator<VibrationAttributes>
@@ -392,12 +349,12 @@ public final class VibrationAttributes implements Parcelable {
        }
        VibrationAttributes rhs = (VibrationAttributes) o;
        return mUsage == rhs.mUsage && mOriginalAudioUsage == rhs.mOriginalAudioUsage
                && mFlags == rhs.mFlags && mCategory == rhs.mCategory;
                && mFlags == rhs.mFlags;
    }

    @Override
    public int hashCode() {
        return Objects.hash(mUsage, mOriginalAudioUsage, mFlags, mCategory);
        return Objects.hash(mUsage, mOriginalAudioUsage, mFlags);
    }

    @Override
@@ -405,7 +362,6 @@ public final class VibrationAttributes implements Parcelable {
        return "VibrationAttributes{"
                + "mUsage=" + usageToString()
                + ", mAudioUsage= " + AudioAttributes.usageToString(mOriginalAudioUsage)
                + ", mCategory=" + categoryToString()
                + ", mFlags=" + mFlags
                + '}';
    }
@@ -445,23 +401,6 @@ public final class VibrationAttributes implements Parcelable {
        }
    }

    /** @hide */
    public String categoryToString() {
        return categoryToString(mCategory);
    }

    /** @hide */
    public static String categoryToString(@Category int category) {
        switch (category) {
            case CATEGORY_UNKNOWN:
                return "UNKNOWN";
            case CATEGORY_KEYBOARD:
                return "KEYBOARD";
            default:
                return "unknown category " + category;
        }
    }

    /**
     * Builder class for {@link VibrationAttributes} objects.
     * By default, all information is set to UNKNOWN.
@@ -471,7 +410,6 @@ public final class VibrationAttributes implements Parcelable {
        private int mUsage = USAGE_UNKNOWN;
        private int mOriginalAudioUsage = AudioAttributes.USAGE_UNKNOWN;
        private int mFlags = 0x0;
        private int mCategory = CATEGORY_UNKNOWN;

        /**
         * Constructs a new Builder with the defaults.
@@ -487,7 +425,6 @@ public final class VibrationAttributes implements Parcelable {
                mUsage = vib.mUsage;
                mOriginalAudioUsage = vib.mOriginalAudioUsage;
                mFlags = vib.mFlags;
                mCategory = vib.mCategory;
            }
        }

@@ -554,7 +491,7 @@ public final class VibrationAttributes implements Parcelable {
         */
        public @NonNull VibrationAttributes build() {
            VibrationAttributes ans = new VibrationAttributes(
                    mUsage, mOriginalAudioUsage, mFlags, mCategory);
                    mUsage, mOriginalAudioUsage, mFlags);
            return ans;
        }

@@ -569,19 +506,6 @@ public final class VibrationAttributes implements Parcelable {
            return this;
        }

        /**
         * Sets the attribute describing the category of the corresponding vibration.
         *
         * @param category The category for the vibration
         * @return the same Builder instance.
         *
         * @hide
         */
        public @NonNull Builder setCategory(@Category int category) {
            mCategory = category;
            return this;
        }

        /**
         * Sets only the flags specified in the bitmask, leaving the other supported flag values
         * unchanged in the builder.
+0 −2
Original line number Diff line number Diff line
@@ -28,11 +28,9 @@ public class VibrationAttributesTest {
    @Test
    public void testSimple() throws Exception {
        final VibrationAttributes attr = new VibrationAttributes.Builder()
                .setCategory(VibrationAttributes.CATEGORY_KEYBOARD)
                .setUsage(VibrationAttributes.USAGE_ALARM)
                .build();

        assertEquals(VibrationAttributes.CATEGORY_KEYBOARD, attr.getCategory());
        assertEquals(VibrationAttributes.USAGE_ALARM, attr.getUsage());
    }
}
+1 −4
Original line number Diff line number Diff line
@@ -364,10 +364,7 @@ public final class HapticFeedbackVibrationProvider {
        if ((privFlags & HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS) == 0) {
            return TOUCH_VIBRATION_ATTRIBUTES;
        }
        return new VibrationAttributes.Builder(IME_FEEDBACK_VIBRATION_ATTRIBUTES)
                // TODO(b/332661766): Remove CATEGORY_KEYBOARD logic
                .setCategory(VibrationAttributes.CATEGORY_KEYBOARD)
                .build();
        return IME_FEEDBACK_VIBRATION_ATTRIBUTES;
    }

    @Nullable
+1 −8
Original line number Diff line number Diff line
@@ -282,12 +282,6 @@ abstract class Vibration {
                    VibrationScaler.scaleLevelToString(mScaleLevel), mAdaptiveScale,
                    Long.toBinaryString(mCallerInfo.attrs.getFlags()),
                    mCallerInfo.attrs.usageToString());
            // Optional, most vibrations have category unknown so skip them to simplify the logs
            String categoryStr =
                    mCallerInfo.attrs.getCategory() != VibrationAttributes.CATEGORY_UNKNOWN
                            ? " | category=" + VibrationAttributes.categoryToString(
                            mCallerInfo.attrs.getCategory())
                            : "";
            // Optional, most vibrations should not be defined via AudioAttributes
            // so skip them to simplify the logs
            String audioUsageStr =
@@ -302,7 +296,7 @@ abstract class Vibration {
                    " | played: %s | original: %s",
                    mPlayedEffect == null ? null : mPlayedEffect.toDebugString(),
                    mOriginalEffect == null ? null : mOriginalEffect.toDebugString());
            pw.println(timingsStr + paramStr + categoryStr + audioUsageStr + callerStr + effectStr);
            pw.println(timingsStr + paramStr + audioUsageStr + callerStr + effectStr);
        }

        /** Write this info into given {@link PrintWriter}. */
@@ -335,7 +329,6 @@ abstract class Vibration {
            final VibrationAttributes attrs = mCallerInfo.attrs;
            proto.write(VibrationAttributesProto.USAGE, attrs.getUsage());
            proto.write(VibrationAttributesProto.AUDIO_USAGE, attrs.getAudioUsage());
            proto.write(VibrationAttributesProto.CATEGORY, attrs.getCategory());
            proto.write(VibrationAttributesProto.FLAGS, attrs.getFlags());
            proto.end(attrsToken);

+3 −9
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.server.vibrator;

import static android.os.VibrationAttributes.CATEGORY_KEYBOARD;
import static android.os.VibrationAttributes.CATEGORY_UNKNOWN;
import static android.os.VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY;
import static android.os.VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF;
import static android.os.VibrationAttributes.USAGE_IME_FEEDBACK;
@@ -255,7 +253,7 @@ public class HapticFeedbackVibrationProviderTest {
    }

    @Test
    public void testKeyboardHaptic_fixAmplitude_keyboardCategoryOn_keyboardVibrationReturned() {
    public void testKeyboardHaptic_fixAmplitude_keyboardVibrationReturned() {
        mockVibratorPrimitiveSupport(PRIMITIVE_CLICK, PRIMITIVE_TICK);
        mockKeyboardVibrationFixedAmplitude(KEYBOARD_VIBRATION_FIXED_AMPLITUDE);

@@ -330,7 +328,7 @@ public class HapticFeedbackVibrationProviderTest {
    }

    @Test
    public void testVibrationAttribute_keyboardCategoryOn_notIme_useTouchUsage() {
    public void testVibrationAttribute_notIme_useTouchUsage() {
        HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations();

        for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
@@ -338,13 +336,11 @@ public class HapticFeedbackVibrationProviderTest {
                    effectId, /* flags */ 0, /* privFlags */ 0);
            assertWithMessage("Expected USAGE_TOUCH for effect " + effectId)
                    .that(attrs.getUsage()).isEqualTo(USAGE_TOUCH);
            assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId)
                    .that(attrs.getCategory()).isEqualTo(CATEGORY_UNKNOWN);
        }
    }

    @Test
    public void testVibrationAttribute_keyboardCategoryOn_isIme_useImeFeedbackUsage() {
    public void testVibrationAttribute_isIme_useImeFeedbackUsage() {
        HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations();

        for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) {
@@ -353,8 +349,6 @@ public class HapticFeedbackVibrationProviderTest {
                    HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS);
            assertWithMessage("Expected USAGE_IME_FEEDBACK for effect " + effectId)
                    .that(attrs.getUsage()).isEqualTo(USAGE_IME_FEEDBACK);
            assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId)
                    .that(attrs.getCategory()).isEqualTo(CATEGORY_KEYBOARD);
        }
    }

Loading