1/*
2 * Copyright (c) 2022-2023 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 CONSTANT_H
17#define CONSTANT_H
18
19#include <map>
20#include <string>
21
22namespace OHOS {
23namespace Security {
24namespace AccessToken {
25class Constant {
26public:
27    enum OpCode {
28        OP_INVALID = -1,
29        OP_ANSWER_CALL = 0,
30        OP_READ_CALENDAR = 1,
31        OP_WRITE_CALENDAR = 2,
32        OP_SEND_MESSAGES = 3,
33        OP_WRITE_CALL_LOG = 4,
34        OP_READ_CALL_LOG = 5,
35        OP_READ_CELL_MESSAGES = 6,
36        OP_MICROPHONE = 7,
37        OP_RECEIVE_WAP_MESSAGES = 8,
38        OP_RECEIVE_SMS = 9,
39        OP_RECEIVE_MMS = 10,
40        OP_READ_MESSAGES = 11,
41        OP_READ_CONTACTS = 12,
42        OP_WRITE_CONTACTS = 13,
43        OP_LOCATION_IN_BACKGROUND = 14,
44        OP_LOCATION = 15,
45        OP_MEDIA_LOCATION = 16,
46        OP_APPROXIMATELY_LOCATION = 17,
47        OP_CAMERA = 18,
48        OP_READ_MEDIA = 19,
49        OP_WRITE_MEDIA = 20,
50        OP_ACTIVITY_MOTION = 21,
51        OP_READ_HEALTH_DATA = 22,
52        OP_MANAGE_VOICEMAIL = 23,
53        OP_DISTRIBUTED_DATASYNC = 24,
54        OP_READ_IMAGEVIDEO = 25,
55        OP_READ_AUDIO = 26,
56        OP_READ_DOCUMENT = 27,
57        OP_WRITE_IMAGEVIDEO = 28,
58        OP_WRITE_AUDIO = 29,
59        OP_WRITE_DOCUMENT = 30,
60        OP_READ_WHOLE_CALENDAR = 31,
61        OP_WRITE_WHOLE_CALENDAR = 32,
62        OP_APP_TRACKING_CONSENT = 33,
63        OP_GET_INSTALLED_BUNDLE_LIST = 34,
64        OP_ACCESS_BLUETOOTH = 35,
65        OP_READ_PASTEBOARD = 36,
66        OP_READ_WRITE_DOWNLOAD_DIRECTORY = 37,
67        OP_READ_WRITE_DOCUMENTS_DIRECTORY = 38,
68        OP_READ_WRITE_DESKTOP_DIRECTORY = 39,
69        OP_ACCESS_NEARLINK = 40,
70        OP_CAPTURE_SCREEN = 41,
71        SHORT_TERM_WRITE_IMAGEVIDEO = 42,
72        CAMERA_BACKGROUND = 43,
73        OP_CUSTOM_SCREEN_CAPTURE = 44,
74    };
75
76    enum ErrorCode {
77        FAILURE = -1,
78        SUCCESS = 0,
79    };
80
81    const static int64_t MILLISECONDS = 1000; // 1s = 1000ms
82    const static int64_t ONE_DAY_MILLISECONDS = 24 * 60 * 60 * MILLISECONDS; // 1s = 1000ms
83    const static std::map<std::string, int32_t> PERMISSION_OPCODE_MAP;
84public:
85    static bool TransferPermissionToOpcode(const std::string& permissionName, int32_t& opCode);
86    static bool TransferOpcodeToPermission(int32_t opCode, std::string& permissionName);
87};
88} // namespace AccessToken
89} // namespace Security
90} // namespace OHOS
91
92#endif // CONSTANT_H
93