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 OHOS_ABILITY_RUNTIME_ACCESSIBILITY_ABILITY_COMMAND_H
17 #define OHOS_ABILITY_RUNTIME_ACCESSIBILITY_ABILITY_COMMAND_H
18 
19 #include "ability_command.h"
20 #include "ability_manager_interface.h"
21 #include "accessibility_ability_info.h"
22 #include "accessibility_system_ability_client.h"
23 #include "shell_command.h"
24 
25 namespace OHOS {
26 namespace AAFwk {
27 struct AccessibilityCommandArgument {
28     int32_t bundleArgumentNum = 0;
29     int32_t abilityArgumentNum = 0;
30     int32_t capabilityNamesArgumentNum = 0;
31     int32_t unknownArgumentNum = 0;
32     int32_t setArgumentNum = 0;
33     std::vector<std::string> unknownArguments;
34     std::string command = "";
35     std::string bundleName = "";
36     std::string abilityName = "";
37     std::string capabilityNames = "";
38     std::string value = "";
39 };
40 
41 class AccessibilityAbilityShellCommand : public ShellCommand {
42 public:
43     AccessibilityAbilityShellCommand(int argc, char* argv[]);
~AccessibilityAbilityShellCommand()44     ~AccessibilityAbilityShellCommand() override
45     {}
46 
47 private:
48     ErrCode CreateCommandMap() override;
49     ErrCode init() override;
50     ErrCode CreateMessageMap() override;
51     ErrCode RunAsHelpCommand();
52     ErrCode RunAsEnableAbility();
53     ErrCode RunAsDisableAbility();
54     ErrCode RunAsGetEnabledAbilities();
55     ErrCode RunAsGetInstalledAbilities();
56 
57     ErrCode MakeEnableCommandArgumentFromCmd(AccessibilityCommandArgument& argument);
58     void CheckEnableCommandOption(const int option, AccessibilityCommandArgument& argument);
59     ErrCode MakeDisableCommandArgumentFromCmd(AccessibilityCommandArgument& argument);
60     const std::vector<std::string> GetEnabledAbilities();
61     const std::vector<Accessibility::AccessibilityAbilityInfo> GetInstalledAbilities();
62     bool CheckBundleArgument(
63         const AccessibilityCommandArgument& argument,
64         std::string& resultMessage);
65     bool CheckAbilityArgument(
66         const AccessibilityCommandArgument& argument,
67         std::string& resultMessage);
68     bool CheckCapabilitiesArgument(
69         const AccessibilityCommandArgument& argument,
70         std::vector<Accessibility::AccessibilityAbilityInfo>& installedAbilities,
71         std::string& resultMessage);
72     bool CheckParamValidity(
73         const AccessibilityCommandArgument& argument,
74         std::vector<Accessibility::AccessibilityAbilityInfo>& installedAbilities,
75         std::string& resultMessage);
76     ErrCode CheckEnableCommandArgument(const AccessibilityCommandArgument& argument, std::string& resultMessage);
77     ErrCode CheckDisableCommandArgument(const AccessibilityCommandArgument& argument, std::string& resultMessage);
78     ErrCode CheckCommandArgument(const AccessibilityCommandArgument& argument, std::string& resultMessage);
79     ErrCode CheckSetCommandArgument(const AccessibilityCommandArgument& argument, std::string& resultMessage);
80 
81     ErrCode RunAsSetScreenMagnificationState();
82     ErrCode RunAsSetShortKeyState();
83     ErrCode RunAsSetMouseKeyState();
84     ErrCode RunAsSetCaptionState();
85     ErrCode RunAsSetMouseAutoClick();
86     ErrCode RunAsSetShortKeyTarget();
87     ErrCode RunAsSetHighContrastTextState();
88     ErrCode RunAsSetInvertColorState();
89     ErrCode RunAsSetDaltonizationColorFilter();
90     ErrCode RunAsSetContentTimeout();
91     ErrCode RunAsSetAnimationOffState();
92     ErrCode RunAsSetBrightnessDiscount();
93     ErrCode RunAsSetAudioMonoState();
94     ErrCode RunAsSetAudioBalance();
95     ErrCode MakeSetShortKeyTargetCommandArgumentFromCmd(AccessibilityCommandArgument& argument);
96     ErrCode MakeSetCommandArgumentFromCmd(AccessibilityCommandArgument& argument);
97     ErrCode MakeCommandArgumentFromCmd(AccessibilityCommandArgument& argument);
98     void SetArgument(int option, AccessibilityCommandArgument& argument);
99 
100     std::shared_ptr<Accessibility::AccessibilitySystemAbilityClient> abilityClientPtr_ = nullptr;
101 };
102 }  // namespace AAFwk
103 }  // namespace OHOS
104 
105 #endif  // OHOS_ABILITY_RUNTIME_ACCESSIBILITY_ABILITY_COMMAND_H
106