1 /* 2 * Copyright (c) 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 #include "platform/ohos/rs_irender_service_connection_ipc_interface_code_access_verifier.h" 17 18 namespace OHOS { 19 namespace Rosen { RSIRenderServiceConnectionInterfaceCodeAccessVerifier()20RSIRenderServiceConnectionInterfaceCodeAccessVerifier::RSIRenderServiceConnectionInterfaceCodeAccessVerifier() 21 { 22 CheckCodeUnderlyingTypeStandardized<CodeEnumType>(codeEnumTypeName_); 23 #ifdef ENABLE_IPC_SECURITY 24 AddRSIRenderServiceConnectionInterfaceCodePermission(); 25 #endif 26 } 27 IsExclusiveVerificationPassed(CodeUnderlyingType code)28bool RSIRenderServiceConnectionInterfaceCodeAccessVerifier::IsExclusiveVerificationPassed(CodeUnderlyingType code) 29 { 30 bool hasPermission = true; 31 switch (code) { 32 case static_cast<CodeUnderlyingType>(CodeEnumType::CREATE_VIRTUAL_SCREEN): { 33 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::CREATE_VIRTUAL_SCREEN"); 34 break; 35 } 36 case static_cast<CodeUnderlyingType>(CodeEnumType::DISABLE_RENDER_CONTROL_SCREEN): { 37 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::DISABLE_RENDER_CONTROL_SCREEN"); 38 break; 39 } 40 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_ACTIVE_SCREEN_ID): { 41 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_ACTIVE_SCREEN_ID"); 42 break; 43 } 44 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_ALL_SCREEN_IDS): { 45 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_ALL_SCREEN_IDS"); 46 break; 47 } 48 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_DEFAULT_SCREEN_ID): { 49 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_DEFAULT_SCREEN_ID"); 50 break; 51 } 52 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_ACTIVE_MODE): { 53 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_ACTIVE_MODE"); 54 break; 55 } 56 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_BACK_LIGHT): { 57 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_BACK_LIGHT"); 58 break; 59 } 60 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_CAPABILITY): { 61 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_CAPABILITY"); 62 break; 63 } 64 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_DATA): { 65 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_DATA"); 66 break; 67 } 68 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_GAMUT): { 69 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_GAMUT"); 70 break; 71 } 72 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_GAMUT_MAP): { 73 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_GAMUT_MAP"); 74 break; 75 } 76 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_HDR_CAPABILITY): { 77 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_HDR_CAPABILITY"); 78 break; 79 } 80 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_POWER_STATUS): { 81 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_POWER_STATUS"); 82 break; 83 } 84 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_SUPPORTED_GAMUTS): { 85 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_SUPPORTED_GAMUTS"); 86 break; 87 } 88 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_SUPPORTED_METADATAKEYS): { 89 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_SUPPORTED_METADATAKEYS"); 90 break; 91 } 92 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_SUPPORTED_MODES): { 93 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_SUPPORTED_MODES"); 94 break; 95 } 96 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_TYPE): { 97 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_TYPE"); 98 break; 99 } 100 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_VIRTUAL_SCREEN_RESOLUTION): { 101 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_VIRTUAL_SCREEN_RESOLUTION"); 102 break; 103 } 104 case static_cast<CodeUnderlyingType>(CodeEnumType::MARK_POWER_OFF_NEED_PROCESS_ONE_FRAME): { 105 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::MARK_POWER_OFF_NEED_PROCESS_ONE_FRAME"); 106 break; 107 } 108 case static_cast<CodeUnderlyingType>(CodeEnumType::REGISTER_OCCLUSION_CHANGE_CALLBACK): { 109 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::REGISTER_OCCLUSION_CHANGE_CALLBACK"); 110 break; 111 } 112 case static_cast<CodeUnderlyingType>(CodeEnumType::REGISTER_UIEXTENSION_CALLBACK): { 113 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::REGISTER_UIEXTENSION_CALLBACK"); 114 break; 115 } 116 case static_cast<CodeUnderlyingType>(CodeEnumType::REMOVE_VIRTUAL_SCREEN): { 117 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::REMOVE_VIRTUAL_SCREEN"); 118 break; 119 } 120 case static_cast<CodeUnderlyingType>(CodeEnumType::RESIZE_VIRTUAL_SCREEN): { 121 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::RESIZE_VIRTUAL_SCREEN"); 122 break; 123 } 124 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_CAST_SCREEN_ENABLE_SKIP_WINDOW): { 125 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_CAST_SCREEN_ENABLE_SKIP_WINDOW"); 126 break; 127 } 128 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_CURTAIN_SCREEN_USING_STATUS): { 129 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_CURTAIN_SCREEN_USING_STATUS"); 130 break; 131 } 132 case static_cast<CodeUnderlyingType>(CodeEnumType::DROP_FRAME_BY_PID): { 133 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::DROP_FRAME_BY_PID"); 134 break; 135 } 136 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_FOCUS_APP_INFO): { 137 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_FOCUS_APP_INFO"); 138 break; 139 } 140 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_ACTIVE_MODE): { 141 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_ACTIVE_MODE"); 142 break; 143 } 144 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_BACK_LIGHT): { 145 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_BACK_LIGHT"); 146 break; 147 } 148 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_CHANGE_CALLBACK): { 149 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_CHANGE_CALLBACK"); 150 break; 151 } 152 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_CORRECTION): { 153 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_CORRECTION"); 154 break; 155 } 156 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_GAMUT): { 157 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_GAMUT"); 158 break; 159 } 160 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_GAMUT_MAP): { 161 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_GAMUT_MAP"); 162 break; 163 } 164 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SYSTEM_ANIMATED_SCENES): { 165 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SYSTEM_ANIMATED_SCENES"); 166 break; 167 } 168 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_TP_FEATURE_CONFIG): { 169 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_TP_FEATURE_CONFIG"); 170 break; 171 } 172 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_MIRROR_SCREEN_CANVAS_ROTATION): { 173 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_MIRROR_SCREEN_CANVAS_ROTATION"); 174 break; 175 } 176 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_MIRROR_SCREEN_SCALE_MODE): { 177 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_MIRROR_SCREEN_SCALE_MODE"); 178 break; 179 } 180 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_GLOBAL_DARK_COLOR_MODE): { 181 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_GLOBAL_DARK_COLOR_MODE"); 182 break; 183 } 184 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_SCREEN_BLACKLIST): { 185 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_SCREEN_BLACKLIST"); 186 break; 187 } 188 case static_cast<CodeUnderlyingType>(CodeEnumType::ADD_VIRTUAL_SCREEN_BLACKLIST): { 189 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::ADD_VIRTUAL_SCREEN_BLACKLIST"); 190 break; 191 } 192 case static_cast<CodeUnderlyingType>(CodeEnumType::REMOVE_VIRTUAL_SCREEN_BLACKLIST): { 193 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::REMOVE_VIRTUAL_SCREEN_BLACKLIST"); 194 break; 195 } 196 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_PHYSICAL_SCREEN_RESOLUTION): { 197 hasPermission = IsFoundationCalling(codeEnumTypeName_ + "::SET_PHYSICAL_SCREEN_RESOLUTION"); 198 break; 199 } 200 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_SCREEN_RESOLUTION): { 201 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_SCREEN_RESOLUTION"); 202 break; 203 } 204 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_SCREEN_SURFACE): { 205 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_SCREEN_SURFACE"); 206 break; 207 } 208 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_SCREEN_USING_STATUS): { 209 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_SCREEN_USING_STATUS"); 210 break; 211 } 212 case static_cast<CodeUnderlyingType>(CodeEnumType::SHOW_WATERMARK): { 213 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SHOW_WATERMARK") && 214 CheckPermission(code); 215 break; 216 } 217 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_REFRESH_RATE_MODE): { 218 hasPermission = IsSystemApp(); 219 break; 220 } 221 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_CURRENT_REFRESH_RATE_MODE): { 222 hasPermission = IsSystemApp(); 223 break; 224 } 225 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_SUPPORTED_REFRESH_RATES): { 226 hasPermission = IsSystemApp() || 227 IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_SUPPORTED_REFRESH_RATES"); 228 break; 229 } 230 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SHOW_REFRESH_RATE_ENABLED): { 231 hasPermission = IsSystemApp(); 232 break; 233 } 234 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SHOW_REFRESH_RATE_ENABLED): { 235 hasPermission = IsSystemApp(); 236 break; 237 } 238 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_REFRESH_RATE): { 239 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_REFRESH_RATE"); 240 break; 241 } 242 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_CURRENT_REFRESH_RATE): { 243 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_CURRENT_REFRESH_RATE"); 244 break; 245 } 246 case static_cast<CodeUnderlyingType>(CodeEnumType::REGISTER_FRAME_RATE_LINKER_EXPECTED_FPS_CALLBACK): { 247 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::REGISTER_FRAME_RATE_LINKER_EXPECTED_FPS_CALLBACK"); 248 break; 249 } 250 case static_cast<CodeUnderlyingType>(CodeEnumType::NOTIFY_LIGHT_FACTOR_STATUS): { 251 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::NOTIFY_LIGHT_FACTOR_STATUS"); 252 break; 253 } 254 case static_cast<CodeUnderlyingType>(CodeEnumType::NOTIFY_PACKAGE_EVENT): { 255 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::NOTIFY_PACKAGE_EVENT"); 256 break; 257 } 258 case static_cast<CodeUnderlyingType>(CodeEnumType::NOTIFY_REFRESH_RATE_EVENT): { 259 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::NOTIFY_REFRESH_RATE_EVENT"); 260 break; 261 } 262 case static_cast<CodeUnderlyingType>(CodeEnumType::NOTIFY_DYNAMIC_MODE_EVENT): { 263 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::NOTIFY_DYNAMIC_MODE_EVENT"); 264 break; 265 } 266 case static_cast<CodeUnderlyingType>(CodeEnumType::NOTIFY_TOUCH_EVENT): { 267 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::NOTIFY_TOUCH_EVENT"); 268 break; 269 } 270 case static_cast<CodeUnderlyingType>(CodeEnumType::TAKE_SURFACE_CAPTURE): { 271 hasPermission = CheckPermission(code); 272 break; 273 } 274 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_MEMORY_GRAPHICS): { 275 hasPermission = CheckPermission(code); 276 break; 277 } 278 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_POWER_STATUS): { 279 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_POWER_STATUS"); 280 break; 281 } 282 case static_cast<CodeUnderlyingType>(CodeEnumType::REPORT_EVENT_GAMESTATE): { 283 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::REPORT_EVENT_GAMESTATE"); 284 break; 285 } 286 287 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_SCREEN_SECURITY_EXEMPTION_LIST): { 288 hasPermission = IsFoundationCalling(codeEnumTypeName_ + "::SET_VIRTUAL_SCREEN_SECURITY_EXEMPTION_LIST"); 289 break; 290 } 291 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_ANCO_FORCE_DO_DIRECT): { 292 hasPermission = IsAncoCalling(codeEnumTypeName_ + "::SET_ANCO_FORCE_DO_DIRECT"); 293 break; 294 } 295 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VMA_CACHE_STATUS): { 296 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VMA_CACHE_STATUS"); 297 break; 298 } 299 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_ROTATION_CACHE_ENABLED): { 300 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_ROTATION_CACHE_ENABLED"); 301 break; 302 } 303 case static_cast<CodeUnderlyingType>(CodeEnumType::NOTIFY_SCREEN_SWITCHED): { 304 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::NOTIFY_SCREEN_SWITCHED"); 305 break; 306 } 307 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_SKIP_FRAME_INTERVAL): { 308 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_SKIP_FRAME_INTERVAL"); 309 break; 310 } 311 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_VIRTUAL_SCREEN_REFRESH_RATE): { 312 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_VIRTUAL_SCREEN_REFRESH_RATE"); 313 break; 314 } 315 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_ACTIVE_RECT): { 316 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_ACTIVE_RECT"); 317 break; 318 } 319 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_PIXEL_FORMAT): { 320 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_PIXEL_FORMAT"); 321 break; 322 } 323 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_PIXEL_FORMAT): { 324 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_PIXEL_FORMAT"); 325 break; 326 } 327 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_SUPPORTED_HDR_FORMATS): { 328 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_SUPPORTED_HDR_FORMATS"); 329 break; 330 } 331 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_HDR_FORMAT): { 332 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_HDR_FORMAT"); 333 break; 334 } 335 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_HDR_FORMAT): { 336 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_HDR_FORMAT"); 337 break; 338 } 339 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_SUPPORTED_COLORSPACES): { 340 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_SUPPORTED_COLORSPACES"); 341 break; 342 } 343 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_SCREEN_COLORSPACE): { 344 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_SCREEN_COLORSPACE"); 345 break; 346 } 347 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_SCREEN_COLORSPACE): { 348 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_SCREEN_COLORSPACE"); 349 break; 350 } 351 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_ACTIVE_DIRTY_REGION_INFO): { 352 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_ACTIVE_DIRTY_REGION_INFO"); 353 break; 354 } 355 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_GLOBAL_DIRTY_REGION_INFO): { 356 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_GLOBAL_DIRTY_REGION_INFO"); 357 break; 358 } 359 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_LAYER_COMPOSE_INFO): { 360 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_LAYER_COMPOSE_INFO"); 361 break; 362 } 363 case static_cast<CodeUnderlyingType>(CodeEnumType::GET_HARDWARE_COMPOSE_DISABLED_REASON_INFO): { 364 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::GET_HARDWARE_COMPOSE_DISABLED_REASON_INFO"); 365 break; 366 } 367 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_LAYER_TOP): { 368 hasPermission = IsStylusServiceCalling(codeEnumTypeName_ + "::SET_LAYER_TOP"); 369 break; 370 } 371 case static_cast<CodeUnderlyingType>(CodeEnumType::CREATE_DISPLAY_NODE): { 372 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::CREATE_DISPLAY_NODE"); 373 break; 374 } 375 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_WINDOW_FREEZE_IMMEDIATELY): { 376 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_WINDOW_FREEZE_IMMEDIATELY"); 377 break; 378 } 379 case static_cast<CodeUnderlyingType>(CodeEnumType::SET_WINDOW_CONTAINER): { 380 hasPermission = IsSystemCalling(codeEnumTypeName_ + "::SET_WINDOW_CONTAINER"); 381 break; 382 } 383 default: { 384 break; 385 } 386 } 387 return hasPermission; 388 } 389 390 #ifdef ENABLE_IPC_SECURITY AddRSIRenderServiceConnectionInterfaceCodePermission()391void RSIRenderServiceConnectionInterfaceCodeAccessVerifier::AddRSIRenderServiceConnectionInterfaceCodePermission() 392 { 393 for (auto& mapping : permissionRSIRenderServiceConnectionInterfaceMappings_) { 394 CodeEnumType interfaceName = mapping.first; 395 PermissionType permission = mapping.second; 396 std::string newPermission = PermissionEnumToString(permission); 397 if (newPermission == "unknown") { 398 continue; 399 } 400 CodeUnderlyingType code = static_cast<CodeUnderlyingType>(interfaceName); 401 AddPermission(code, newPermission); 402 } 403 } 404 IsAccessTimesVerificationPassed(CodeUnderlyingType code,uint32_t times) const405bool RSIRenderServiceConnectionInterfaceCodeAccessVerifier::IsAccessTimesVerificationPassed( 406 CodeUnderlyingType code, uint32_t times) const 407 { 408 auto interfaceName = static_cast<CodeEnumType>(code); 409 if (accessRSIRenderServiceConnectionInterfaceTimesRestrictions_.count(interfaceName) == 0) { 410 return true; 411 } 412 uint32_t restrictedTimes = accessRSIRenderServiceConnectionInterfaceTimesRestrictions_.at(interfaceName); 413 return times < restrictedTimes; 414 } 415 #endif 416 } // namespace Rosen 417 } // namespace OHOS 418