Skip to content

Commit 81a698e

Browse files
committed
KeyboardInputMapper: Refactor alphabetic keyboard wake unit tests
The mock device for KeyboardInputMapperUnitTest was not an alphabetic keyboard. Created subclasses with mock alphabetic keyboard and different flag states to enable test cases for alphabtic and non-alphabetic keyboards in addition to different flag states. Test: atest --host inputflinger_tests Bug: 394280942 Flag: TEST_ONLY Change-Id: Ia2faf945d3aa3ee138d99a2a2a854006c31c10da
1 parent 1a3b2cd commit 81a698e

1 file changed

Lines changed: 141 additions & 10 deletions

File tree

services/inputflinger/tests/KeyboardInputMapper_test.cpp

Lines changed: 141 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -691,32 +691,163 @@ TEST_F(KeyboardInputMapperUnitTest, Process_GestureEventToSetFlagKeepTouchMode)
691691
expectSingleKeyArg(argsList).flags);
692692
}
693693

694-
TEST_F_WITH_FLAGS(KeyboardInputMapperUnitTest, WakeBehavior_AlphabeticKeyboard,
695-
REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(com::android::input::flags,
696-
enable_alphabetic_keyboard_wake))) {
697-
// For internal alphabetic devices, keys will trigger wake on key down.
694+
// --- KeyboardInputMapperUnitTest_WakeFlagOverride ---
695+
696+
class KeyboardInputMapperUnitTest_WakeFlagOverride : public KeyboardInputMapperUnitTest {
697+
protected:
698+
virtual void SetUp() override {
699+
SetUp(/*wakeFlag=*/com::android::input::flags::enable_alphabetic_keyboard_wake());
700+
}
701+
702+
void SetUp(bool wakeFlag) {
703+
mWakeFlagInitialValue = com::android::input::flags::enable_alphabetic_keyboard_wake();
704+
com::android::input::flags::enable_alphabetic_keyboard_wake(wakeFlag);
705+
KeyboardInputMapperUnitTest::SetUp();
706+
}
707+
708+
void TearDown() override {
709+
com::android::input::flags::enable_alphabetic_keyboard_wake(mWakeFlagInitialValue);
710+
KeyboardInputMapperUnitTest::TearDown();
711+
}
712+
713+
bool mWakeFlagInitialValue;
714+
};
715+
716+
// --- KeyboardInputMapperUnitTest_NonAlphabeticKeyboard_WakeFlagEnabled ---
717+
718+
class KeyboardInputMapperUnitTest_NonAlphabeticKeyboard_WakeFlagEnabled
719+
: public KeyboardInputMapperUnitTest_WakeFlagOverride {
720+
protected:
721+
void SetUp() override {
722+
KeyboardInputMapperUnitTest_WakeFlagOverride::SetUp(/*wakeFlag=*/true);
723+
}
724+
};
725+
726+
TEST_F(KeyboardInputMapperUnitTest_NonAlphabeticKeyboard_WakeFlagEnabled,
727+
NonAlphabeticDevice_WakeBehavior) {
728+
// For internal non-alphabetic devices keys will not trigger wake.
698729

699730
addKeyByEvdevCode(KEY_A, AKEYCODE_A);
700731
addKeyByEvdevCode(KEY_HOME, AKEYCODE_HOME);
701732
addKeyByEvdevCode(KEY_PLAYPAUSE, AKEYCODE_MEDIA_PLAY_PAUSE);
702733

703734
std::list<NotifyArgs> argsList = processKeyAndSync(ARBITRARY_TIME, KEY_A, 1);
704-
ASSERT_EQ(POLICY_FLAG_WAKE, expectSingleKeyArg(argsList).policyFlags);
735+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
705736

706737
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_A, 0);
707-
ASSERT_EQ(uint32_t(0), expectSingleKeyArg(argsList).policyFlags);
738+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
708739

709740
argsList = processKeyAndSync(ARBITRARY_TIME, KEY_HOME, 1);
710-
ASSERT_EQ(POLICY_FLAG_WAKE, expectSingleKeyArg(argsList).policyFlags);
741+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
711742

712743
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_HOME, 0);
713-
ASSERT_EQ(uint32_t(0), expectSingleKeyArg(argsList).policyFlags);
744+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
714745

715746
argsList = processKeyAndSync(ARBITRARY_TIME, KEY_PLAYPAUSE, 1);
716-
ASSERT_EQ(POLICY_FLAG_WAKE, expectSingleKeyArg(argsList).policyFlags);
747+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
717748

