1 /*
2  * Copyright (C) 2024 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_MEDIA_DFX_CONST_H
17 #define OHOS_MEDIA_DFX_CONST_H
18 
19 #include <string>
20 #include <unordered_set>
21 
22 #include "userfile_manager_types.h"
23 
24 namespace OHOS {
25 namespace Media {
26 constexpr int32_t IMAGE_MIN = 4096;
27 constexpr int32_t VIDEO_8K_MIN = 7680;
28 
29 constexpr int32_t COMMON_TIME_OUT = 200;
30 constexpr int32_t OPEN_FILE_TIME_OUT = 500;
31 constexpr int32_t CLOUD_DEFAULT_TIME_OUT = 100;
32 constexpr int32_t CLOUD_LCD_TIME_OUT = 800;
33 constexpr int32_t RDB_TIME_OUT = 100;
34 constexpr int32_t TO_MILLION = 1000;
35 constexpr int32_t ONE_MINUTE = 60;
36 constexpr int32_t ONE_HOUR = 60 * 60;
37 constexpr int32_t FIVE_MINUTE = 5 * 60 * 1000;
38 constexpr int32_t SIX_HOUR = 6 * 60 * 60;
39 constexpr int32_t HALF_DAY = 12 * 60 * 60;
40 constexpr int32_t ONE_DAY = 24 * 60 * 60;
41 
42 constexpr int32_t NOT_INIT = -1;
43 constexpr int32_t COMMON_IMAGE = 0;
44 constexpr int32_t COMMON_VIDEO = 1;
45 constexpr int32_t OTHER_FORMAT_IMAGE = 2;
46 constexpr int32_t BIG_IMAGE = 3;
47 constexpr int32_t BIG_VIDEO = 4;
48 
49 constexpr int32_t INVALID_DFX = -1;
50 
51 constexpr uint32_t GARBLE_SMALL = 3;
52 constexpr uint32_t GARBLE_LARGE = 8;
53 constexpr uint32_t GARBLE_LAST_TWO = 2;
54 constexpr uint32_t GARBLE_LAST_ONE = 1;
55 
56 constexpr int32_t LATEST_THUMBNAIL_ERROR_VERSION = 1;
57 constexpr int32_t LATEST_DELETE_STATISTIC_VERSION = 1;
58 
59 constexpr int32_t DIRTY_PHOTO_COUNT = 10;
60 
61 /**
62  * the number from 0 ~ 1000 is reserved for operationtype
63  */
64 enum DfxType {
65     ALBUM_REMOVE_PHOTOS = 17,
66     ALBUM_DELETE_ASSETS = 19,
67     TRASH_PHOTO = 20,
68     CLOUD_DEFAULT_OPEN = 1000,
69     CLOUD_LCD_OPEN,
70     RDB_INSERT = 1100,
71     RDB_DELETE,
72     RDB_UPDATE,
73     RDB_UPDATE_BY_CMD,
74     RDB_QUERY,
75     RDB_EXECUTE_SQL,
76     RDB_BATCHINSERT,
77     IMAGE_SOURCE_CREATE = 1200,
78     IMAGE_SOURCE_GET_INFO,
79     IMAGE_SOURCE_CREATE_PIXELMAP,
80     AV_SET_SOURCE = 1300,
81     AV_FETCH_FRAME,
82     START_SUCCESS = 1400,
83     START_CONTEXT_FAIL,
84     START_DATAMANAGER_FAIL,
85     START_RDB_STORE_FAIL,
86     START_DISTRIBUTE_FAIL,
87     START_DIR_SET_FAIL,
88     START_THUMBNAIL_SERVICE_FAIL,
89     START_SCANNER_FAIL,
90     CHECK_USER_UNLOCK_FAIL,
91     ADD_DATA_UNIQUE_INDEX_FAIL,
92     CHECK_MEDIA_PATH_UNLOCK_FAIL
93 };
94 
95 const std::string NULL_STRING = "";
96 const std::string SPLIT_CHAR = "|";
97 
98 const std::string THUMBNAIL_ERROR_XML = "/data/storage/el2/base/preferences/thumbnail_error.xml";
99 const std::string COMMON_BEHAVIOR_XML = "/data/storage/el2/base/preferences/common_behavior.xml";
100 const std::string DELETE_BEHAVIOR_XML = "/data/storage/el2/base/preferences/delete_behavior.xml";
101 const std::string ADAPTATION_TO_MOVING_PHOTO_XML = "/data/storage/el2/base/preferences/adaptation_to_moving_photo.xml";
102 const std::string DFX_COMMON_XML = "/data/storage/el2/base/preferences/dfx_common.xml";
103 const std::string LAST_REPORT_TIME = "last_report_time";
104 const std::string LAST_MIDDLE_REPORT_TIME = "last_middle_report_time";
105 const std::string LAST_HALF_DAY_REPORT_TIME = "last_half_day_report_time";
106 const std::string THUMBNAIL_ERROR_VERSION = "thumbnail_error_version";
107 const std::string DELETE_STATISTIC_VERSION = "delete_statistic_version";
108 const std::string MOVING_PHOTO_KEY_UNADAPTED_NUM = "unadapted_app_num";
109 const std::string MOVING_PHOTO_KEY_UNADAPTED_PACKAGE = "unadapted_app_package";
110 const std::string MOVING_PHOTO_KEY_ADAPTED_NUM = "adapted_app_num";
111 const std::string MOVING_PHOTO_KEY_ADAPTED_PACKAGE = "adapted_app_package";
112 const std::string CLOUD_SYNC_START_TIME = "cloud_sync_start_time";
113 const std::string CLOUDSYNC_STATUS_KEY = "persist.kernel.cloudsync.status";
114 const std::string IS_REPORTED = "is_reported";
115 
116 const std::string CLOUD_PHOTO_PATH = "/storage/cloud/files/Photo/";
117 const std::string CLOUD_FILE_PATH = "/storage/cloud/files/";
118 const std::string GARBLE = "*";
119 const std::string SPLIT_PATH = "/";
120 const std::string DOT = ".";
121 
122 struct ThumbnailErrorInfo {
123     int32_t method;
124     int32_t errCode;
125     int64_t time;
126 };
127 
128 struct CommonBehavior {
129     int32_t times;
130 };
131 
132 struct AlbumInfo {
133     int32_t count = 0;
134     int32_t imageCount = 0;
135     int32_t videoCount = 0;
136     bool isLocal = false;
137 };
138 
139 struct PhotoInfo {
140     std::string data;
141     int32_t dirty;
142     int32_t cloudVersion;
143 };
144 
145 struct PhotoRecordInfo {
146     int32_t imageCount;
147     int32_t videoCount;
148     int32_t abnormalSizeCount;
149     int32_t abnormalWidthOrHeightCount;
150     int32_t abnormalVideoDurationCount;
151     int32_t toBeUpdatedRecordCount;
152     int64_t dbFileSize;
153     int64_t slaveDbFileSize;
154     int32_t duplicateLpathCount;
155     int32_t abnormalLpathCount;
156 };
157 
158 struct AdaptationToMovingPhotoInfo {
159     std::unordered_set<std::string> unadaptedAppPackages;
160     std::unordered_set<std::string> adaptedAppPackages;
161 };
162 
163 const std::unordered_map<int32_t, std::string> ALBUM_MAP = {
164     { static_cast<int32_t>(PhotoAlbumSubType::IMAGE), "IMAGE" },
165     { static_cast<int32_t>(PhotoAlbumSubType::VIDEO), "VIDEO" },
166     { static_cast<int32_t>(PhotoAlbumSubType::FAVORITE), "FAVORITE" },
167     { static_cast<int32_t>(PhotoAlbumSubType::HIDDEN), "HIDDEN" },
168     { static_cast<int32_t>(PhotoAlbumSubType::TRASH), "TRASH" },
169 };
170 } // namespace Media
171 } // namespace OHOS
172 
173 #endif  // OHOS_MEDIA_DFX_CONST_H