1 #ifndef COM_ANDROID_XML_PERMISSION_CONFIGFILE_H 2 #define COM_ANDROID_XML_PERMISSION_CONFIGFILE_H 3 4 #include <array> 5 #include <map> 6 #include <optional> 7 #include <string> 8 #include <vector> 9 #include <sstream> 10 11 #if __has_include(<libxml/parser.h>) 12 #include <libxml/parser.h> 13 #include <libxml/xinclude.h> 14 #else 15 #error Require libxml2 library. Please add libxml2 to shared_libs or static_libs 16 #endif 17 18 #include "com_android_xml_permission_configfile_enums.h" 19 20 namespace com { 21 namespace android { 22 namespace xml { 23 namespace permission { 24 namespace configfile { 25 class Group; 26 class Permission; 27 class AssignPermission; 28 class SplitPermission; 29 class Library; 30 class Feature; 31 class UnavailableFeature; 32 class AllowInPowerSaveExceptIdle; 33 class AllowInPowerSave; 34 class AllowInDataUsageSave; 35 class AllowUnthrottledLocation; 36 class AllowIgnoreLocationSettings; 37 class AllowImplicitBroadcast; 38 class AppLink; 39 class SystemUserWhitelistedApp; 40 class SystemUserBlacklistedApp; 41 class DefaultEnabledVrApp; 42 class BackupTransportWhitelistedService; 43 class DisabledUntilUsedPreinstalledCarrierAssociatedApp; 44 class DisabledUntilUsedPreinstalledCarrierApp; 45 class PrivappPermissions; 46 class OemPermissions; 47 class SignaturePermissions; 48 class HiddenApiWhitelistedApp; 49 class AllowAssociation; 50 class AppDataIsolationWhitelistedApp; 51 class BugreportWhitelisted; 52 class Permissions; 53 std::optional<Permissions> read(const char* configFile); 54 55 std::optional<Permissions> parse(const char* xml); 56 57 class Group { 58 private: 59 const std::optional<int> gid_; 60 public: 61 explicit Group(std::optional<int> gid); 62 const int& getGid() const; 63 bool hasGid() const; 64 static Group read(xmlNode *root); 65 }; 66 67 class Permission { 68 private: 69 const std::optional<std::string> name_; 70 public: 71 explicit Permission(std::optional<std::string> name); 72 const std::string& getName() const; 73 bool hasName() const; 74 static Permission read(xmlNode *root); 75 }; 76 77 class AssignPermission { 78 private: 79 const std::optional<std::string> name_; 80 const std::optional<int> uid_; 81 public: 82 AssignPermission(std::optional<std::string> name, std::optional<int> uid); 83 const std::string& getName() const; 84 bool hasName() const; 85 const int& getUid() const; 86 bool hasUid() const; 87 static AssignPermission read(xmlNode *root); 88 }; 89 90 class SplitPermission { 91 public: 92 class Library { 93 private: 94 const std::optional<std::string> name_; 95 public: 96 explicit Library(std::optional<std::string> name); 97 const std::string& getName() const; 98 bool hasName() const; 99 static SplitPermission::Library read(xmlNode *root); 100 }; 101 102 103 private: 104 const std::vector<SplitPermission::Library> library_; 105 const std::optional<std::string> name_; 106 const std::optional<int> targetSdk_; 107 public: 108 SplitPermission(std::vector<Library> library, std::optional<std::string> name, std::optional<int> targetSdk); 109 const std::vector<SplitPermission::Library>& getLibrary() const; 110 bool hasLibrary() const; 111 const SplitPermission::Library* getFirstLibrary() const; 112 const std::string& getName() const; 113 bool hasName() const; 114 const int& getTargetSdk() const; 115 bool hasTargetSdk() const; 116 static SplitPermission read(xmlNode *root); 117 }; 118 119 class Library { 120 private: 121 const std::optional<std::string> name_; 122 const std::optional<std::string> file_; 123 const std::optional<std::string> dependency_; 124 public: 125 Library(std::optional<std::string> name, std::optional<std::string> file, std::optional<std::string> dependency); 126 const std::string& getName() const; 127 bool hasName() const; 128 const std::string& getFile() const; 129 bool hasFile() const; 130 const std::string& getDependency() const; 131 bool hasDependency() const; 132 static Library read(xmlNode *root); 133 }; 134 135 class Feature { 136 private: 137 const std::optional<std::string> name_; 138 const std::optional<std::string> notLowRam_; 139 const std::optional<int> version_; 140 public: 141 Feature(std::optional<std::string> name, std::optional<std::string> notLowRam, std::optional<int> version); 142 const std::string& getName() const; 143 bool hasName() const; 144 const std::string& getNotLowRam() const; 145 bool hasNotLowRam() const; 146 const int& getVersion() const; 147 bool hasVersion() const; 148 static Feature read(xmlNode *root); 149 }; 150 151 class UnavailableFeature { 152 private: 153 const std::optional<std::string> name_; 154 public: 155 explicit UnavailableFeature(std::optional<std::string> name); 156 const std::string& getName() const; 157 bool hasName() const; 158 static UnavailableFeature read(xmlNode *root); 159 }; 160 161 class AllowInPowerSaveExceptIdle { 162 private: 163 const std::optional<std::string> package_; 164 public: 165 explicit AllowInPowerSaveExceptIdle(std::optional<std::string> package); 166 const std::string& getPackage() const; 167 bool hasPackage() const; 168 static AllowInPowerSaveExceptIdle read(xmlNode *root); 169 }; 170 171 class AllowInPowerSave { 172 private: 173 const std::optional<std::string> package_; 174 public: 175 explicit AllowInPowerSave(std::optional<std::string> package); 176 const std::string& getPackage() const; 177 bool hasPackage() const; 178 static AllowInPowerSave read(xmlNode *root); 179 }; 180 181 class AllowInDataUsageSave { 182 private: 183 const std::optional<std::string> package_; 184 public: 185 explicit AllowInDataUsageSave(std::optional<std::string> package); 186 const std::string& getPackage() const; 187 bool hasPackage() const; 188 static AllowInDataUsageSave read(xmlNode *root); 189 }; 190 191 class AllowUnthrottledLocation { 192 private: 193 const std::optional<std::string> package_; 194 public: 195 explicit AllowUnthrottledLocation(std::optional<std::string> package); 196 const std::string& getPackage() const; 197 bool hasPackage() const; 198 static AllowUnthrottledLocation read(xmlNode *root); 199 }; 200 201 class AllowIgnoreLocationSettings { 202 private: 203 const std::optional<std::string> package_; 204 const std::optional<std::string> attributionTag_; 205 public: 206 AllowIgnoreLocationSettings(std::optional<std::string> package, std::optional<std::string> attributionTag); 207 const std::string& getPackage() const; 208 bool hasPackage() const; 209 const std::string& getAttributionTag() const; 210 bool hasAttributionTag() const; 211 static AllowIgnoreLocationSettings read(xmlNode *root); 212 }; 213 214 class AllowImplicitBroadcast { 215 private: 216 const std::optional<std::string> action_; 217 public: 218 explicit AllowImplicitBroadcast(std::optional<std::string> action); 219 const std::string& getAction() const; 220 bool hasAction() const; 221 static AllowImplicitBroadcast read(xmlNode *root); 222 }; 223 224 class AppLink { 225 private: 226 const std::optional<std::string> package_; 227 public: 228 explicit AppLink(std::optional<std::string> package); 229 const std::string& getPackage() const; 230 bool hasPackage() const; 231 static AppLink read(xmlNode *root); 232 }; 233 234 class SystemUserWhitelistedApp { 235 private: 236 const std::optional<std::string> package_; 237 public: 238 explicit SystemUserWhitelistedApp(std::optional<std::string> package); 239 const std::string& getPackage() const; 240 bool hasPackage() const; 241 static SystemUserWhitelistedApp read(xmlNode *root); 242 }; 243 244 class SystemUserBlacklistedApp { 245 private: 246 const std::optional<std::string> package_; 247 public: 248 explicit SystemUserBlacklistedApp(std::optional<std::string> package); 249 const std::string& getPackage() const; 250 bool hasPackage() const; 251 static SystemUserBlacklistedApp read(xmlNode *root); 252 }; 253 254 class DefaultEnabledVrApp { 255 private: 256 const std::optional<std::string> package_; 257 const std::optional<std::string> _class_; 258 public: 259 DefaultEnabledVrApp(std::optional<std::string> package, std::optional<std::string> _class); 260 const std::string& getPackage() const; 261 bool hasPackage() const; 262 const std::string& get_class() const; 263 bool has_class() const; 264 static DefaultEnabledVrApp read(xmlNode *root); 265 }; 266 267 class BackupTransportWhitelistedService { 268 private: 269 const std::optional<std::string> service_; 270 public: 271 explicit BackupTransportWhitelistedService(std::optional<std::string> service); 272 const std::string& getService() const; 273 bool hasService() const; 274 static BackupTransportWhitelistedService read(xmlNode *root); 275 }; 276 277 class DisabledUntilUsedPreinstalledCarrierAssociatedApp { 278 private: 279 const std::optional<std::string> package_; 280 const std::optional<std::string> carrierAppPackage_; 281 public: 282 DisabledUntilUsedPreinstalledCarrierAssociatedApp(std::optional<std::string> package, std::optional<std::string> carrierAppPackage); 283 const std::string& getPackage() const; 284 bool hasPackage() const; 285 const std::string& getCarrierAppPackage() const; 286 bool hasCarrierAppPackage() const; 287 static DisabledUntilUsedPreinstalledCarrierAssociatedApp read(xmlNode *root); 288 }; 289 290 class DisabledUntilUsedPreinstalledCarrierApp { 291 private: 292 const std::optional<std::string> package_; 293 public: 294 explicit DisabledUntilUsedPreinstalledCarrierApp(std::optional<std::string> package); 295 const std::string& getPackage() const; 296 bool hasPackage() const; 297 static DisabledUntilUsedPreinstalledCarrierApp read(xmlNode *root); 298 }; 299 300 class PrivappPermissions { 301 public: 302 class Permission { 303 private: 304 const std::optional<std::string> name_; 305 public: 306 explicit Permission(std::optional<std::string> name); 307 const std::string& getName() const; 308 bool hasName() const; 309 static PrivappPermissions::Permission read(xmlNode *root); 310 }; 311 312 313 public: 314 class DenyPermission { 315 private: 316 const std::optional<std::string> name_; 317 public: 318 explicit DenyPermission(std::optional<std::string> name); 319 const std::string& getName() const; 320 bool hasName() const; 321 static PrivappPermissions::DenyPermission read(xmlNode *root); 322 }; 323 324 325 private: 326 const std::vector<PrivappPermissions::Permission> permission_; 327 const std::vector<PrivappPermissions::DenyPermission> denyPermission_; 328 const std::optional<std::string> package_; 329 public: 330 PrivappPermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package); 331 const std::vector<PrivappPermissions::Permission>& getPermission() const; 332 bool hasPermission() const; 333 const PrivappPermissions::Permission* getFirstPermission() const; 334 const std::vector<PrivappPermissions::DenyPermission>& getDenyPermission() const; 335 bool hasDenyPermission() const; 336 const PrivappPermissions::DenyPermission* getFirstDenyPermission() const; 337 const std::string& getPackage() const; 338 bool hasPackage() const; 339 static PrivappPermissions read(xmlNode *root); 340 }; 341 342 class OemPermissions { 343 public: 344 class Permission { 345 private: 346 const std::optional<std::string> name_; 347 public: 348 explicit Permission(std::optional<std::string> name); 349 const std::string& getName() const; 350 bool hasName() const; 351 static OemPermissions::Permission read(xmlNode *root); 352 }; 353 354 355 public: 356 class DenyPermission { 357 private: 358 const std::optional<std::string> name_; 359 public: 360 explicit DenyPermission(std::optional<std::string> name); 361 const std::string& getName() const; 362 bool hasName() const; 363 static OemPermissions::DenyPermission read(xmlNode *root); 364 }; 365 366 367 private: 368 const std::vector<OemPermissions::Permission> permission_; 369 const std::vector<OemPermissions::DenyPermission> denyPermission_; 370 const std::optional<std::string> package_; 371 public: 372 OemPermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package); 373 const std::vector<OemPermissions::Permission>& getPermission() const; 374 bool hasPermission() const; 375 const OemPermissions::Permission* getFirstPermission() const; 376 const std::vector<OemPermissions::DenyPermission>& getDenyPermission() const; 377 bool hasDenyPermission() const; 378 const OemPermissions::DenyPermission* getFirstDenyPermission() const; 379 const std::string& getPackage() const; 380 bool hasPackage() const; 381 static OemPermissions read(xmlNode *root); 382 }; 383 384 class SignaturePermissions { 385 public: 386 class Permission { 387 private: 388 const std::optional<std::string> name_; 389 public: 390 explicit Permission(std::optional<std::string> name); 391 const std::string& getName() const; 392 bool hasName() const; 393 static SignaturePermissions::Permission read(xmlNode *root); 394 }; 395 396 397 public: 398 class DenyPermission { 399 private: 400 const std::optional<std::string> name_; 401 public: 402 explicit DenyPermission(std::optional<std::string> name); 403 const std::string& getName() const; 404 bool hasName() const; 405 static SignaturePermissions::DenyPermission read(xmlNode *root); 406 }; 407 408 409 private: 410 const std::vector<SignaturePermissions::Permission> permission_; 411 const std::vector<SignaturePermissions::DenyPermission> denyPermission_; 412 const std::optional<std::string> package_; 413 public: 414 SignaturePermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package); 415 const std::vector<SignaturePermissions::Permission>& getPermission() const; 416 bool hasPermission() const; 417 const SignaturePermissions::Permission* getFirstPermission() const; 418 const std::vector<SignaturePermissions::DenyPermission>& getDenyPermission() const; 419 bool hasDenyPermission() const; 420 const SignaturePermissions::DenyPermission* getFirstDenyPermission() const; 421 const std::string& getPackage() const; 422 bool hasPackage() const; 423 static SignaturePermissions read(xmlNode *root); 424 }; 425 426 class HiddenApiWhitelistedApp { 427 private: 428 const std::optional<std::string> package_; 429 public: 430 explicit HiddenApiWhitelistedApp(std::optional<std::string> package); 431 const std::string& getPackage() const; 432 bool hasPackage() const; 433 static HiddenApiWhitelistedApp read(xmlNode *root); 434 }; 435 436 class AllowAssociation { 437 private: 438 const std::optional<std::string> target_; 439 const std::optional<std::string> allowed_; 440 public: 441 AllowAssociation(std::optional<std::string> target, std::optional<std::string> allowed); 442 const std::string& getTarget() const; 443 bool hasTarget() const; 444 const std::string& getAllowed() const; 445 bool hasAllowed() const; 446 static AllowAssociation read(xmlNode *root); 447 }; 448 449 class AppDataIsolationWhitelistedApp { 450 private: 451 const std::optional<std::string> package_; 452 public: 453 explicit AppDataIsolationWhitelistedApp(std::optional<std::string> package); 454 const std::string& getPackage() const; 455 bool hasPackage() const; 456 static AppDataIsolationWhitelistedApp read(xmlNode *root); 457 }; 458 459 class BugreportWhitelisted { 460 private: 461 const std::optional<std::string> package_; 462 public: 463 explicit BugreportWhitelisted(std::optional<std::string> package); 464 const std::string& getPackage() const; 465 bool hasPackage() const; 466 static BugreportWhitelisted read(xmlNode *root); 467 }; 468 469 class Permissions { 470 private: 471 const std::vector<Group> group_optional_; 472 const std::vector<Permission> permission_optional_; 473 const std::vector<AssignPermission> assignPermission_optional_; 474 const std::vector<SplitPermission> splitPermission_optional_; 475 const std::vector<Library> library_optional_; 476 const std::vector<Feature> feature_optional_; 477 const std::vector<UnavailableFeature> unavailableFeature_optional_; 478 const std::vector<AllowInPowerSaveExceptIdle> allowInPowerSaveExceptIdle_optional_; 479 const std::vector<AllowInPowerSave> allowInPowerSave_optional_; 480 const std::vector<AllowInDataUsageSave> allowInDataUsageSave_optional_; 481 const std::vector<AllowUnthrottledLocation> allowUnthrottledLocation_optional_; 482 const std::vector<AllowIgnoreLocationSettings> allowIgnoreLocationSettings_optional_; 483 const std::vector<AllowImplicitBroadcast> allowImplicitBroadcast_optional_; 484 const std::vector<AppLink> appLink_optional_; 485 const std::vector<SystemUserWhitelistedApp> systemUserWhitelistedApp_optional_; 486 const std::vector<SystemUserBlacklistedApp> systemUserBlacklistedApp_optional_; 487 const std::vector<DefaultEnabledVrApp> defaultEnabledVrApp_optional_; 488 const std::vector<BackupTransportWhitelistedService> backupTransportWhitelistedService_optional_; 489 const std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp> disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_; 490 const std::vector<DisabledUntilUsedPreinstalledCarrierApp> disabledUntilUsedPreinstalledCarrierApp_optional_; 491 const std::vector<PrivappPermissions> privappPermissions_optional_; 492 const std::vector<OemPermissions> oemPermissions_optional_; 493 const std::vector<SignaturePermissions> signaturePermissions_optional_; 494 const std::vector<HiddenApiWhitelistedApp> hiddenApiWhitelistedApp_optional_; 495 const std::vector<AllowAssociation> allowAssociation_optional_; 496 const std::vector<BugreportWhitelisted> bugreportWhitelisted_optional_; 497 const std::vector<AppDataIsolationWhitelistedApp> appDataIsolationWhitelistedApp_optional_; 498 public: 499 Permissions(std::vector<Group> group_optional, std::vector<Permission> permission_optional, std::vector<AssignPermission> assignPermission_optional, std::vector<SplitPermission> splitPermission_optional, std::vector<Library> library_optional, std::vector<Feature> feature_optional, std::vector<UnavailableFeature> unavailableFeature_optional, std::vector<AllowInPowerSaveExceptIdle> allowInPowerSaveExceptIdle_optional, std::vector<AllowInPowerSave> allowInPowerSave_optional, std::vector<AllowInDataUsageSave> allowInDataUsageSave_optional, std::vector<AllowUnthrottledLocation> allowUnthrottledLocation_optional, std::vector<AllowIgnoreLocationSettings> allowIgnoreLocationSettings_optional, std::vector<AllowImplicitBroadcast> allowImplicitBroadcast_optional, std::vector<AppLink> appLink_optional, std::vector<SystemUserWhitelistedApp> systemUserWhitelistedApp_optional, std::vector<SystemUserBlacklistedApp> systemUserBlacklistedApp_optional, std::vector<DefaultEnabledVrApp> defaultEnabledVrApp_optional, std::vector<BackupTransportWhitelistedService> backupTransportWhitelistedService_optional, std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp> disabledUntilUsedPreinstalledCarrierAssociatedApp_optional, std::vector<DisabledUntilUsedPreinstalledCarrierApp> disabledUntilUsedPreinstalledCarrierApp_optional, std::vector<PrivappPermissions> privappPermissions_optional, std::vector<OemPermissions> oemPermissions_optional, std::vector<SignaturePermissions> signaturePermissions_optional, std::vector<HiddenApiWhitelistedApp> hiddenApiWhitelistedApp_optional, std::vector<AllowAssociation> allowAssociation_optional, std::vector<BugreportWhitelisted> bugreportWhitelisted_optional, std::vector<AppDataIsolationWhitelistedApp> appDataIsolationWhitelistedApp_optional); 500 const std::vector<Group>& getGroup_optional() const; 501 bool hasGroup_optional() const; 502 const Group* getFirstGroup_optional() const; 503 const std::vector<Permission>& getPermission_optional() const; 504 bool hasPermission_optional() const; 505 const Permission* getFirstPermission_optional() const; 506 const std::vector<AssignPermission>& getAssignPermission_optional() const; 507 bool hasAssignPermission_optional() const; 508 const AssignPermission* getFirstAssignPermission_optional() const; 509 const std::vector<SplitPermission>& getSplitPermission_optional() const; 510 bool hasSplitPermission_optional() const; 511 const SplitPermission* getFirstSplitPermission_optional() const; 512 const std::vector<Library>& getLibrary_optional() const; 513 bool hasLibrary_optional() const; 514 const Library* getFirstLibrary_optional() const; 515 const std::vector<Feature>& getFeature_optional() const; 516 bool hasFeature_optional() const; 517 const Feature* getFirstFeature_optional() const; 518 const std::vector<UnavailableFeature>& getUnavailableFeature_optional() const; 519 bool hasUnavailableFeature_optional() const; 520 const UnavailableFeature* getFirstUnavailableFeature_optional() const; 521 const std::vector<AllowInPowerSaveExceptIdle>& getAllowInPowerSaveExceptIdle_optional() const; 522 bool hasAllowInPowerSaveExceptIdle_optional() const; 523 const AllowInPowerSaveExceptIdle* getFirstAllowInPowerSaveExceptIdle_optional() const; 524 const std::vector<AllowInPowerSave>& getAllowInPowerSave_optional() const; 525 bool hasAllowInPowerSave_optional() const; 526 const AllowInPowerSave* getFirstAllowInPowerSave_optional() const; 527 const std::vector<AllowInDataUsageSave>& getAllowInDataUsageSave_optional() const; 528 bool hasAllowInDataUsageSave_optional() const; 529 const AllowInDataUsageSave* getFirstAllowInDataUsageSave_optional() const; 530 const std::vector<AllowUnthrottledLocation>& getAllowUnthrottledLocation_optional() const; 531 bool hasAllowUnthrottledLocation_optional() const; 532 const AllowUnthrottledLocation* getFirstAllowUnthrottledLocation_optional() const; 533 const std::vector<AllowIgnoreLocationSettings>& getAllowIgnoreLocationSettings_optional() const; 534 bool hasAllowIgnoreLocationSettings_optional() const; 535 const AllowIgnoreLocationSettings* getFirstAllowIgnoreLocationSettings_optional() const; 536 const std::vector<AllowImplicitBroadcast>& getAllowImplicitBroadcast_optional() const; 537 bool hasAllowImplicitBroadcast_optional() const; 538 const AllowImplicitBroadcast* getFirstAllowImplicitBroadcast_optional() const; 539 const std::vector<AppLink>& getAppLink_optional() const; 540 bool hasAppLink_optional() const; 541 const AppLink* getFirstAppLink_optional() const; 542 const std::vector<SystemUserWhitelistedApp>& getSystemUserWhitelistedApp_optional() const; 543 bool hasSystemUserWhitelistedApp_optional() const; 544 const SystemUserWhitelistedApp* getFirstSystemUserWhitelistedApp_optional() const; 545 const std::vector<SystemUserBlacklistedApp>& getSystemUserBlacklistedApp_optional() const; 546 bool hasSystemUserBlacklistedApp_optional() const; 547 const SystemUserBlacklistedApp* getFirstSystemUserBlacklistedApp_optional() const; 548 const std::vector<DefaultEnabledVrApp>& getDefaultEnabledVrApp_optional() const; 549 bool hasDefaultEnabledVrApp_optional() const; 550 const DefaultEnabledVrApp* getFirstDefaultEnabledVrApp_optional() const; 551 const std::vector<BackupTransportWhitelistedService>& getBackupTransportWhitelistedService_optional() const; 552 bool hasBackupTransportWhitelistedService_optional() const; 553 const BackupTransportWhitelistedService* getFirstBackupTransportWhitelistedService_optional() const; 554 const std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp>& getDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const; 555 bool hasDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const; 556 const DisabledUntilUsedPreinstalledCarrierAssociatedApp* getFirstDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const; 557 const std::vector<DisabledUntilUsedPreinstalledCarrierApp>& getDisabledUntilUsedPreinstalledCarrierApp_optional() const; 558 bool hasDisabledUntilUsedPreinstalledCarrierApp_optional() const; 559 const DisabledUntilUsedPreinstalledCarrierApp* getFirstDisabledUntilUsedPreinstalledCarrierApp_optional() const; 560 const std::vector<PrivappPermissions>& getPrivappPermissions_optional() const; 561 bool hasPrivappPermissions_optional() const; 562 const PrivappPermissions* getFirstPrivappPermissions_optional() const; 563 const std::vector<OemPermissions>& getOemPermissions_optional() const; 564 bool hasOemPermissions_optional() const; 565 const OemPermissions* getFirstOemPermissions_optional() const; 566 const std::vector<SignaturePermissions>& getSignaturePermissions_optional() const; 567 bool hasSignaturePermissions_optional() const; 568 const SignaturePermissions* getFirstSignaturePermissions_optional() const; 569 const std::vector<HiddenApiWhitelistedApp>& getHiddenApiWhitelistedApp_optional() const; 570 bool hasHiddenApiWhitelistedApp_optional() const; 571 const HiddenApiWhitelistedApp* getFirstHiddenApiWhitelistedApp_optional() const; 572 const std::vector<AllowAssociation>& getAllowAssociation_optional() const; 573 bool hasAllowAssociation_optional() const; 574 const AllowAssociation* getFirstAllowAssociation_optional() const; 575 const std::vector<BugreportWhitelisted>& getBugreportWhitelisted_optional() const; 576 bool hasBugreportWhitelisted_optional() const; 577 const BugreportWhitelisted* getFirstBugreportWhitelisted_optional() const; 578 const std::vector<AppDataIsolationWhitelistedApp>& getAppDataIsolationWhitelistedApp_optional() const; 579 bool hasAppDataIsolationWhitelistedApp_optional() const; 580 const AppDataIsolationWhitelistedApp* getFirstAppDataIsolationWhitelistedApp_optional() const; 581 static Permissions read(xmlNode *root); 582 }; 583 584 } // configfile 585 } // permission 586 } // xml 587 } // android 588 } // com 589 #endif // COM_ANDROID_XML_PERMISSION_CONFIGFILE_H 590