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

Commit e829eec0 authored by Vaibhav Devmurari's avatar Vaibhav Devmurari Committed by Automerger Merge Worker
Browse files

Merge "Force input device changed callback when Keyboard layout info is...

Merge "Force input device changed callback when Keyboard layout info is updated" into udc-dev am: 8bf29931 am: a0f0b93f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/22574504



Change-Id: I1d041fe2889e514c7e2d4b4e64e909b9f1abe98f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e67f4a97 a0f0b93f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -212,6 +212,11 @@ struct KeyboardLayoutInfo {
    std::string languageTag;
    // The layout type such as QWERTY or AZERTY.
    std::string layoutType;

    inline bool operator==(const KeyboardLayoutInfo& other) const {
        return languageTag == other.languageTag && layoutType == other.layoutType;
    }
    inline bool operator!=(const KeyboardLayoutInfo& other) const { return !(*this == other); }
};

// The version of the Universal Stylus Initiative (USI) protocol supported by the input device.
+5 −1
Original line number Diff line number Diff line
@@ -148,8 +148,12 @@ std::list<NotifyArgs> KeyboardInputMapper::reconfigure(nsecs_t when,

    if (!changes.any() ||
        changes.test(InputReaderConfiguration::Change::KEYBOARD_LAYOUT_ASSOCIATION)) {
        mKeyboardLayoutInfo =
        std::optional<KeyboardLayoutInfo> newKeyboardLayoutInfo =
                getValueByKey(config.keyboardLayoutAssociations, getDeviceContext().getLocation());
        if (mKeyboardLayoutInfo != newKeyboardLayoutInfo) {
            mKeyboardLayoutInfo = newKeyboardLayoutInfo;
            bumpGeneration();
        }
    }

    return out;
+9 −0
Original line number Diff line number Diff line
@@ -3687,6 +3687,7 @@ TEST_F(KeyboardInputMapperTest, Configure_AssignKeyboardLayoutInfo) {
            mDevice->configure(ARBITRARY_TIME, mFakePolicy->getReaderConfiguration(),
                               /*changes=*/{});
    uint32_t generation = mReader->getContext()->getGeneration();
    mFakePolicy->addKeyboardLayoutAssociation(DEVICE_LOCATION, DEVICE_KEYBOARD_LAYOUT_INFO);
    unused += mDevice->configure(ARBITRARY_TIME, mFakePolicy->getReaderConfiguration(),
@@ -3697,6 +3698,14 @@ TEST_F(KeyboardInputMapperTest, Configure_AssignKeyboardLayoutInfo) {
              deviceInfo.getKeyboardLayoutInfo()->languageTag);
    ASSERT_EQ(DEVICE_KEYBOARD_LAYOUT_INFO.layoutType,
              deviceInfo.getKeyboardLayoutInfo()->layoutType);
    ASSERT_TRUE(mReader->getContext()->getGeneration() != generation);
    // Call change layout association with the same values: Generation shouldn't change
    generation = mReader->getContext()->getGeneration();
    mFakePolicy->addKeyboardLayoutAssociation(DEVICE_LOCATION, DEVICE_KEYBOARD_LAYOUT_INFO);
    unused += mDevice->configure(ARBITRARY_TIME, mFakePolicy->getReaderConfiguration(),
                                 InputReaderConfiguration::Change::KEYBOARD_LAYOUT_ASSOCIATION);
    ASSERT_TRUE(mReader->getContext()->getGeneration() == generation);
}
TEST_F(KeyboardInputMapperTest, LayoutInfoCorrectlyMapped) {