@@ -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