1c29fa5a6Sopenharmony_ci/* 2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License. 5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at 6c29fa5a6Sopenharmony_ci * 7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c29fa5a6Sopenharmony_ci * 9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and 13c29fa5a6Sopenharmony_ci * limitations under the License. 14c29fa5a6Sopenharmony_ci */ 15c29fa5a6Sopenharmony_ci 16c29fa5a6Sopenharmony_ci#include <fstream> 17c29fa5a6Sopenharmony_ci#include <list> 18c29fa5a6Sopenharmony_ci#include <gtest/gtest.h> 19c29fa5a6Sopenharmony_ci 20c29fa5a6Sopenharmony_ci#include "ability_manager_client.h" 21c29fa5a6Sopenharmony_ci#include "display_event_monitor.h" 22c29fa5a6Sopenharmony_ci#include "event_log_helper.h" 23c29fa5a6Sopenharmony_ci#include "key_option.h" 24c29fa5a6Sopenharmony_ci#include "key_gesture_manager.h" 25c29fa5a6Sopenharmony_ci#include "key_event.h" 26c29fa5a6Sopenharmony_ci#include "mmi_log.h" 27c29fa5a6Sopenharmony_ci#include "nap_process.h" 28c29fa5a6Sopenharmony_ci#include "switch_subscriber_handler.h" 29c29fa5a6Sopenharmony_ci#include "uds_server.h" 30c29fa5a6Sopenharmony_ci 31c29fa5a6Sopenharmony_ci#undef MMI_LOG_TAG 32c29fa5a6Sopenharmony_ci#define MMI_LOG_TAG "KeyGestureManagerTest" 33c29fa5a6Sopenharmony_ci 34c29fa5a6Sopenharmony_cinamespace OHOS { 35c29fa5a6Sopenharmony_cinamespace MMI { 36c29fa5a6Sopenharmony_cinamespace { 37c29fa5a6Sopenharmony_ciusing namespace testing::ext; 38c29fa5a6Sopenharmony_ciconstexpr int32_t INVALID_ENTITY_ID { -1 }; 39c29fa5a6Sopenharmony_ciconstexpr size_t SINGLE_KEY_PRESSED { 1 }; 40c29fa5a6Sopenharmony_ci} // namespace 41c29fa5a6Sopenharmony_ci 42c29fa5a6Sopenharmony_ciclass KeyGestureManagerTest : public testing::Test { 43c29fa5a6Sopenharmony_cipublic: 44c29fa5a6Sopenharmony_ci static void SetUpTestCase(void) {} 45c29fa5a6Sopenharmony_ci static void TearDownTestCase(void) {} 46c29fa5a6Sopenharmony_ci}; 47c29fa5a6Sopenharmony_ci 48c29fa5a6Sopenharmony_ciclass MyKeyGesture : public KeyGestureManager::KeyGesture { 49c29fa5a6Sopenharmony_cipublic: 50c29fa5a6Sopenharmony_ci MyKeyGesture() = default; 51c29fa5a6Sopenharmony_ci ~MyKeyGesture() override = default; 52c29fa5a6Sopenharmony_ci 53c29fa5a6Sopenharmony_ci bool IsWorking() override 54c29fa5a6Sopenharmony_ci { 55c29fa5a6Sopenharmony_ci return true; 56c29fa5a6Sopenharmony_ci } 57c29fa5a6Sopenharmony_ci 58c29fa5a6Sopenharmony_ci bool ShouldIntercept(std::shared_ptr<KeyOption> keyOption) const override 59c29fa5a6Sopenharmony_ci { 60c29fa5a6Sopenharmony_ci return true; 61c29fa5a6Sopenharmony_ci } 62c29fa5a6Sopenharmony_ci 63c29fa5a6Sopenharmony_ci bool Intercept(std::shared_ptr<KeyEvent> keyEvent) override 64c29fa5a6Sopenharmony_ci { 65c29fa5a6Sopenharmony_ci return true; 66c29fa5a6Sopenharmony_ci } 67c29fa5a6Sopenharmony_ci 68c29fa5a6Sopenharmony_ci void Dump(std::ostringstream &output) const override 69c29fa5a6Sopenharmony_ci { 70c29fa5a6Sopenharmony_ci output << "MyKeyGesture"; 71c29fa5a6Sopenharmony_ci } 72c29fa5a6Sopenharmony_ci}; 73c29fa5a6Sopenharmony_ci 74c29fa5a6Sopenharmony_ci/** 75c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_002 76c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation Intercept 77c29fa5a6Sopenharmony_ci * @tc.type: FUNC 78c29fa5a6Sopenharmony_ci * @tc.require: 79c29fa5a6Sopenharmony_ci */ 80c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_002, TestSize.Level1) 81c29fa5a6Sopenharmony_ci{ 82c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 83c29fa5a6Sopenharmony_ci KeyGestureManager keyGestureManager; 84c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 85c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 86c29fa5a6Sopenharmony_ci auto keyGesture1 = std::make_unique<MyKeyGesture>(); 87c29fa5a6Sopenharmony_ci auto keyGesture2 = std::make_unique<MyKeyGesture>(); 88c29fa5a6Sopenharmony_ci auto keyGesture3 = std::make_unique<MyKeyGesture>(); 89c29fa5a6Sopenharmony_ci keyGestureManager.keyGestures_.push_back(std::move(keyGesture1)); 90c29fa5a6Sopenharmony_ci keyGestureManager.keyGestures_.push_back(std::move(keyGesture2)); 91c29fa5a6Sopenharmony_ci keyGestureManager.keyGestures_.push_back(std::move(keyGesture3)); 92c29fa5a6Sopenharmony_ci EXPECT_FALSE(EventLogHelper::IsBetaVersion()); 93c29fa5a6Sopenharmony_ci EXPECT_FALSE(keyEvent->HasFlag(InputEvent::EVENT_FLAG_PRIVACY_MODE)); 94c29fa5a6Sopenharmony_ci EXPECT_TRUE(keyGestureManager.Intercept(keyEvent)); 95c29fa5a6Sopenharmony_ci} 96c29fa5a6Sopenharmony_ci 97c29fa5a6Sopenharmony_ci/** 98c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_TriggerHandlers_01 99c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation TriggerHandlers 100c29fa5a6Sopenharmony_ci * @tc.type: FUNC 101c29fa5a6Sopenharmony_ci * @tc.require: 102c29fa5a6Sopenharmony_ci */ 103c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_TriggerHandlers_01, TestSize.Level1) 104c29fa5a6Sopenharmony_ci{ 105c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 106c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 107c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 108c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 109c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 110c29fa5a6Sopenharmony_ci 111c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 112c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 113c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 114c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 115c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 116c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 117c29fa5a6Sopenharmony_ci 118c29fa5a6Sopenharmony_ci std::set<int32_t> foregroundPids = myKeyGesture->GetForegroundPids(); 119c29fa5a6Sopenharmony_ci bool haveForeground = myKeyGesture->HaveForegroundHandler(foregroundPids); 120c29fa5a6Sopenharmony_ci EXPECT_FALSE(haveForeground); 121c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(myKeyGesture->TriggerHandlers(keyEvent)); 122c29fa5a6Sopenharmony_ci} 123c29fa5a6Sopenharmony_ci 124c29fa5a6Sopenharmony_ci/** 125c29fa5a6Sopenharmony_ci * @tc.name: LongPressSingleKey_Dump_01 126c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation LongPressSingleKey_Dump 127c29fa5a6Sopenharmony_ci * @tc.type: FUNC 128c29fa5a6Sopenharmony_ci * @tc.require: 129c29fa5a6Sopenharmony_ci */ 130c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, LongPressSingleKey_Dump_01, TestSize.Level1) 131c29fa5a6Sopenharmony_ci{ 132c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 133c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 134c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 135c29fa5a6Sopenharmony_ci std::ostringstream output; 136c29fa5a6Sopenharmony_ci longPressSingleKey.keyCode_ = 2; 137c29fa5a6Sopenharmony_ci 138c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 139c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 140c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 141c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 142c29fa5a6Sopenharmony_ci 143c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 144c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 145c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 146c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 147c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(longPressSingleKey.Dump(output)); 148c29fa5a6Sopenharmony_ci} 149c29fa5a6Sopenharmony_ci 150c29fa5a6Sopenharmony_ci/** 151c29fa5a6Sopenharmony_ci * @tc.name: LongPressCombinationKey_Dump_01 152c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation LongPressCombinationKey_Dump 153c29fa5a6Sopenharmony_ci * @tc.type: FUNC 154c29fa5a6Sopenharmony_ci * @tc.require: 155c29fa5a6Sopenharmony_ci */ 156c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, LongPressCombinationKey_Dump_01, TestSize.Level1) 157c29fa5a6Sopenharmony_ci{ 158c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 159c29fa5a6Sopenharmony_ci std::set<int32_t> keys = {1, 2, 3}; 160c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressCombinationKey longPressCombinationKey(keys); 161c29fa5a6Sopenharmony_ci std::ostringstream output; 162c29fa5a6Sopenharmony_ci longPressCombinationKey.keys_ = {3, 4, 5, 6}; 163c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(longPressCombinationKey.Dump(output)); 164c29fa5a6Sopenharmony_ci 165c29fa5a6Sopenharmony_ci longPressCombinationKey.keys_ = {}; 166c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 167c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 168c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 169c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 170c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 171c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 172c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 173c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 174c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(longPressCombinationKey.Dump(output)); 175c29fa5a6Sopenharmony_ci} 176c29fa5a6Sopenharmony_ci 177c29fa5a6Sopenharmony_ci/** 178c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_01 179c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation Intercept 180c29fa5a6Sopenharmony_ci * @tc.type: FUNC 181c29fa5a6Sopenharmony_ci * @tc.require: 182c29fa5a6Sopenharmony_ci */ 183c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_01, TestSize.Level1) 184c29fa5a6Sopenharmony_ci{ 185c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 186c29fa5a6Sopenharmony_ci KeyGestureManager keyGestureManager; 187c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 188c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 189c29fa5a6Sopenharmony_ci bool ret = keyGestureManager.Intercept(keyEvent); 190c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 191c29fa5a6Sopenharmony_ci} 192c29fa5a6Sopenharmony_ci 193c29fa5a6Sopenharmony_ci/** 194c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RemoveKeyGesture_01 195c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RemoveKeyGesture 196c29fa5a6Sopenharmony_ci * @tc.type: FUNC 197c29fa5a6Sopenharmony_ci * @tc.require: 198c29fa5a6Sopenharmony_ci */ 199c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RemoveKeyGesture_01, TestSize.Level1) 200c29fa5a6Sopenharmony_ci{ 201c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 202c29fa5a6Sopenharmony_ci KeyGestureManager keyGestureManager; 203c29fa5a6Sopenharmony_ci int32_t id = 1; 204c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(keyGestureManager.RemoveKeyGesture(id)); 205c29fa5a6Sopenharmony_ci} 206c29fa5a6Sopenharmony_ci 207c29fa5a6Sopenharmony_ci/** 208c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RemoveKeyGesture_02 209c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RemoveKeyGesture 210c29fa5a6Sopenharmony_ci * @tc.type: FUNC 211c29fa5a6Sopenharmony_ci * @tc.require: 212c29fa5a6Sopenharmony_ci */ 213c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RemoveKeyGesture_02, TestSize.Level1) 214c29fa5a6Sopenharmony_ci{ 215c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 216c29fa5a6Sopenharmony_ci KeyGestureManager keyGestureManager; 217c29fa5a6Sopenharmony_ci int32_t id = -2; 218c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(keyGestureManager.RemoveKeyGesture(id)); 219c29fa5a6Sopenharmony_ci} 220c29fa5a6Sopenharmony_ci 221c29fa5a6Sopenharmony_ci/** 222c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_AddKeyGesture_01 223c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation AddKeyGesture 224c29fa5a6Sopenharmony_ci * @tc.type: FUNC 225c29fa5a6Sopenharmony_ci * @tc.require: 226c29fa5a6Sopenharmony_ci */ 227c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_AddKeyGesture_01, TestSize.Level1) 228c29fa5a6Sopenharmony_ci{ 229c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 230c29fa5a6Sopenharmony_ci KeyGestureManager keyGestureManager; 231c29fa5a6Sopenharmony_ci int32_t pid = 1; 232c29fa5a6Sopenharmony_ci std::shared_ptr<KeyOption> keyOption = nullptr; 233c29fa5a6Sopenharmony_ci auto callback = [](std::shared_ptr<KeyEvent> event) {}; 234c29fa5a6Sopenharmony_ci int32_t result = keyGestureManager.AddKeyGesture(pid, keyOption, callback); 235c29fa5a6Sopenharmony_ci EXPECT_EQ(result, INVALID_ENTITY_ID); 236c29fa5a6Sopenharmony_ci} 237c29fa5a6Sopenharmony_ci 238c29fa5a6Sopenharmony_ci/** 239c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_ShouldIntercept_01 240c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 241c29fa5a6Sopenharmony_ci * @tc.type: FUNC 242c29fa5a6Sopenharmony_ci * @tc.require: 243c29fa5a6Sopenharmony_ci */ 244c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_ShouldIntercept_01, TestSize.Level1) 245c29fa5a6Sopenharmony_ci{ 246c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 247c29fa5a6Sopenharmony_ci KeyGestureManager keyGestureManager; 248c29fa5a6Sopenharmony_ci std::shared_ptr<KeyOption> keyOption = nullptr; 249c29fa5a6Sopenharmony_ci bool result = keyGestureManager.ShouldIntercept(keyOption); 250c29fa5a6Sopenharmony_ci EXPECT_FALSE(result); 251c29fa5a6Sopenharmony_ci} 252c29fa5a6Sopenharmony_ci 253c29fa5a6Sopenharmony_ci/** 254c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_02 255c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 256c29fa5a6Sopenharmony_ci * @tc.type: FUNC 257c29fa5a6Sopenharmony_ci * @tc.require: 258c29fa5a6Sopenharmony_ci */ 259c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_02, TestSize.Level1) 260c29fa5a6Sopenharmony_ci{ 261c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 262c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 263c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 264c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 265c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 266c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 2; 267c29fa5a6Sopenharmony_ci longPressSingleKey.keyCode_ = 2; 268c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_DOWN; 269c29fa5a6Sopenharmony_ci 270c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 271c29fa5a6Sopenharmony_ci myKeyGesture->active_ = true; 272c29fa5a6Sopenharmony_ci bool ret = longPressSingleKey.Intercept(keyEvent); 273c29fa5a6Sopenharmony_ci EXPECT_TRUE(ret); 274c29fa5a6Sopenharmony_ci 275c29fa5a6Sopenharmony_ci myKeyGesture->active_ = true; 276c29fa5a6Sopenharmony_ci bool ret2 = longPressSingleKey.Intercept(keyEvent); 277c29fa5a6Sopenharmony_ci EXPECT_TRUE(ret2); 278c29fa5a6Sopenharmony_ci} 279c29fa5a6Sopenharmony_ci 280c29fa5a6Sopenharmony_ci/** 281c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_03 282c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 283c29fa5a6Sopenharmony_ci * @tc.type: FUNC 284c29fa5a6Sopenharmony_ci * @tc.require: 285c29fa5a6Sopenharmony_ci */ 286c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_03, TestSize.Level1) 287c29fa5a6Sopenharmony_ci{ 288c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 289c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 290c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 291c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 292c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 293c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 3; 294c29fa5a6Sopenharmony_ci longPressSingleKey.keyCode_ = 2; 295c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_DOWN; 296c29fa5a6Sopenharmony_ci bool ret = longPressSingleKey.Intercept(keyEvent); 297c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 298c29fa5a6Sopenharmony_ci} 299c29fa5a6Sopenharmony_ci 300c29fa5a6Sopenharmony_ci/** 301c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_04 302c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 303c29fa5a6Sopenharmony_ci * @tc.type: FUNC 304c29fa5a6Sopenharmony_ci * @tc.require: 305c29fa5a6Sopenharmony_ci */ 306c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_04, TestSize.Level1) 307c29fa5a6Sopenharmony_ci{ 308c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 309c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 310c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 311c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 312c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 313c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 2; 314c29fa5a6Sopenharmony_ci longPressSingleKey.keyCode_ = 2; 315c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_UP; 316c29fa5a6Sopenharmony_ci bool ret = longPressSingleKey.Intercept(keyEvent); 317c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 318c29fa5a6Sopenharmony_ci} 319c29fa5a6Sopenharmony_ci 320c29fa5a6Sopenharmony_ci/** 321c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_05 322c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 323c29fa5a6Sopenharmony_ci * @tc.type: FUNC 324c29fa5a6Sopenharmony_ci * @tc.require: 325c29fa5a6Sopenharmony_ci */ 326c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_05, TestSize.Level1) 327c29fa5a6Sopenharmony_ci{ 328c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 329c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 330c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 331c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 332c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 333c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 3; 334c29fa5a6Sopenharmony_ci longPressSingleKey.keyCode_ = 2; 335c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_UP; 336c29fa5a6Sopenharmony_ci bool ret = longPressSingleKey.Intercept(keyEvent); 337c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 338c29fa5a6Sopenharmony_ci} 339c29fa5a6Sopenharmony_ci 340c29fa5a6Sopenharmony_ci/** 341c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_Intercept_06 342c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 343c29fa5a6Sopenharmony_ci * @tc.type: FUNC 344c29fa5a6Sopenharmony_ci * @tc.require: 345c29fa5a6Sopenharmony_ci */ 346c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_Intercept_06, TestSize.Level1) 347c29fa5a6Sopenharmony_ci{ 348c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 349c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 350c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 351c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 352c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 353c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 3; 354c29fa5a6Sopenharmony_ci longPressSingleKey.keyCode_ = 2; 355c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_UP; 356c29fa5a6Sopenharmony_ci 357c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 358c29fa5a6Sopenharmony_ci myKeyGesture->active_ = true; 359c29fa5a6Sopenharmony_ci bool ret = longPressSingleKey.Intercept(keyEvent); 360c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 361c29fa5a6Sopenharmony_ci 362c29fa5a6Sopenharmony_ci myKeyGesture->active_ = false; 363c29fa5a6Sopenharmony_ci bool ret2 = longPressSingleKey.Intercept(keyEvent); 364c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret2); 365c29fa5a6Sopenharmony_ci} 366c29fa5a6Sopenharmony_ci 367c29fa5a6Sopenharmony_ci/** 368c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_IsWorking_01 369c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 370c29fa5a6Sopenharmony_ci * @tc.type: FUNC 371c29fa5a6Sopenharmony_ci * @tc.require: 372c29fa5a6Sopenharmony_ci */ 373c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_IsWorking_01, TestSize.Level1) 374c29fa5a6Sopenharmony_ci{ 375c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 376c29fa5a6Sopenharmony_ci KeyGestureManager::PullUpAccessibility pullUpAccessibility; 377c29fa5a6Sopenharmony_ci DISPLAY_MONITOR->screenStatus_ = EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_OFF; 378c29fa5a6Sopenharmony_ci bool ret = pullUpAccessibility.IsWorking(); 379c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 380c29fa5a6Sopenharmony_ci} 381c29fa5a6Sopenharmony_ci 382c29fa5a6Sopenharmony_ci/** 383c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_IsWorking_02 384c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 385c29fa5a6Sopenharmony_ci * @tc.type: FUNC 386c29fa5a6Sopenharmony_ci * @tc.require: 387c29fa5a6Sopenharmony_ci */ 388c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_IsWorking_02, TestSize.Level1) 389c29fa5a6Sopenharmony_ci{ 390c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 391c29fa5a6Sopenharmony_ci KeyGestureManager::PullUpAccessibility pullUpAccessibility; 392c29fa5a6Sopenharmony_ci DISPLAY_MONITOR->screenStatus_ = EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_ON; 393c29fa5a6Sopenharmony_ci DISPLAY_MONITOR->isScreenLocked_ = true; 394c29fa5a6Sopenharmony_ci bool ret = pullUpAccessibility.IsWorking(); 395c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 396c29fa5a6Sopenharmony_ci} 397c29fa5a6Sopenharmony_ci 398c29fa5a6Sopenharmony_ci/** 399c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_IsWorking_03 400c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ShouldIntercept 401c29fa5a6Sopenharmony_ci * @tc.type: FUNC 402c29fa5a6Sopenharmony_ci * @tc.require: 403c29fa5a6Sopenharmony_ci */ 404c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_IsWorking_03, TestSize.Level1) 405c29fa5a6Sopenharmony_ci{ 406c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 407c29fa5a6Sopenharmony_ci KeyGestureManager::PullUpAccessibility pullUpAccessibility; 408c29fa5a6Sopenharmony_ci DISPLAY_MONITOR->screenStatus_ = EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_ON; 409c29fa5a6Sopenharmony_ci DISPLAY_MONITOR->isScreenLocked_ = false; 410c29fa5a6Sopenharmony_ci bool ret = pullUpAccessibility.IsWorking(); 411c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 412c29fa5a6Sopenharmony_ci} 413c29fa5a6Sopenharmony_ci 414c29fa5a6Sopenharmony_ci/** 415c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_OnTriggerAll_01 416c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation OnTriggerAll 417c29fa5a6Sopenharmony_ci * @tc.type: FUNC 418c29fa5a6Sopenharmony_ci * @tc.require: 419c29fa5a6Sopenharmony_ci */ 420c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_OnTriggerAll_01, TestSize.Level1) 421c29fa5a6Sopenharmony_ci{ 422c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 423c29fa5a6Sopenharmony_ci KeyGestureManager::PullUpAccessibility pullUpAccessibility; 424c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 425c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 426c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(pullUpAccessibility.OnTriggerAll(keyEvent)); 427c29fa5a6Sopenharmony_ci} 428c29fa5a6Sopenharmony_ci 429c29fa5a6Sopenharmony_ci/** 430c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RecognizeGesture_01 431c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RecognizeGesture 432c29fa5a6Sopenharmony_ci * @tc.type: FUNC 433c29fa5a6Sopenharmony_ci * @tc.require: 434c29fa5a6Sopenharmony_ci */ 435c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RecognizeGesture_01, TestSize.Level1) 436c29fa5a6Sopenharmony_ci{ 437c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 438c29fa5a6Sopenharmony_ci std::set<int32_t> keys = {1, 2, 3}; 439c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressCombinationKey longPressCombinationKey(keys); 440c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 441c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 442c29fa5a6Sopenharmony_ci 443c29fa5a6Sopenharmony_ci std::vector<int32_t> pressedKeys = {1}; 444c29fa5a6Sopenharmony_ci EXPECT_TRUE(pressedKeys.size() == SINGLE_KEY_PRESSED); 445c29fa5a6Sopenharmony_ci bool ret = longPressCombinationKey.RecognizeGesture(keyEvent); 446c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 447c29fa5a6Sopenharmony_ci} 448c29fa5a6Sopenharmony_ci 449c29fa5a6Sopenharmony_ci/** 450c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RecognizeGesture_02 451c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RecognizeGesture 452c29fa5a6Sopenharmony_ci * @tc.type: FUNC 453c29fa5a6Sopenharmony_ci * @tc.require: 454c29fa5a6Sopenharmony_ci */ 455c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RecognizeGesture_02, TestSize.Level1) 456c29fa5a6Sopenharmony_ci{ 457c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 458c29fa5a6Sopenharmony_ci std::set<int32_t> keys = { 1, 2, 3 }; 459c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressCombinationKey longPressCombinationKey(keys); 460c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 461c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 462c29fa5a6Sopenharmony_ci 463c29fa5a6Sopenharmony_ci std::vector<int32_t> pressedKeys = { 2, 3, 4 }; 464c29fa5a6Sopenharmony_ci EXPECT_FALSE(pressedKeys.size() == SINGLE_KEY_PRESSED); 465c29fa5a6Sopenharmony_ci bool ret = longPressCombinationKey.RecognizeGesture(keyEvent); 466c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 467c29fa5a6Sopenharmony_ci} 468c29fa5a6Sopenharmony_ci 469c29fa5a6Sopenharmony_ci/** 470c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_TriggerAll_01 471c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation TriggerAll 472c29fa5a6Sopenharmony_ci * @tc.type: FUNC 473c29fa5a6Sopenharmony_ci * @tc.require: 474c29fa5a6Sopenharmony_ci */ 475c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_TriggerAll_01, TestSize.Level1) 476c29fa5a6Sopenharmony_ci{ 477c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 478c29fa5a6Sopenharmony_ci std::set<int32_t> keys = { 1, 2, 3 }; 479c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressCombinationKey longPressCombinationKey(keys); 480c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 481c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 482c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(longPressCombinationKey.TriggerAll(keyEvent)); 483c29fa5a6Sopenharmony_ci} 484c29fa5a6Sopenharmony_ci 485c29fa5a6Sopenharmony_ci/** 486c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RunPending_01 487c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RunPending 488c29fa5a6Sopenharmony_ci * @tc.type: FUNC 489c29fa5a6Sopenharmony_ci * @tc.require: 490c29fa5a6Sopenharmony_ci */ 491c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RunPending_01, TestSize.Level1) 492c29fa5a6Sopenharmony_ci{ 493c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 494c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 495c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler(1, 2, 3000, myCallback); 496c29fa5a6Sopenharmony_ci 497c29fa5a6Sopenharmony_ci handler.keyEvent_ = nullptr; 498c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(handler.RunPending()); 499c29fa5a6Sopenharmony_ci} 500c29fa5a6Sopenharmony_ci 501c29fa5a6Sopenharmony_ci/** 502c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RunPending_02 503c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RunPending 504c29fa5a6Sopenharmony_ci * @tc.type: FUNC 505c29fa5a6Sopenharmony_ci * @tc.require: 506c29fa5a6Sopenharmony_ci */ 507c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RunPending_02, TestSize.Level1) 508c29fa5a6Sopenharmony_ci{ 509c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 510c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 511c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler(1, 2, 3000, myCallback); 512c29fa5a6Sopenharmony_ci 513c29fa5a6Sopenharmony_ci handler.keyEvent_ = KeyEvent::Create(); 514c29fa5a6Sopenharmony_ci ASSERT_NE(handler.keyEvent_, nullptr); 515c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(handler.RunPending()); 516c29fa5a6Sopenharmony_ci} 517c29fa5a6Sopenharmony_ci 518c29fa5a6Sopenharmony_ci/** 519c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_ResetTimer_01 520c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ResetTimer 521c29fa5a6Sopenharmony_ci * @tc.type: FUNC 522c29fa5a6Sopenharmony_ci * @tc.require: 523c29fa5a6Sopenharmony_ci */ 524c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_ResetTimer_01, TestSize.Level1) 525c29fa5a6Sopenharmony_ci{ 526c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 527c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 528c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler(1, 2, 3000, myCallback); 529c29fa5a6Sopenharmony_ci handler.timerId_ = 1; 530c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(handler.ResetTimer()); 531c29fa5a6Sopenharmony_ci} 532c29fa5a6Sopenharmony_ci 533c29fa5a6Sopenharmony_ci/** 534c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_ResetTimer_02 535c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation ResetTimer 536c29fa5a6Sopenharmony_ci * @tc.type: FUNC 537c29fa5a6Sopenharmony_ci * @tc.require: 538c29fa5a6Sopenharmony_ci */ 539c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_ResetTimer_02, TestSize.Level1) 540c29fa5a6Sopenharmony_ci{ 541c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 542c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 543c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler(1, 2, 3000, myCallback); 544c29fa5a6Sopenharmony_ci handler.timerId_ = -2; 545c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(handler.ResetTimer()); 546c29fa5a6Sopenharmony_ci} 547c29fa5a6Sopenharmony_ci 548c29fa5a6Sopenharmony_ci/** 549c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RunPendingHandlers_01 550c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RunPendingHandlers 551c29fa5a6Sopenharmony_ci * @tc.type: FUNC 552c29fa5a6Sopenharmony_ci * @tc.require: 553c29fa5a6Sopenharmony_ci */ 554c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RunPendingHandlers_01, TestSize.Level1) 555c29fa5a6Sopenharmony_ci{ 556c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 557c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 558c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 559c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 560c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 561c29fa5a6Sopenharmony_ci 562c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 563c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 564c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 565c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 566c29fa5a6Sopenharmony_ci 567c29fa5a6Sopenharmony_ci std::set<int32_t> foregroundPids = myKeyGesture->GetForegroundPids(); 568c29fa5a6Sopenharmony_ci bool haveForeground = myKeyGesture->HaveForegroundHandler(foregroundPids); 569c29fa5a6Sopenharmony_ci EXPECT_FALSE(haveForeground); 570c29fa5a6Sopenharmony_ci 571c29fa5a6Sopenharmony_ci int32_t keyCode = 1; 572c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressSingleKey longPressSingleKey(keyCode); 573c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(longPressSingleKey.RunPendingHandlers()); 574c29fa5a6Sopenharmony_ci} 575c29fa5a6Sopenharmony_ci 576c29fa5a6Sopenharmony_ci/** 577c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_RunHandler_01 578c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RunHandler 579c29fa5a6Sopenharmony_ci * @tc.type: FUNC 580c29fa5a6Sopenharmony_ci * @tc.require: 581c29fa5a6Sopenharmony_ci */ 582c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_RunHandler_01, TestSize.Level1) 583c29fa5a6Sopenharmony_ci{ 584c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 585c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 586c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 587c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 588c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 589c29fa5a6Sopenharmony_ci 590c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 591c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 592c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 593c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 594c29fa5a6Sopenharmony_ci 595c29fa5a6Sopenharmony_ci int32_t handlerId = 1; 596c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 597c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 598c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(myKeyGesture->RunHandler(handlerId, keyEvent)); 599c29fa5a6Sopenharmony_ci 600c29fa5a6Sopenharmony_ci handlerId = 5; 601c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(myKeyGesture->RunHandler(handlerId, keyEvent)); 602c29fa5a6Sopenharmony_ci} 603c29fa5a6Sopenharmony_ci 604c29fa5a6Sopenharmony_ci/** 605c29fa5a6Sopenharmony_ci * @tc.name: LongPressCombinationKey_Intercept_01 606c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RecognizeGesture 607c29fa5a6Sopenharmony_ci * @tc.type: FUNC 608c29fa5a6Sopenharmony_ci * @tc.require: 609c29fa5a6Sopenharmony_ci */ 610c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, LongPressCombinationKey_Intercept_01, TestSize.Level1) 611c29fa5a6Sopenharmony_ci{ 612c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 613c29fa5a6Sopenharmony_ci std::set<int32_t> keys = {1, 2, 3}; 614c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressCombinationKey longPressCombinationKey(keys); 615c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 616c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 617c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 618c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 619c29fa5a6Sopenharmony_ci 620c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 3; 621c29fa5a6Sopenharmony_ci longPressCombinationKey.keys_ = {2, 3, 4}; 622c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_DOWN; 623c29fa5a6Sopenharmony_ci myKeyGesture->active_ = true; 624c29fa5a6Sopenharmony_ci EXPECT_FALSE(EventLogHelper::IsBetaVersion()); 625c29fa5a6Sopenharmony_ci EXPECT_FALSE(keyEvent->HasFlag(InputEvent::EVENT_FLAG_PRIVACY_MODE)); 626c29fa5a6Sopenharmony_ci bool ret = longPressCombinationKey.Intercept(keyEvent); 627c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 628c29fa5a6Sopenharmony_ci myKeyGesture->active_ = false; 629c29fa5a6Sopenharmony_ci EXPECT_TRUE(myKeyGesture->IsWorking()); 630c29fa5a6Sopenharmony_ci 631c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 632c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 633c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 634c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 635c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 636c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 637c29fa5a6Sopenharmony_ci EXPECT_FALSE(myKeyGesture->handlers_.empty()); 638c29fa5a6Sopenharmony_ci bool ret2 = longPressCombinationKey.Intercept(keyEvent); 639c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret2); 640c29fa5a6Sopenharmony_ci} 641c29fa5a6Sopenharmony_ci 642c29fa5a6Sopenharmony_ci/** 643c29fa5a6Sopenharmony_ci * @tc.name: LongPressCombinationKey_Intercept_02 644c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation RecognizeGesture 645c29fa5a6Sopenharmony_ci * @tc.type: FUNC 646c29fa5a6Sopenharmony_ci * @tc.require: 647c29fa5a6Sopenharmony_ci */ 648c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, LongPressCombinationKey_Intercept_02, TestSize.Level1) 649c29fa5a6Sopenharmony_ci{ 650c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 651c29fa5a6Sopenharmony_ci std::set<int32_t> keys = {1, 2, 3}; 652c29fa5a6Sopenharmony_ci KeyGestureManager::LongPressCombinationKey longPressCombinationKey(keys); 653c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 654c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 655c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 656c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 657c29fa5a6Sopenharmony_ci 658c29fa5a6Sopenharmony_ci keyEvent->keyCode_ = 5; 659c29fa5a6Sopenharmony_ci longPressCombinationKey.keys_ = {2, 3, 4}; 660c29fa5a6Sopenharmony_ci keyEvent->keyAction_ = KeyEvent::KEY_ACTION_UP; 661c29fa5a6Sopenharmony_ci myKeyGesture->active_ = true; 662c29fa5a6Sopenharmony_ci bool ret = longPressCombinationKey.Intercept(keyEvent); 663c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret); 664c29fa5a6Sopenharmony_ci 665c29fa5a6Sopenharmony_ci myKeyGesture->active_ = false; 666c29fa5a6Sopenharmony_ci bool ret2 = longPressCombinationKey.Intercept(keyEvent); 667c29fa5a6Sopenharmony_ci EXPECT_FALSE(ret2); 668c29fa5a6Sopenharmony_ci} 669c29fa5a6Sopenharmony_ci 670c29fa5a6Sopenharmony_ci/** 671c29fa5a6Sopenharmony_ci * @tc.name: KeyGestureManagerTest_NotifyHandlers_01 672c29fa5a6Sopenharmony_ci * @tc.desc: Test the funcation NotifyHandlers 673c29fa5a6Sopenharmony_ci * @tc.type: FUNC 674c29fa5a6Sopenharmony_ci * @tc.require: 675c29fa5a6Sopenharmony_ci */ 676c29fa5a6Sopenharmony_ciHWTEST_F(KeyGestureManagerTest, KeyGestureManagerTest_NotifyHandlers_01, TestSize.Level1) 677c29fa5a6Sopenharmony_ci{ 678c29fa5a6Sopenharmony_ci CALL_TEST_DEBUG; 679c29fa5a6Sopenharmony_ci std::shared_ptr<KeyEvent> keyEvent = KeyEvent::Create(); 680c29fa5a6Sopenharmony_ci ASSERT_NE(keyEvent, nullptr); 681c29fa5a6Sopenharmony_ci std::function<void(std::shared_ptr<KeyEvent>)> myCallback; 682c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler1(1, 10, 500, myCallback); 683c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler2(2, 20, 1000, myCallback); 684c29fa5a6Sopenharmony_ci KeyGestureManager::Handler handler3(3, 30, 1500, myCallback); 685c29fa5a6Sopenharmony_ci 686c29fa5a6Sopenharmony_ci std::shared_ptr<MyKeyGesture> myKeyGesture = std::make_shared<MyKeyGesture>(); 687c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler1); 688c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler2); 689c29fa5a6Sopenharmony_ci myKeyGesture->handlers_.push_back(handler3); 690c29fa5a6Sopenharmony_ci 691c29fa5a6Sopenharmony_ci std::set<int32_t> foregroundPids = myKeyGesture->GetForegroundPids(); 692c29fa5a6Sopenharmony_ci bool haveForeground = myKeyGesture->HaveForegroundHandler(foregroundPids); 693c29fa5a6Sopenharmony_ci EXPECT_FALSE(haveForeground); 694c29fa5a6Sopenharmony_ci ASSERT_NO_FATAL_FAILURE(myKeyGesture->NotifyHandlers(keyEvent)); 695c29fa5a6Sopenharmony_ci} 696c29fa5a6Sopenharmony_ci} // namespace MMI 697c29fa5a6Sopenharmony_ci} // namespace OHOS