718749
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_PLAYPAUSE, 0);
719-
ASSERT_EQ(uint32_t(0), expectSingleKeyArg(argsList).policyFlags);
750+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
751+
}
752+
753+
// --- KeyboardInputMapperUnitTest_AlphabeticKeyboard_WakeFlagEnabled ---
754+
755+
class KeyboardInputMapperUnitTest_AlphabeticKeyboard_WakeFlagEnabled
756+
: public KeyboardInputMapperUnitTest_WakeFlagOverride {
757+
protected:
758+
void SetUp() override {
759+
KeyboardInputMapperUnitTest_WakeFlagOverride::SetUp(/*wakeFlag=*/true);
760+
761+
ON_CALL((*mDevice), getKeyboardType).WillByDefault(Return(KeyboardType::ALPHABETIC));
762+
}
763+
};
764+
765+
TEST_F(KeyboardInputMapperUnitTest_AlphabeticKeyboard_WakeFlagEnabled, WakeBehavior) {
766+
// For internal alphabetic devices, keys will trigger wake on key down when
767+
// flag is enabled.
768+
addKeyByEvdevCode(KEY_A, AKEYCODE_A);
769+
addKeyByEvdevCode(KEY_HOME, AKEYCODE_HOME);
770+
addKeyByEvdevCode(KEY_PLAYPAUSE, AKEYCODE_MEDIA_PLAY_PAUSE);
771+
772+
std::list<NotifyArgs> argsList = processKeyAndSync(ARBITRARY_TIME, KEY_A, 1);
773+
EXPECT_THAT(argsList,
774+
ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(POLICY_FLAG_WAKE))));
775+
776+
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_A, 0);
777+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
778+
779+
argsList = processKeyAndSync(ARBITRARY_TIME, KEY_HOME, 1);
780+
EXPECT_THAT(argsList,
781+
ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(POLICY_FLAG_WAKE))));
782+
783+
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_HOME, 0);
784+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
785+
786+
argsList = processKeyAndSync(ARBITRARY_TIME, KEY_PLAYPAUSE, 1);
787+
EXPECT_THAT(argsList,
788+
ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(POLICY_FLAG_WAKE))));
789+
790+
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_PLAYPAUSE, 0);
791+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
792+
}
793+
794+
TEST_F(KeyboardInputMapperUnitTest_AlphabeticKeyboard_WakeFlagEnabled, WakeBehavior_UnknownKey) {
795+
// For internal alphabetic devices, unknown keys will trigger wake on key down when
796+
// flag is enabled.
797+
798+
const int32_t USAGE_UNKNOWN = 0x07ffff;
799+
EXPECT_CALL(mMockEventHub, mapKey(EVENTHUB_ID, KEY_UNKNOWN, USAGE_UNKNOWN, _, _, _, _))
800+
.WillRepeatedly(Return(NAME_NOT_FOUND));
801+
802+
// Key down with unknown scan code or usage code.
803+
std::list<NotifyArgs> argsList = process(ARBITRARY_TIME, EV_MSC, MSC_SCAN, USAGE_UNKNOWN);
804+
argsList += process(ARBITRARY_TIME, EV_KEY, KEY_UNKNOWN, 1);
805+
EXPECT_THAT(argsList,
806+
ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(POLICY_FLAG_WAKE))));
807+
808+
// Key up with unknown scan code or usage code.
809+
argsList = process(ARBITRARY_TIME, EV_MSC, MSC_SCAN, USAGE_UNKNOWN);
810+
argsList += process(ARBITRARY_TIME + 1, EV_KEY, KEY_UNKNOWN, 0);
811+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
812+
}
813+
814+
// --- KeyboardInputMapperUnitTest_AlphabeticDevice_AlphabeticKeyboardWakeDisabled ---
815+
816+
class KeyboardInputMapperUnitTest_AlphabeticKeyboard_WakeFlagDisabled
817+
: public KeyboardInputMapperUnitTest_WakeFlagOverride {
818+
protected:
819+
void SetUp() override {
820+
KeyboardInputMapperUnitTest_WakeFlagOverride::SetUp(/*wakeFlag=*/false);
821+
822+
ON_CALL((*mDevice), getKeyboardType).WillByDefault(Return(KeyboardType::ALPHABETIC));
823+
}
824+
};
825+
826+
TEST_F(KeyboardInputMapperUnitTest_AlphabeticKeyboard_WakeFlagDisabled, WakeBehavior) {
827+
// For internal alphabetic devices, keys will not trigger wake when flag is
828+
// disabled.
829+
830+
addKeyByEvdevCode(KEY_A, AKEYCODE_A);
831+
addKeyByEvdevCode(KEY_HOME, AKEYCODE_HOME);
832+
addKeyByEvdevCode(KEY_PLAYPAUSE, AKEYCODE_MEDIA_PLAY_PAUSE);
833+
834+
std::list<NotifyArgs> argsList = processKeyAndSync(ARBITRARY_TIME, KEY_A, 1);
835+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
836+
837+
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_A, 0);
838+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
839+
840+
argsList = processKeyAndSync(ARBITRARY_TIME, KEY_HOME, 1);
841+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
842+
843+
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_HOME, 0);
844+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
845+
846+
argsList = processKeyAndSync(ARBITRARY_TIME, KEY_PLAYPAUSE, 1);
847+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
848+
849+
argsList = processKeyAndSync(ARBITRARY_TIME + 1, KEY_PLAYPAUSE, 0);
850+
EXPECT_THAT(argsList, ElementsAre(VariantWith<NotifyKeyArgs>(WithPolicyFlags(0U))));
720851
}
721852

722853
// --- KeyboardInputMapperTest ---

0 commit comments

Comments
 (0)