1/*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef TEST_WUKONG_APPSWITCH_INPUT_H
17#define TEST_WUKONG_APPSWITCH_INPUT_H
18
19#include <string>
20
21#include "input_action.h"
22#include "special_test_object.h"
23#include "input_msg_object.h"
24namespace OHOS {
25namespace WuKong {
26class AppswitchInput : public InputAction {
27public:
28    AppswitchInput();
29    ~AppswitchInput();
30
31    ErrCode OrderInput(const std::shared_ptr<SpcialTestObject>& specialTestObject);
32
33    /**
34     * @brief started up a app by ability.
35     * @return Return ERR_OK on success, others on failure.
36     */
37    ErrCode RandomInput();
38
39    /**
40     * @brief started up a app by uri and uritype.
41     * @return Return ERR_OK on success, others on failure.
42     */
43    ErrCode RandomInput(const std::string &uri, const std::string &uriType);
44
45    /**
46     * @brief started up a app by uri and ability.
47     * @return Return ERR_OK on success, others on failure.
48     */
49    ErrCode RandomInput(const std::string &uri, const std::vector<std::string> &abilityName);
50
51    /**
52     * @brief started up a app by ability.
53     * @return Return ERR_OK on success, others on failure.
54     */
55    ErrCode FocusInput(bool shouldScreenCap);
56
57    /**
58     * @brief get information of inputted event.
59     * @return Return ERR_OK on success, others on failure.
60     */
61    InputType GetInputInfo();
62
63    /**
64     * @brief output the information: if the app has started up successfully.
65     * @param result
66     * @param index bundlelist's index.
67     * @return Return ERR_OK on success, others on failure.
68     */
69    ErrCode PrintResultOfStartAbility(const ErrCode result, uint32_t index);
70
71private:
72    /**
73     * @brief get ability name  index through bundle name index
74     * @param bundleList the list of all bundle name
75     * @param index index of ability name in ability name list.
76     * @return Return ERR_OK on success,others on failure.
77     */
78    uint32_t GetAbilityIndex(std::vector<std::string> &bundleList);
79
80    std::shared_ptr<InputedMsgObject> inputedMsgObject_;
81};
82}  // namespace WuKong
83}  // namespace OHOS
84#endif  // TEST_WUKONG_APPSWITCH_INPUT_H
85