1 #define LOG_TAG "com.android.xml.permission.configfile" 2 #include "com_android_xml_permission_configfile.h" 3 4 #include <assert.h> 5 #ifndef __BIONIC__ 6 #define __assert2(f,n,fun,e) do { fprintf(stderr, "%s:%d: %s: Assertion `%s' failed", (f), (n), (fun), (e)); abort(); } while (false) 7 #endif 8 #define _xsdc_assert(e) do if (!(e)) __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, #e); while (false) 9 10 namespace com { 11 namespace android { 12 namespace xml { 13 namespace permission { 14 namespace configfile { 15 template <class T> 16 constexpr void (*xmlDeleter)(T* t); 17 template <> 18 constexpr auto xmlDeleter<xmlDoc> = xmlFreeDoc; 19 template <> __anon84b8445c0102(xmlChar *s) 20 auto xmlDeleter<xmlChar> = [](xmlChar *s) { xmlFree(s); }; 21 22 template <class T> make_xmlUnique(T * t)23 constexpr auto make_xmlUnique(T *t) { 24 auto deleter = [](T *t) { xmlDeleter<T>(t); }; 25 return std::unique_ptr<T, decltype(deleter)>{t, deleter}; 26 } 27 getXmlAttribute(const xmlNode * cur,const char * attribute)28 static std::string getXmlAttribute(const xmlNode *cur, const char *attribute) { 29 auto xmlValue = make_xmlUnique(xmlGetProp(cur, reinterpret_cast<const xmlChar*>(attribute))); 30 if (xmlValue == nullptr) { 31 return ""; 32 } 33 std::string value(reinterpret_cast<const char*>(xmlValue.get())); 34 return value; 35 } 36 read(const char * configFile)37 std::optional<Permissions> read(const char* configFile) { 38 auto doc = make_xmlUnique(xmlParseFile(configFile)); 39 if (doc == nullptr) { 40 return std::nullopt; 41 } 42 xmlNodePtr _child = xmlDocGetRootElement(doc.get()); 43 if (_child == nullptr) { 44 return std::nullopt; 45 } 46 if (xmlXIncludeProcess(doc.get()) < 0) { 47 return std::nullopt; 48 } 49 50 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permissions"))) { 51 Permissions _value = Permissions::read(_child); 52 return _value; 53 } 54 return std::nullopt; 55 } 56 parse(const char * xml)57 std::optional<Permissions> parse(const char* xml) { 58 auto doc = make_xmlUnique(xmlParseDoc(reinterpret_cast<const xmlChar*>(xml))); 59 if (doc == nullptr) { 60 return std::nullopt; 61 } 62 xmlNodePtr _child = xmlDocGetRootElement(doc.get()); 63 if (_child == nullptr) { 64 return std::nullopt; 65 } 66 if (xmlXIncludeProcess(doc.get()) < 0) { 67 return std::nullopt; 68 } 69 70 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permissions"))) { 71 Permissions _value = Permissions::read(_child); 72 return _value; 73 } 74 return std::nullopt; 75 } 76 77 Group(std::optional<int> gid)78 Group::Group(std::optional<int> gid) : gid_(gid) { 79 } 80 getGid() const81 const int& Group::getGid() const { 82 _xsdc_assert(hasGid()); 83 return gid_.value(); 84 } 85 hasGid() const86 bool Group::hasGid() const { 87 return gid_.has_value(); 88 } 89 read(xmlNode * root)90 Group Group::read(xmlNode *root) { 91 std::string _raw; 92 _raw = getXmlAttribute(root, "gid"); 93 std::optional<int> gid = std::nullopt; 94 if (_raw != "") { 95 int _value = std::stoi(_raw); 96 gid = _value; 97 } 98 Group instance(gid); 99 return instance; 100 } 101 Permission(std::optional<std::string> name)102 Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) { 103 } 104 getName() const105 const std::string& Permission::getName() const { 106 _xsdc_assert(hasName()); 107 return name_.value(); 108 } 109 hasName() const110 bool Permission::hasName() const { 111 return name_.has_value(); 112 } 113 read(xmlNode * root)114 Permission Permission::read(xmlNode *root) { 115 std::string _raw; 116 _raw = getXmlAttribute(root, "name"); 117 std::optional<std::string> name = std::nullopt; 118 if (_raw != "") { 119 std::string &_value = _raw; 120 name = _value; 121 } 122 Permission instance(name); 123 return instance; 124 } 125 AssignPermission(std::optional<std::string> name,std::optional<int> uid)126 AssignPermission::AssignPermission(std::optional<std::string> name, std::optional<int> uid) : name_(std::move(name)), uid_(uid) { 127 } 128 getName() const129 const std::string& AssignPermission::getName() const { 130 _xsdc_assert(hasName()); 131 return name_.value(); 132 } 133 hasName() const134 bool AssignPermission::hasName() const { 135 return name_.has_value(); 136 } 137 getUid() const138 const int& AssignPermission::getUid() const { 139 _xsdc_assert(hasUid()); 140 return uid_.value(); 141 } 142 hasUid() const143 bool AssignPermission::hasUid() const { 144 return uid_.has_value(); 145 } 146 read(xmlNode * root)147 AssignPermission AssignPermission::read(xmlNode *root) { 148 std::string _raw; 149 _raw = getXmlAttribute(root, "name"); 150 std::optional<std::string> name = std::nullopt; 151 if (_raw != "") { 152 std::string &_value = _raw; 153 name = _value; 154 } 155 _raw = getXmlAttribute(root, "uid"); 156 std::optional<int> uid = std::nullopt; 157 if (_raw != "") { 158 int _value = std::stoi(_raw); 159 uid = _value; 160 } 161 AssignPermission instance(name, uid); 162 return instance; 163 } 164 Library(std::optional<std::string> name)165 SplitPermission::Library::Library(std::optional<std::string> name) : name_(std::move(name)) { 166 } 167 getName() const168 const std::string& SplitPermission::Library::getName() const { 169 _xsdc_assert(hasName()); 170 return name_.value(); 171 } 172 hasName() const173 bool SplitPermission::Library::hasName() const { 174 return name_.has_value(); 175 } 176 read(xmlNode * root)177 SplitPermission::Library SplitPermission::Library::read(xmlNode *root) { 178 std::string _raw; 179 _raw = getXmlAttribute(root, "name"); 180 std::optional<std::string> name = std::nullopt; 181 if (_raw != "") { 182 std::string &_value = _raw; 183 name = _value; 184 } 185 SplitPermission::Library instance(name); 186 return instance; 187 } 188 SplitPermission(std::vector<Library> library,std::optional<std::string> name,std::optional<int> targetSdk)189 SplitPermission::SplitPermission(std::vector<Library> library, std::optional<std::string> name, std::optional<int> targetSdk) : library_(std::move(library)), name_(std::move(name)), targetSdk_(targetSdk) { 190 } 191 getLibrary() const192 const std::vector<SplitPermission::Library>& SplitPermission::getLibrary() const { 193 return library_; 194 } 195 hasLibrary() const196 bool SplitPermission::hasLibrary() const { 197 return !(library_.empty()); 198 } 199 getFirstLibrary() const200 const SplitPermission::Library* SplitPermission::getFirstLibrary() const { 201 if (library_.empty()) { 202 return nullptr; 203 } 204 return &library_[0]; 205 } 206 getName() const207 const std::string& SplitPermission::getName() const { 208 _xsdc_assert(hasName()); 209 return name_.value(); 210 } 211 hasName() const212 bool SplitPermission::hasName() const { 213 return name_.has_value(); 214 } 215 getTargetSdk() const216 const int& SplitPermission::getTargetSdk() const { 217 _xsdc_assert(hasTargetSdk()); 218 return targetSdk_.value(); 219 } 220 hasTargetSdk() const221 bool SplitPermission::hasTargetSdk() const { 222 return targetSdk_.has_value(); 223 } 224 read(xmlNode * root)225 SplitPermission SplitPermission::read(xmlNode *root) { 226 std::string _raw; 227 _raw = getXmlAttribute(root, "name"); 228 std::optional<std::string> name = std::nullopt; 229 if (_raw != "") { 230 std::string &_value = _raw; 231 name = _value; 232 } 233 _raw = getXmlAttribute(root, "targetSdk"); 234 std::optional<int> targetSdk = std::nullopt; 235 if (_raw != "") { 236 int _value = std::stoi(_raw); 237 targetSdk = _value; 238 } 239 std::vector<Library> library; 240 for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) { 241 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("library"))) { 242 Library _value = Library::read(_child); 243 library.push_back(std::move(_value)); 244 } 245 } 246 SplitPermission instance(library, name, targetSdk); 247 return instance; 248 } 249 Library(std::optional<std::string> name,std::optional<std::string> file,std::optional<std::string> dependency)250 Library::Library(std::optional<std::string> name, std::optional<std::string> file, std::optional<std::string> dependency) : name_(std::move(name)), file_(std::move(file)), dependency_(std::move(dependency)) { 251 } 252 getName() const253 const std::string& Library::getName() const { 254 _xsdc_assert(hasName()); 255 return name_.value(); 256 } 257 hasName() const258 bool Library::hasName() const { 259 return name_.has_value(); 260 } 261 getFile() const262 const std::string& Library::getFile() const { 263 _xsdc_assert(hasFile()); 264 return file_.value(); 265 } 266 hasFile() const267 bool Library::hasFile() const { 268 return file_.has_value(); 269 } 270 getDependency() const271 const std::string& Library::getDependency() const { 272 _xsdc_assert(hasDependency()); 273 return dependency_.value(); 274 } 275 hasDependency() const276 bool Library::hasDependency() const { 277 return dependency_.has_value(); 278 } 279 read(xmlNode * root)280 Library Library::read(xmlNode *root) { 281 std::string _raw; 282 _raw = getXmlAttribute(root, "name"); 283 std::optional<std::string> name = std::nullopt; 284 if (_raw != "") { 285 std::string &_value = _raw; 286 name = _value; 287 } 288 _raw = getXmlAttribute(root, "file"); 289 std::optional<std::string> file = std::nullopt; 290 if (_raw != "") { 291 std::string &_value = _raw; 292 file = _value; 293 } 294 _raw = getXmlAttribute(root, "dependency"); 295 std::optional<std::string> dependency = std::nullopt; 296 if (_raw != "") { 297 std::string &_value = _raw; 298 dependency = _value; 299 } 300 Library instance(name, file, dependency); 301 return instance; 302 } 303 Feature(std::optional<std::string> name,std::optional<std::string> notLowRam,std::optional<int> version)304 Feature::Feature(std::optional<std::string> name, std::optional<std::string> notLowRam, std::optional<int> version) : name_(std::move(name)), notLowRam_(std::move(notLowRam)), version_(version) { 305 } 306 getName() const307 const std::string& Feature::getName() const { 308 _xsdc_assert(hasName()); 309 return name_.value(); 310 } 311 hasName() const312 bool Feature::hasName() const { 313 return name_.has_value(); 314 } 315 getNotLowRam() const316 const std::string& Feature::getNotLowRam() const { 317 _xsdc_assert(hasNotLowRam()); 318 return notLowRam_.value(); 319 } 320 hasNotLowRam() const321 bool Feature::hasNotLowRam() const { 322 return notLowRam_.has_value(); 323 } 324 getVersion() const325 const int& Feature::getVersion() const { 326 _xsdc_assert(hasVersion()); 327 return version_.value(); 328 } 329 hasVersion() const330 bool Feature::hasVersion() const { 331 return version_.has_value(); 332 } 333 read(xmlNode * root)334 Feature Feature::read(xmlNode *root) { 335 std::string _raw; 336 _raw = getXmlAttribute(root, "name"); 337 std::optional<std::string> name = std::nullopt; 338 if (_raw != "") { 339 std::string &_value = _raw; 340 name = _value; 341 } 342 _raw = getXmlAttribute(root, "notLowRam"); 343 std::optional<std::string> notLowRam = std::nullopt; 344 if (_raw != "") { 345 std::string &_value = _raw; 346 notLowRam = _value; 347 } 348 _raw = getXmlAttribute(root, "version"); 349 std::optional<int> version = std::nullopt; 350 if (_raw != "") { 351 int _value = std::stoi(_raw); 352 version = _value; 353 } 354 Feature instance(name, notLowRam, version); 355 return instance; 356 } 357 UnavailableFeature(std::optional<std::string> name)358 UnavailableFeature::UnavailableFeature(std::optional<std::string> name) : name_(std::move(name)) { 359 } 360 getName() const361 const std::string& UnavailableFeature::getName() const { 362 _xsdc_assert(hasName()); 363 return name_.value(); 364 } 365 hasName() const366 bool UnavailableFeature::hasName() const { 367 return name_.has_value(); 368 } 369 read(xmlNode * root)370 UnavailableFeature UnavailableFeature::read(xmlNode *root) { 371 std::string _raw; 372 _raw = getXmlAttribute(root, "name"); 373 std::optional<std::string> name = std::nullopt; 374 if (_raw != "") { 375 std::string &_value = _raw; 376 name = _value; 377 } 378 UnavailableFeature instance(name); 379 return instance; 380 } 381 AllowInPowerSaveExceptIdle(std::optional<std::string> package)382 AllowInPowerSaveExceptIdle::AllowInPowerSaveExceptIdle(std::optional<std::string> package) : package_(std::move(package)) { 383 } 384 getPackage() const385 const std::string& AllowInPowerSaveExceptIdle::getPackage() const { 386 _xsdc_assert(hasPackage()); 387 return package_.value(); 388 } 389 hasPackage() const390 bool AllowInPowerSaveExceptIdle::hasPackage() const { 391 return package_.has_value(); 392 } 393 read(xmlNode * root)394 AllowInPowerSaveExceptIdle AllowInPowerSaveExceptIdle::read(xmlNode *root) { 395 std::string _raw; 396 _raw = getXmlAttribute(root, "package"); 397 std::optional<std::string> package = std::nullopt; 398 if (_raw != "") { 399 std::string &_value = _raw; 400 package = _value; 401 } 402 AllowInPowerSaveExceptIdle instance(package); 403 return instance; 404 } 405 AllowInPowerSave(std::optional<std::string> package)406 AllowInPowerSave::AllowInPowerSave(std::optional<std::string> package) : package_(std::move(package)) { 407 } 408 getPackage() const409 const std::string& AllowInPowerSave::getPackage() const { 410 _xsdc_assert(hasPackage()); 411 return package_.value(); 412 } 413 hasPackage() const414 bool AllowInPowerSave::hasPackage() const { 415 return package_.has_value(); 416 } 417 read(xmlNode * root)418 AllowInPowerSave AllowInPowerSave::read(xmlNode *root) { 419 std::string _raw; 420 _raw = getXmlAttribute(root, "package"); 421 std::optional<std::string> package = std::nullopt; 422 if (_raw != "") { 423 std::string &_value = _raw; 424 package = _value; 425 } 426 AllowInPowerSave instance(package); 427 return instance; 428 } 429 AllowInDataUsageSave(std::optional<std::string> package)430 AllowInDataUsageSave::AllowInDataUsageSave(std::optional<std::string> package) : package_(std::move(package)) { 431 } 432 getPackage() const433 const std::string& AllowInDataUsageSave::getPackage() const { 434 _xsdc_assert(hasPackage()); 435 return package_.value(); 436 } 437 hasPackage() const438 bool AllowInDataUsageSave::hasPackage() const { 439 return package_.has_value(); 440 } 441 read(xmlNode * root)442 AllowInDataUsageSave AllowInDataUsageSave::read(xmlNode *root) { 443 std::string _raw; 444 _raw = getXmlAttribute(root, "package"); 445 std::optional<std::string> package = std::nullopt; 446 if (_raw != "") { 447 std::string &_value = _raw; 448 package = _value; 449 } 450 AllowInDataUsageSave instance(package); 451 return instance; 452 } 453 AllowUnthrottledLocation(std::optional<std::string> package)454 AllowUnthrottledLocation::AllowUnthrottledLocation(std::optional<std::string> package) : package_(std::move(package)) { 455 } 456 getPackage() const457 const std::string& AllowUnthrottledLocation::getPackage() const { 458 _xsdc_assert(hasPackage()); 459 return package_.value(); 460 } 461 hasPackage() const462 bool AllowUnthrottledLocation::hasPackage() const { 463 return package_.has_value(); 464 } 465 read(xmlNode * root)466 AllowUnthrottledLocation AllowUnthrottledLocation::read(xmlNode *root) { 467 std::string _raw; 468 _raw = getXmlAttribute(root, "package"); 469 std::optional<std::string> package = std::nullopt; 470 if (_raw != "") { 471 std::string &_value = _raw; 472 package = _value; 473 } 474 AllowUnthrottledLocation instance(package); 475 return instance; 476 } 477 AllowIgnoreLocationSettings(std::optional<std::string> package,std::optional<std::string> attributionTag)478 AllowIgnoreLocationSettings::AllowIgnoreLocationSettings(std::optional<std::string> package, std::optional<std::string> attributionTag) : package_(std::move(package)), attributionTag_(std::move(attributionTag)) { 479 } 480 getPackage() const481 const std::string& AllowIgnoreLocationSettings::getPackage() const { 482 _xsdc_assert(hasPackage()); 483 return package_.value(); 484 } 485 hasPackage() const486 bool AllowIgnoreLocationSettings::hasPackage() const { 487 return package_.has_value(); 488 } 489 getAttributionTag() const490 const std::string& AllowIgnoreLocationSettings::getAttributionTag() const { 491 _xsdc_assert(hasAttributionTag()); 492 return attributionTag_.value(); 493 } 494 hasAttributionTag() const495 bool AllowIgnoreLocationSettings::hasAttributionTag() const { 496 return attributionTag_.has_value(); 497 } 498 read(xmlNode * root)499 AllowIgnoreLocationSettings AllowIgnoreLocationSettings::read(xmlNode *root) { 500 std::string _raw; 501 _raw = getXmlAttribute(root, "package"); 502 std::optional<std::string> package = std::nullopt; 503 if (_raw != "") { 504 std::string &_value = _raw; 505 package = _value; 506 } 507 _raw = getXmlAttribute(root, "attributionTag"); 508 std::optional<std::string> attributionTag = std::nullopt; 509 if (_raw != "") { 510 std::string &_value = _raw; 511 attributionTag = _value; 512 } 513 AllowIgnoreLocationSettings instance(package, attributionTag); 514 return instance; 515 } 516 AllowImplicitBroadcast(std::optional<std::string> action)517 AllowImplicitBroadcast::AllowImplicitBroadcast(std::optional<std::string> action) : action_(std::move(action)) { 518 } 519 getAction() const520 const std::string& AllowImplicitBroadcast::getAction() const { 521 _xsdc_assert(hasAction()); 522 return action_.value(); 523 } 524 hasAction() const525 bool AllowImplicitBroadcast::hasAction() const { 526 return action_.has_value(); 527 } 528 read(xmlNode * root)529 AllowImplicitBroadcast AllowImplicitBroadcast::read(xmlNode *root) { 530 std::string _raw; 531 _raw = getXmlAttribute(root, "action"); 532 std::optional<std::string> action = std::nullopt; 533 if (_raw != "") { 534 std::string &_value = _raw; 535 action = _value; 536 } 537 AllowImplicitBroadcast instance(action); 538 return instance; 539 } 540 AppLink(std::optional<std::string> package)541 AppLink::AppLink(std::optional<std::string> package) : package_(std::move(package)) { 542 } 543 getPackage() const544 const std::string& AppLink::getPackage() const { 545 _xsdc_assert(hasPackage()); 546 return package_.value(); 547 } 548 hasPackage() const549 bool AppLink::hasPackage() const { 550 return package_.has_value(); 551 } 552 read(xmlNode * root)553 AppLink AppLink::read(xmlNode *root) { 554 std::string _raw; 555 _raw = getXmlAttribute(root, "package"); 556 std::optional<std::string> package = std::nullopt; 557 if (_raw != "") { 558 std::string &_value = _raw; 559 package = _value; 560 } 561 AppLink instance(package); 562 return instance; 563 } 564 SystemUserWhitelistedApp(std::optional<std::string> package)565 SystemUserWhitelistedApp::SystemUserWhitelistedApp(std::optional<std::string> package) : package_(std::move(package)) { 566 } 567 getPackage() const568 const std::string& SystemUserWhitelistedApp::getPackage() const { 569 _xsdc_assert(hasPackage()); 570 return package_.value(); 571 } 572 hasPackage() const573 bool SystemUserWhitelistedApp::hasPackage() const { 574 return package_.has_value(); 575 } 576 read(xmlNode * root)577 SystemUserWhitelistedApp SystemUserWhitelistedApp::read(xmlNode *root) { 578 std::string _raw; 579 _raw = getXmlAttribute(root, "package"); 580 std::optional<std::string> package = std::nullopt; 581 if (_raw != "") { 582 std::string &_value = _raw; 583 package = _value; 584 } 585 SystemUserWhitelistedApp instance(package); 586 return instance; 587 } 588 SystemUserBlacklistedApp(std::optional<std::string> package)589 SystemUserBlacklistedApp::SystemUserBlacklistedApp(std::optional<std::string> package) : package_(std::move(package)) { 590 } 591 getPackage() const592 const std::string& SystemUserBlacklistedApp::getPackage() const { 593 _xsdc_assert(hasPackage()); 594 return package_.value(); 595 } 596 hasPackage() const597 bool SystemUserBlacklistedApp::hasPackage() const { 598 return package_.has_value(); 599 } 600 read(xmlNode * root)601 SystemUserBlacklistedApp SystemUserBlacklistedApp::read(xmlNode *root) { 602 std::string _raw; 603 _raw = getXmlAttribute(root, "package"); 604 std::optional<std::string> package = std::nullopt; 605 if (_raw != "") { 606 std::string &_value = _raw; 607 package = _value; 608 } 609 SystemUserBlacklistedApp instance(package); 610 return instance; 611 } 612 DefaultEnabledVrApp(std::optional<std::string> package,std::optional<std::string> _class)613 DefaultEnabledVrApp::DefaultEnabledVrApp(std::optional<std::string> package, std::optional<std::string> _class) : package_(std::move(package)), _class_(std::move(_class)) { 614 } 615 getPackage() const616 const std::string& DefaultEnabledVrApp::getPackage() const { 617 _xsdc_assert(hasPackage()); 618 return package_.value(); 619 } 620 hasPackage() const621 bool DefaultEnabledVrApp::hasPackage() const { 622 return package_.has_value(); 623 } 624 get_class() const625 const std::string& DefaultEnabledVrApp::get_class() const { 626 _xsdc_assert(has_class()); 627 return _class_.value(); 628 } 629 has_class() const630 bool DefaultEnabledVrApp::has_class() const { 631 return _class_.has_value(); 632 } 633 read(xmlNode * root)634 DefaultEnabledVrApp DefaultEnabledVrApp::read(xmlNode *root) { 635 std::string _raw; 636 _raw = getXmlAttribute(root, "package"); 637 std::optional<std::string> package = std::nullopt; 638 if (_raw != "") { 639 std::string &_value = _raw; 640 package = _value; 641 } 642 _raw = getXmlAttribute(root, "class"); 643 std::optional<std::string> _class = std::nullopt; 644 if (_raw != "") { 645 std::string &_value = _raw; 646 _class = _value; 647 } 648 DefaultEnabledVrApp instance(package, _class); 649 return instance; 650 } 651 BackupTransportWhitelistedService(std::optional<std::string> service)652 BackupTransportWhitelistedService::BackupTransportWhitelistedService(std::optional<std::string> service) : service_(std::move(service)) { 653 } 654 getService() const655 const std::string& BackupTransportWhitelistedService::getService() const { 656 _xsdc_assert(hasService()); 657 return service_.value(); 658 } 659 hasService() const660 bool BackupTransportWhitelistedService::hasService() const { 661 return service_.has_value(); 662 } 663 read(xmlNode * root)664 BackupTransportWhitelistedService BackupTransportWhitelistedService::read(xmlNode *root) { 665 std::string _raw; 666 _raw = getXmlAttribute(root, "service"); 667 std::optional<std::string> service = std::nullopt; 668 if (_raw != "") { 669 std::string &_value = _raw; 670 service = _value; 671 } 672 BackupTransportWhitelistedService instance(service); 673 return instance; 674 } 675 DisabledUntilUsedPreinstalledCarrierAssociatedApp(std::optional<std::string> package,std::optional<std::string> carrierAppPackage)676 DisabledUntilUsedPreinstalledCarrierAssociatedApp::DisabledUntilUsedPreinstalledCarrierAssociatedApp(std::optional<std::string> package, std::optional<std::string> carrierAppPackage) : package_(std::move(package)), carrierAppPackage_(std::move(carrierAppPackage)) { 677 } 678 getPackage() const679 const std::string& DisabledUntilUsedPreinstalledCarrierAssociatedApp::getPackage() const { 680 _xsdc_assert(hasPackage()); 681 return package_.value(); 682 } 683 hasPackage() const684 bool DisabledUntilUsedPreinstalledCarrierAssociatedApp::hasPackage() const { 685 return package_.has_value(); 686 } 687 getCarrierAppPackage() const688 const std::string& DisabledUntilUsedPreinstalledCarrierAssociatedApp::getCarrierAppPackage() const { 689 _xsdc_assert(hasCarrierAppPackage()); 690 return carrierAppPackage_.value(); 691 } 692 hasCarrierAppPackage() const693 bool DisabledUntilUsedPreinstalledCarrierAssociatedApp::hasCarrierAppPackage() const { 694 return carrierAppPackage_.has_value(); 695 } 696 read(xmlNode * root)697 DisabledUntilUsedPreinstalledCarrierAssociatedApp DisabledUntilUsedPreinstalledCarrierAssociatedApp::read(xmlNode *root) { 698 std::string _raw; 699 _raw = getXmlAttribute(root, "package"); 700 std::optional<std::string> package = std::nullopt; 701 if (_raw != "") { 702 std::string &_value = _raw; 703 package = _value; 704 } 705 _raw = getXmlAttribute(root, "carrierAppPackage"); 706 std::optional<std::string> carrierAppPackage = std::nullopt; 707 if (_raw != "") { 708 std::string &_value = _raw; 709 carrierAppPackage = _value; 710 } 711 DisabledUntilUsedPreinstalledCarrierAssociatedApp instance(package, carrierAppPackage); 712 return instance; 713 } 714 DisabledUntilUsedPreinstalledCarrierApp(std::optional<std::string> package)715 DisabledUntilUsedPreinstalledCarrierApp::DisabledUntilUsedPreinstalledCarrierApp(std::optional<std::string> package) : package_(std::move(package)) { 716 } 717 getPackage() const718 const std::string& DisabledUntilUsedPreinstalledCarrierApp::getPackage() const { 719 _xsdc_assert(hasPackage()); 720 return package_.value(); 721 } 722 hasPackage() const723 bool DisabledUntilUsedPreinstalledCarrierApp::hasPackage() const { 724 return package_.has_value(); 725 } 726 read(xmlNode * root)727 DisabledUntilUsedPreinstalledCarrierApp DisabledUntilUsedPreinstalledCarrierApp::read(xmlNode *root) { 728 std::string _raw; 729 _raw = getXmlAttribute(root, "package"); 730 std::optional<std::string> package = std::nullopt; 731 if (_raw != "") { 732 std::string &_value = _raw; 733 package = _value; 734 } 735 DisabledUntilUsedPreinstalledCarrierApp instance(package); 736 return instance; 737 } 738 Permission(std::optional<std::string> name)739 PrivappPermissions::Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) { 740 } 741 getName() const742 const std::string& PrivappPermissions::Permission::getName() const { 743 _xsdc_assert(hasName()); 744 return name_.value(); 745 } 746 hasName() const747 bool PrivappPermissions::Permission::hasName() const { 748 return name_.has_value(); 749 } 750 read(xmlNode * root)751 PrivappPermissions::Permission PrivappPermissions::Permission::read(xmlNode *root) { 752 std::string _raw; 753 _raw = getXmlAttribute(root, "name"); 754 std::optional<std::string> name = std::nullopt; 755 if (_raw != "") { 756 std::string &_value = _raw; 757 name = _value; 758 } 759 PrivappPermissions::Permission instance(name); 760 return instance; 761 } 762 DenyPermission(std::optional<std::string> name)763 PrivappPermissions::DenyPermission::DenyPermission(std::optional<std::string> name) : name_(std::move(name)) { 764 } 765 getName() const766 const std::string& PrivappPermissions::DenyPermission::getName() const { 767 _xsdc_assert(hasName()); 768 return name_.value(); 769 } 770 hasName() const771 bool PrivappPermissions::DenyPermission::hasName() const { 772 return name_.has_value(); 773 } 774 read(xmlNode * root)775 PrivappPermissions::DenyPermission PrivappPermissions::DenyPermission::read(xmlNode *root) { 776 std::string _raw; 777 _raw = getXmlAttribute(root, "name"); 778 std::optional<std::string> name = std::nullopt; 779 if (_raw != "") { 780 std::string &_value = _raw; 781 name = _value; 782 } 783 PrivappPermissions::DenyPermission instance(name); 784 return instance; 785 } 786 PrivappPermissions(std::vector<Permission> permission,std::vector<DenyPermission> denyPermission,std::optional<std::string> package)787 PrivappPermissions::PrivappPermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package) : permission_(std::move(permission)), denyPermission_(std::move(denyPermission)), package_(std::move(package)) { 788 } 789 getPermission() const790 const std::vector<PrivappPermissions::Permission>& PrivappPermissions::getPermission() const { 791 return permission_; 792 } 793 hasPermission() const794 bool PrivappPermissions::hasPermission() const { 795 return !(permission_.empty()); 796 } 797 getFirstPermission() const798 const PrivappPermissions::Permission* PrivappPermissions::getFirstPermission() const { 799 if (permission_.empty()) { 800 return nullptr; 801 } 802 return &permission_[0]; 803 } 804 getDenyPermission() const805 const std::vector<PrivappPermissions::DenyPermission>& PrivappPermissions::getDenyPermission() const { 806 return denyPermission_; 807 } 808 hasDenyPermission() const809 bool PrivappPermissions::hasDenyPermission() const { 810 return !(denyPermission_.empty()); 811 } 812 getFirstDenyPermission() const813 const PrivappPermissions::DenyPermission* PrivappPermissions::getFirstDenyPermission() const { 814 if (denyPermission_.empty()) { 815 return nullptr; 816 } 817 return &denyPermission_[0]; 818 } 819 getPackage() const820 const std::string& PrivappPermissions::getPackage() const { 821 _xsdc_assert(hasPackage()); 822 return package_.value(); 823 } 824 hasPackage() const825 bool PrivappPermissions::hasPackage() const { 826 return package_.has_value(); 827 } 828 read(xmlNode * root)829 PrivappPermissions PrivappPermissions::read(xmlNode *root) { 830 std::string _raw; 831 _raw = getXmlAttribute(root, "package"); 832 std::optional<std::string> package = std::nullopt; 833 if (_raw != "") { 834 std::string &_value = _raw; 835 package = _value; 836 } 837 std::vector<Permission> permission; 838 std::vector<DenyPermission> denyPermission; 839 for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) { 840 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) { 841 Permission _value = Permission::read(_child); 842 permission.push_back(std::move(_value)); 843 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("deny-permission"))) { 844 DenyPermission _value = DenyPermission::read(_child); 845 denyPermission.push_back(std::move(_value)); 846 } 847 } 848 PrivappPermissions instance(permission, denyPermission, package); 849 return instance; 850 } 851 Permission(std::optional<std::string> name)852 OemPermissions::Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) { 853 } 854 getName() const855 const std::string& OemPermissions::Permission::getName() const { 856 _xsdc_assert(hasName()); 857 return name_.value(); 858 } 859 hasName() const860 bool OemPermissions::Permission::hasName() const { 861 return name_.has_value(); 862 } 863 read(xmlNode * root)864 OemPermissions::Permission OemPermissions::Permission::read(xmlNode *root) { 865 std::string _raw; 866 _raw = getXmlAttribute(root, "name"); 867 std::optional<std::string> name = std::nullopt; 868 if (_raw != "") { 869 std::string &_value = _raw; 870 name = _value; 871 } 872 OemPermissions::Permission instance(name); 873 return instance; 874 } 875 DenyPermission(std::optional<std::string> name)876 OemPermissions::DenyPermission::DenyPermission(std::optional<std::string> name) : name_(std::move(name)) { 877 } 878 getName() const879 const std::string& OemPermissions::DenyPermission::getName() const { 880 _xsdc_assert(hasName()); 881 return name_.value(); 882 } 883 hasName() const884 bool OemPermissions::DenyPermission::hasName() const { 885 return name_.has_value(); 886 } 887 read(xmlNode * root)888 OemPermissions::DenyPermission OemPermissions::DenyPermission::read(xmlNode *root) { 889 std::string _raw; 890 _raw = getXmlAttribute(root, "name"); 891 std::optional<std::string> name = std::nullopt; 892 if (_raw != "") { 893 std::string &_value = _raw; 894 name = _value; 895 } 896 OemPermissions::DenyPermission instance(name); 897 return instance; 898 } 899 OemPermissions(std::vector<Permission> permission,std::vector<DenyPermission> denyPermission,std::optional<std::string> package)900 OemPermissions::OemPermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package) : permission_(std::move(permission)), denyPermission_(std::move(denyPermission)), package_(std::move(package)) { 901 } 902 getPermission() const903 const std::vector<OemPermissions::Permission>& OemPermissions::getPermission() const { 904 return permission_; 905 } 906 hasPermission() const907 bool OemPermissions::hasPermission() const { 908 return !(permission_.empty()); 909 } 910 getFirstPermission() const911 const OemPermissions::Permission* OemPermissions::getFirstPermission() const { 912 if (permission_.empty()) { 913 return nullptr; 914 } 915 return &permission_[0]; 916 } 917 getDenyPermission() const918 const std::vector<OemPermissions::DenyPermission>& OemPermissions::getDenyPermission() const { 919 return denyPermission_; 920 } 921 hasDenyPermission() const922 bool OemPermissions::hasDenyPermission() const { 923 return !(denyPermission_.empty()); 924 } 925 getFirstDenyPermission() const926 const OemPermissions::DenyPermission* OemPermissions::getFirstDenyPermission() const { 927 if (denyPermission_.empty()) { 928 return nullptr; 929 } 930 return &denyPermission_[0]; 931 } 932 getPackage() const933 const std::string& OemPermissions::getPackage() const { 934 _xsdc_assert(hasPackage()); 935 return package_.value(); 936 } 937 hasPackage() const938 bool OemPermissions::hasPackage() const { 939 return package_.has_value(); 940 } 941 read(xmlNode * root)942 OemPermissions OemPermissions::read(xmlNode *root) { 943 std::string _raw; 944 _raw = getXmlAttribute(root, "package"); 945 std::optional<std::string> package = std::nullopt; 946 if (_raw != "") { 947 std::string &_value = _raw; 948 package = _value; 949 } 950 std::vector<Permission> permission; 951 std::vector<DenyPermission> denyPermission; 952 for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) { 953 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) { 954 Permission _value = Permission::read(_child); 955 permission.push_back(std::move(_value)); 956 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("deny-permission"))) { 957 DenyPermission _value = DenyPermission::read(_child); 958 denyPermission.push_back(std::move(_value)); 959 } 960 } 961 OemPermissions instance(permission, denyPermission, package); 962 return instance; 963 } 964 Permission(std::optional<std::string> name)965 SignaturePermissions::Permission::Permission(std::optional<std::string> name) : name_(std::move(name)) { 966 } 967 getName() const968 const std::string& SignaturePermissions::Permission::getName() const { 969 _xsdc_assert(hasName()); 970 return name_.value(); 971 } 972 hasName() const973 bool SignaturePermissions::Permission::hasName() const { 974 return name_.has_value(); 975 } 976 read(xmlNode * root)977 SignaturePermissions::Permission SignaturePermissions::Permission::read(xmlNode *root) { 978 std::string _raw; 979 _raw = getXmlAttribute(root, "name"); 980 std::optional<std::string> name = std::nullopt; 981 if (_raw != "") { 982 std::string &_value = _raw; 983 name = _value; 984 } 985 SignaturePermissions::Permission instance(name); 986 return instance; 987 } 988 DenyPermission(std::optional<std::string> name)989 SignaturePermissions::DenyPermission::DenyPermission(std::optional<std::string> name) : name_(std::move(name)) { 990 } 991 getName() const992 const std::string& SignaturePermissions::DenyPermission::getName() const { 993 _xsdc_assert(hasName()); 994 return name_.value(); 995 } 996 hasName() const997 bool SignaturePermissions::DenyPermission::hasName() const { 998 return name_.has_value(); 999 } 1000 read(xmlNode * root)1001 SignaturePermissions::DenyPermission SignaturePermissions::DenyPermission::read(xmlNode *root) { 1002 std::string _raw; 1003 _raw = getXmlAttribute(root, "name"); 1004 std::optional<std::string> name = std::nullopt; 1005 if (_raw != "") { 1006 std::string &_value = _raw; 1007 name = _value; 1008 } 1009 SignaturePermissions::DenyPermission instance(name); 1010 return instance; 1011 } 1012 SignaturePermissions(std::vector<Permission> permission,std::vector<DenyPermission> denyPermission,std::optional<std::string> package)1013 SignaturePermissions::SignaturePermissions(std::vector<Permission> permission, std::vector<DenyPermission> denyPermission, std::optional<std::string> package) : permission_(std::move(permission)), denyPermission_(std::move(denyPermission)), package_(std::move(package)) { 1014 } 1015 getPermission() const1016 const std::vector<SignaturePermissions::Permission>& SignaturePermissions::getPermission() const { 1017 return permission_; 1018 } 1019 hasPermission() const1020 bool SignaturePermissions::hasPermission() const { 1021 return !(permission_.empty()); 1022 } 1023 getFirstPermission() const1024 const SignaturePermissions::Permission* SignaturePermissions::getFirstPermission() const { 1025 if (permission_.empty()) { 1026 return nullptr; 1027 } 1028 return &permission_[0]; 1029 } 1030 getDenyPermission() const1031 const std::vector<SignaturePermissions::DenyPermission>& SignaturePermissions::getDenyPermission() const { 1032 return denyPermission_; 1033 } 1034 hasDenyPermission() const1035 bool SignaturePermissions::hasDenyPermission() const { 1036 return !(denyPermission_.empty()); 1037 } 1038 getFirstDenyPermission() const1039 const SignaturePermissions::DenyPermission* SignaturePermissions::getFirstDenyPermission() const { 1040 if (denyPermission_.empty()) { 1041 return nullptr; 1042 } 1043 return &denyPermission_[0]; 1044 } 1045 getPackage() const1046 const std::string& SignaturePermissions::getPackage() const { 1047 _xsdc_assert(hasPackage()); 1048 return package_.value(); 1049 } 1050 hasPackage() const1051 bool SignaturePermissions::hasPackage() const { 1052 return package_.has_value(); 1053 } 1054 read(xmlNode * root)1055 SignaturePermissions SignaturePermissions::read(xmlNode *root) { 1056 std::string _raw; 1057 _raw = getXmlAttribute(root, "package"); 1058 std::optional<std::string> package = std::nullopt; 1059 if (_raw != "") { 1060 std::string &_value = _raw; 1061 package = _value; 1062 } 1063 std::vector<Permission> permission; 1064 std::vector<DenyPermission> denyPermission; 1065 for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) { 1066 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) { 1067 Permission _value = Permission::read(_child); 1068 permission.push_back(std::move(_value)); 1069 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("deny-permission"))) { 1070 DenyPermission _value = DenyPermission::read(_child); 1071 denyPermission.push_back(std::move(_value)); 1072 } 1073 } 1074 SignaturePermissions instance(permission, denyPermission, package); 1075 return instance; 1076 } 1077 HiddenApiWhitelistedApp(std::optional<std::string> package)1078 HiddenApiWhitelistedApp::HiddenApiWhitelistedApp(std::optional<std::string> package) : package_(std::move(package)) { 1079 } 1080 getPackage() const1081 const std::string& HiddenApiWhitelistedApp::getPackage() const { 1082 _xsdc_assert(hasPackage()); 1083 return package_.value(); 1084 } 1085 hasPackage() const1086 bool HiddenApiWhitelistedApp::hasPackage() const { 1087 return package_.has_value(); 1088 } 1089 read(xmlNode * root)1090 HiddenApiWhitelistedApp HiddenApiWhitelistedApp::read(xmlNode *root) { 1091 std::string _raw; 1092 _raw = getXmlAttribute(root, "package"); 1093 std::optional<std::string> package = std::nullopt; 1094 if (_raw != "") { 1095 std::string &_value = _raw; 1096 package = _value; 1097 } 1098 HiddenApiWhitelistedApp instance(package); 1099 return instance; 1100 } 1101 AllowAssociation(std::optional<std::string> target,std::optional<std::string> allowed)1102 AllowAssociation::AllowAssociation(std::optional<std::string> target, std::optional<std::string> allowed) : target_(std::move(target)), allowed_(std::move(allowed)) { 1103 } 1104 getTarget() const1105 const std::string& AllowAssociation::getTarget() const { 1106 _xsdc_assert(hasTarget()); 1107 return target_.value(); 1108 } 1109 hasTarget() const1110 bool AllowAssociation::hasTarget() const { 1111 return target_.has_value(); 1112 } 1113 getAllowed() const1114 const std::string& AllowAssociation::getAllowed() const { 1115 _xsdc_assert(hasAllowed()); 1116 return allowed_.value(); 1117 } 1118 hasAllowed() const1119 bool AllowAssociation::hasAllowed() const { 1120 return allowed_.has_value(); 1121 } 1122 read(xmlNode * root)1123 AllowAssociation AllowAssociation::read(xmlNode *root) { 1124 std::string _raw; 1125 _raw = getXmlAttribute(root, "target"); 1126 std::optional<std::string> target = std::nullopt; 1127 if (_raw != "") { 1128 std::string &_value = _raw; 1129 target = _value; 1130 } 1131 _raw = getXmlAttribute(root, "allowed"); 1132 std::optional<std::string> allowed = std::nullopt; 1133 if (_raw != "") { 1134 std::string &_value = _raw; 1135 allowed = _value; 1136 } 1137 AllowAssociation instance(target, allowed); 1138 return instance; 1139 } 1140 AppDataIsolationWhitelistedApp(std::optional<std::string> package)1141 AppDataIsolationWhitelistedApp::AppDataIsolationWhitelistedApp(std::optional<std::string> package) : package_(std::move(package)) { 1142 } 1143 getPackage() const1144 const std::string& AppDataIsolationWhitelistedApp::getPackage() const { 1145 _xsdc_assert(hasPackage()); 1146 return package_.value(); 1147 } 1148 hasPackage() const1149 bool AppDataIsolationWhitelistedApp::hasPackage() const { 1150 return package_.has_value(); 1151 } 1152 read(xmlNode * root)1153 AppDataIsolationWhitelistedApp AppDataIsolationWhitelistedApp::read(xmlNode *root) { 1154 std::string _raw; 1155 _raw = getXmlAttribute(root, "package"); 1156 std::optional<std::string> package = std::nullopt; 1157 if (_raw != "") { 1158 std::string &_value = _raw; 1159 package = _value; 1160 } 1161 AppDataIsolationWhitelistedApp instance(package); 1162 return instance; 1163 } 1164 BugreportWhitelisted(std::optional<std::string> package)1165 BugreportWhitelisted::BugreportWhitelisted(std::optional<std::string> package) : package_(std::move(package)) { 1166 } 1167 getPackage() const1168 const std::string& BugreportWhitelisted::getPackage() const { 1169 _xsdc_assert(hasPackage()); 1170 return package_.value(); 1171 } 1172 hasPackage() const1173 bool BugreportWhitelisted::hasPackage() const { 1174 return package_.has_value(); 1175 } 1176 read(xmlNode * root)1177 BugreportWhitelisted BugreportWhitelisted::read(xmlNode *root) { 1178 std::string _raw; 1179 _raw = getXmlAttribute(root, "package"); 1180 std::optional<std::string> package = std::nullopt; 1181 if (_raw != "") { 1182 std::string &_value = _raw; 1183 package = _value; 1184 } 1185 BugreportWhitelisted instance(package); 1186 return instance; 1187 } 1188 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)1189 Permissions::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) : group_optional_(std::move(group_optional)), permission_optional_(std::move(permission_optional)), assignPermission_optional_(std::move(assignPermission_optional)), splitPermission_optional_(std::move(splitPermission_optional)), library_optional_(std::move(library_optional)), feature_optional_(std::move(feature_optional)), unavailableFeature_optional_(std::move(unavailableFeature_optional)), allowInPowerSaveExceptIdle_optional_(std::move(allowInPowerSaveExceptIdle_optional)), allowInPowerSave_optional_(std::move(allowInPowerSave_optional)), allowInDataUsageSave_optional_(std::move(allowInDataUsageSave_optional)), allowUnthrottledLocation_optional_(std::move(allowUnthrottledLocation_optional)), allowIgnoreLocationSettings_optional_(std::move(allowIgnoreLocationSettings_optional)), allowImplicitBroadcast_optional_(std::move(allowImplicitBroadcast_optional)), appLink_optional_(std::move(appLink_optional)), systemUserWhitelistedApp_optional_(std::move(systemUserWhitelistedApp_optional)), systemUserBlacklistedApp_optional_(std::move(systemUserBlacklistedApp_optional)), defaultEnabledVrApp_optional_(std::move(defaultEnabledVrApp_optional)), backupTransportWhitelistedService_optional_(std::move(backupTransportWhitelistedService_optional)), disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_(std::move(disabledUntilUsedPreinstalledCarrierAssociatedApp_optional)), disabledUntilUsedPreinstalledCarrierApp_optional_(std::move(disabledUntilUsedPreinstalledCarrierApp_optional)), privappPermissions_optional_(std::move(privappPermissions_optional)), oemPermissions_optional_(std::move(oemPermissions_optional)), signaturePermissions_optional_(std::move(signaturePermissions_optional)), hiddenApiWhitelistedApp_optional_(std::move(hiddenApiWhitelistedApp_optional)), allowAssociation_optional_(std::move(allowAssociation_optional)), bugreportWhitelisted_optional_(std::move(bugreportWhitelisted_optional)), appDataIsolationWhitelistedApp_optional_(std::move(appDataIsolationWhitelistedApp_optional)) { 1190 } 1191 getGroup_optional() const1192 const std::vector<Group>& Permissions::getGroup_optional() const { 1193 return group_optional_; 1194 } 1195 hasGroup_optional() const1196 bool Permissions::hasGroup_optional() const { 1197 return !(group_optional_.empty()); 1198 } 1199 getFirstGroup_optional() const1200 const Group* Permissions::getFirstGroup_optional() const { 1201 if (group_optional_.empty()) { 1202 return nullptr; 1203 } 1204 return &group_optional_[0]; 1205 } 1206 getPermission_optional() const1207 const std::vector<Permission>& Permissions::getPermission_optional() const { 1208 return permission_optional_; 1209 } 1210 hasPermission_optional() const1211 bool Permissions::hasPermission_optional() const { 1212 return !(permission_optional_.empty()); 1213 } 1214 getFirstPermission_optional() const1215 const Permission* Permissions::getFirstPermission_optional() const { 1216 if (permission_optional_.empty()) { 1217 return nullptr; 1218 } 1219 return &permission_optional_[0]; 1220 } 1221 getAssignPermission_optional() const1222 const std::vector<AssignPermission>& Permissions::getAssignPermission_optional() const { 1223 return assignPermission_optional_; 1224 } 1225 hasAssignPermission_optional() const1226 bool Permissions::hasAssignPermission_optional() const { 1227 return !(assignPermission_optional_.empty()); 1228 } 1229 getFirstAssignPermission_optional() const1230 const AssignPermission* Permissions::getFirstAssignPermission_optional() const { 1231 if (assignPermission_optional_.empty()) { 1232 return nullptr; 1233 } 1234 return &assignPermission_optional_[0]; 1235 } 1236 getSplitPermission_optional() const1237 const std::vector<SplitPermission>& Permissions::getSplitPermission_optional() const { 1238 return splitPermission_optional_; 1239 } 1240 hasSplitPermission_optional() const1241 bool Permissions::hasSplitPermission_optional() const { 1242 return !(splitPermission_optional_.empty()); 1243 } 1244 getFirstSplitPermission_optional() const1245 const SplitPermission* Permissions::getFirstSplitPermission_optional() const { 1246 if (splitPermission_optional_.empty()) { 1247 return nullptr; 1248 } 1249 return &splitPermission_optional_[0]; 1250 } 1251 getLibrary_optional() const1252 const std::vector<Library>& Permissions::getLibrary_optional() const { 1253 return library_optional_; 1254 } 1255 hasLibrary_optional() const1256 bool Permissions::hasLibrary_optional() const { 1257 return !(library_optional_.empty()); 1258 } 1259 getFirstLibrary_optional() const1260 const Library* Permissions::getFirstLibrary_optional() const { 1261 if (library_optional_.empty()) { 1262 return nullptr; 1263 } 1264 return &library_optional_[0]; 1265 } 1266 getFeature_optional() const1267 const std::vector<Feature>& Permissions::getFeature_optional() const { 1268 return feature_optional_; 1269 } 1270 hasFeature_optional() const1271 bool Permissions::hasFeature_optional() const { 1272 return !(feature_optional_.empty()); 1273 } 1274 getFirstFeature_optional() const1275 const Feature* Permissions::getFirstFeature_optional() const { 1276 if (feature_optional_.empty()) { 1277 return nullptr; 1278 } 1279 return &feature_optional_[0]; 1280 } 1281 getUnavailableFeature_optional() const1282 const std::vector<UnavailableFeature>& Permissions::getUnavailableFeature_optional() const { 1283 return unavailableFeature_optional_; 1284 } 1285 hasUnavailableFeature_optional() const1286 bool Permissions::hasUnavailableFeature_optional() const { 1287 return !(unavailableFeature_optional_.empty()); 1288 } 1289 getFirstUnavailableFeature_optional() const1290 const UnavailableFeature* Permissions::getFirstUnavailableFeature_optional() const { 1291 if (unavailableFeature_optional_.empty()) { 1292 return nullptr; 1293 } 1294 return &unavailableFeature_optional_[0]; 1295 } 1296 getAllowInPowerSaveExceptIdle_optional() const1297 const std::vector<AllowInPowerSaveExceptIdle>& Permissions::getAllowInPowerSaveExceptIdle_optional() const { 1298 return allowInPowerSaveExceptIdle_optional_; 1299 } 1300 hasAllowInPowerSaveExceptIdle_optional() const1301 bool Permissions::hasAllowInPowerSaveExceptIdle_optional() const { 1302 return !(allowInPowerSaveExceptIdle_optional_.empty()); 1303 } 1304 getFirstAllowInPowerSaveExceptIdle_optional() const1305 const AllowInPowerSaveExceptIdle* Permissions::getFirstAllowInPowerSaveExceptIdle_optional() const { 1306 if (allowInPowerSaveExceptIdle_optional_.empty()) { 1307 return nullptr; 1308 } 1309 return &allowInPowerSaveExceptIdle_optional_[0]; 1310 } 1311 getAllowInPowerSave_optional() const1312 const std::vector<AllowInPowerSave>& Permissions::getAllowInPowerSave_optional() const { 1313 return allowInPowerSave_optional_; 1314 } 1315 hasAllowInPowerSave_optional() const1316 bool Permissions::hasAllowInPowerSave_optional() const { 1317 return !(allowInPowerSave_optional_.empty()); 1318 } 1319 getFirstAllowInPowerSave_optional() const1320 const AllowInPowerSave* Permissions::getFirstAllowInPowerSave_optional() const { 1321 if (allowInPowerSave_optional_.empty()) { 1322 return nullptr; 1323 } 1324 return &allowInPowerSave_optional_[0]; 1325 } 1326 getAllowInDataUsageSave_optional() const1327 const std::vector<AllowInDataUsageSave>& Permissions::getAllowInDataUsageSave_optional() const { 1328 return allowInDataUsageSave_optional_; 1329 } 1330 hasAllowInDataUsageSave_optional() const1331 bool Permissions::hasAllowInDataUsageSave_optional() const { 1332 return !(allowInDataUsageSave_optional_.empty()); 1333 } 1334 getFirstAllowInDataUsageSave_optional() const1335 const AllowInDataUsageSave* Permissions::getFirstAllowInDataUsageSave_optional() const { 1336 if (allowInDataUsageSave_optional_.empty()) { 1337 return nullptr; 1338 } 1339 return &allowInDataUsageSave_optional_[0]; 1340 } 1341 getAllowUnthrottledLocation_optional() const1342 const std::vector<AllowUnthrottledLocation>& Permissions::getAllowUnthrottledLocation_optional() const { 1343 return allowUnthrottledLocation_optional_; 1344 } 1345 hasAllowUnthrottledLocation_optional() const1346 bool Permissions::hasAllowUnthrottledLocation_optional() const { 1347 return !(allowUnthrottledLocation_optional_.empty()); 1348 } 1349 getFirstAllowUnthrottledLocation_optional() const1350 const AllowUnthrottledLocation* Permissions::getFirstAllowUnthrottledLocation_optional() const { 1351 if (allowUnthrottledLocation_optional_.empty()) { 1352 return nullptr; 1353 } 1354 return &allowUnthrottledLocation_optional_[0]; 1355 } 1356 getAllowIgnoreLocationSettings_optional() const1357 const std::vector<AllowIgnoreLocationSettings>& Permissions::getAllowIgnoreLocationSettings_optional() const { 1358 return allowIgnoreLocationSettings_optional_; 1359 } 1360 hasAllowIgnoreLocationSettings_optional() const1361 bool Permissions::hasAllowIgnoreLocationSettings_optional() const { 1362 return !(allowIgnoreLocationSettings_optional_.empty()); 1363 } 1364 getFirstAllowIgnoreLocationSettings_optional() const1365 const AllowIgnoreLocationSettings* Permissions::getFirstAllowIgnoreLocationSettings_optional() const { 1366 if (allowIgnoreLocationSettings_optional_.empty()) { 1367 return nullptr; 1368 } 1369 return &allowIgnoreLocationSettings_optional_[0]; 1370 } 1371 getAllowImplicitBroadcast_optional() const1372 const std::vector<AllowImplicitBroadcast>& Permissions::getAllowImplicitBroadcast_optional() const { 1373 return allowImplicitBroadcast_optional_; 1374 } 1375 hasAllowImplicitBroadcast_optional() const1376 bool Permissions::hasAllowImplicitBroadcast_optional() const { 1377 return !(allowImplicitBroadcast_optional_.empty()); 1378 } 1379 getFirstAllowImplicitBroadcast_optional() const1380 const AllowImplicitBroadcast* Permissions::getFirstAllowImplicitBroadcast_optional() const { 1381 if (allowImplicitBroadcast_optional_.empty()) { 1382 return nullptr; 1383 } 1384 return &allowImplicitBroadcast_optional_[0]; 1385 } 1386 getAppLink_optional() const1387 const std::vector<AppLink>& Permissions::getAppLink_optional() const { 1388 return appLink_optional_; 1389 } 1390 hasAppLink_optional() const1391 bool Permissions::hasAppLink_optional() const { 1392 return !(appLink_optional_.empty()); 1393 } 1394 getFirstAppLink_optional() const1395 const AppLink* Permissions::getFirstAppLink_optional() const { 1396 if (appLink_optional_.empty()) { 1397 return nullptr; 1398 } 1399 return &appLink_optional_[0]; 1400 } 1401 getSystemUserWhitelistedApp_optional() const1402 const std::vector<SystemUserWhitelistedApp>& Permissions::getSystemUserWhitelistedApp_optional() const { 1403 return systemUserWhitelistedApp_optional_; 1404 } 1405 hasSystemUserWhitelistedApp_optional() const1406 bool Permissions::hasSystemUserWhitelistedApp_optional() const { 1407 return !(systemUserWhitelistedApp_optional_.empty()); 1408 } 1409 getFirstSystemUserWhitelistedApp_optional() const1410 const SystemUserWhitelistedApp* Permissions::getFirstSystemUserWhitelistedApp_optional() const { 1411 if (systemUserWhitelistedApp_optional_.empty()) { 1412 return nullptr; 1413 } 1414 return &systemUserWhitelistedApp_optional_[0]; 1415 } 1416 getSystemUserBlacklistedApp_optional() const1417 const std::vector<SystemUserBlacklistedApp>& Permissions::getSystemUserBlacklistedApp_optional() const { 1418 return systemUserBlacklistedApp_optional_; 1419 } 1420 hasSystemUserBlacklistedApp_optional() const1421 bool Permissions::hasSystemUserBlacklistedApp_optional() const { 1422 return !(systemUserBlacklistedApp_optional_.empty()); 1423 } 1424 getFirstSystemUserBlacklistedApp_optional() const1425 const SystemUserBlacklistedApp* Permissions::getFirstSystemUserBlacklistedApp_optional() const { 1426 if (systemUserBlacklistedApp_optional_.empty()) { 1427 return nullptr; 1428 } 1429 return &systemUserBlacklistedApp_optional_[0]; 1430 } 1431 getDefaultEnabledVrApp_optional() const1432 const std::vector<DefaultEnabledVrApp>& Permissions::getDefaultEnabledVrApp_optional() const { 1433 return defaultEnabledVrApp_optional_; 1434 } 1435 hasDefaultEnabledVrApp_optional() const1436 bool Permissions::hasDefaultEnabledVrApp_optional() const { 1437 return !(defaultEnabledVrApp_optional_.empty()); 1438 } 1439 getFirstDefaultEnabledVrApp_optional() const1440 const DefaultEnabledVrApp* Permissions::getFirstDefaultEnabledVrApp_optional() const { 1441 if (defaultEnabledVrApp_optional_.empty()) { 1442 return nullptr; 1443 } 1444 return &defaultEnabledVrApp_optional_[0]; 1445 } 1446 getBackupTransportWhitelistedService_optional() const1447 const std::vector<BackupTransportWhitelistedService>& Permissions::getBackupTransportWhitelistedService_optional() const { 1448 return backupTransportWhitelistedService_optional_; 1449 } 1450 hasBackupTransportWhitelistedService_optional() const1451 bool Permissions::hasBackupTransportWhitelistedService_optional() const { 1452 return !(backupTransportWhitelistedService_optional_.empty()); 1453 } 1454 getFirstBackupTransportWhitelistedService_optional() const1455 const BackupTransportWhitelistedService* Permissions::getFirstBackupTransportWhitelistedService_optional() const { 1456 if (backupTransportWhitelistedService_optional_.empty()) { 1457 return nullptr; 1458 } 1459 return &backupTransportWhitelistedService_optional_[0]; 1460 } 1461 getDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const1462 const std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp>& Permissions::getDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const { 1463 return disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_; 1464 } 1465 hasDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const1466 bool Permissions::hasDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const { 1467 return !(disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_.empty()); 1468 } 1469 getFirstDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const1470 const DisabledUntilUsedPreinstalledCarrierAssociatedApp* Permissions::getFirstDisabledUntilUsedPreinstalledCarrierAssociatedApp_optional() const { 1471 if (disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_.empty()) { 1472 return nullptr; 1473 } 1474 return &disabledUntilUsedPreinstalledCarrierAssociatedApp_optional_[0]; 1475 } 1476 getDisabledUntilUsedPreinstalledCarrierApp_optional() const1477 const std::vector<DisabledUntilUsedPreinstalledCarrierApp>& Permissions::getDisabledUntilUsedPreinstalledCarrierApp_optional() const { 1478 return disabledUntilUsedPreinstalledCarrierApp_optional_; 1479 } 1480 hasDisabledUntilUsedPreinstalledCarrierApp_optional() const1481 bool Permissions::hasDisabledUntilUsedPreinstalledCarrierApp_optional() const { 1482 return !(disabledUntilUsedPreinstalledCarrierApp_optional_.empty()); 1483 } 1484 getFirstDisabledUntilUsedPreinstalledCarrierApp_optional() const1485 const DisabledUntilUsedPreinstalledCarrierApp* Permissions::getFirstDisabledUntilUsedPreinstalledCarrierApp_optional() const { 1486 if (disabledUntilUsedPreinstalledCarrierApp_optional_.empty()) { 1487 return nullptr; 1488 } 1489 return &disabledUntilUsedPreinstalledCarrierApp_optional_[0]; 1490 } 1491 getPrivappPermissions_optional() const1492 const std::vector<PrivappPermissions>& Permissions::getPrivappPermissions_optional() const { 1493 return privappPermissions_optional_; 1494 } 1495 hasPrivappPermissions_optional() const1496 bool Permissions::hasPrivappPermissions_optional() const { 1497 return !(privappPermissions_optional_.empty()); 1498 } 1499 getFirstPrivappPermissions_optional() const1500 const PrivappPermissions* Permissions::getFirstPrivappPermissions_optional() const { 1501 if (privappPermissions_optional_.empty()) { 1502 return nullptr; 1503 } 1504 return &privappPermissions_optional_[0]; 1505 } 1506 getOemPermissions_optional() const1507 const std::vector<OemPermissions>& Permissions::getOemPermissions_optional() const { 1508 return oemPermissions_optional_; 1509 } 1510 hasOemPermissions_optional() const1511 bool Permissions::hasOemPermissions_optional() const { 1512 return !(oemPermissions_optional_.empty()); 1513 } 1514 getFirstOemPermissions_optional() const1515 const OemPermissions* Permissions::getFirstOemPermissions_optional() const { 1516 if (oemPermissions_optional_.empty()) { 1517 return nullptr; 1518 } 1519 return &oemPermissions_optional_[0]; 1520 } 1521 getSignaturePermissions_optional() const1522 const std::vector<SignaturePermissions>& Permissions::getSignaturePermissions_optional() const { 1523 return signaturePermissions_optional_; 1524 } 1525 hasSignaturePermissions_optional() const1526 bool Permissions::hasSignaturePermissions_optional() const { 1527 return !(signaturePermissions_optional_.empty()); 1528 } 1529 getFirstSignaturePermissions_optional() const1530 const SignaturePermissions* Permissions::getFirstSignaturePermissions_optional() const { 1531 if (signaturePermissions_optional_.empty()) { 1532 return nullptr; 1533 } 1534 return &signaturePermissions_optional_[0]; 1535 } 1536 getHiddenApiWhitelistedApp_optional() const1537 const std::vector<HiddenApiWhitelistedApp>& Permissions::getHiddenApiWhitelistedApp_optional() const { 1538 return hiddenApiWhitelistedApp_optional_; 1539 } 1540 hasHiddenApiWhitelistedApp_optional() const1541 bool Permissions::hasHiddenApiWhitelistedApp_optional() const { 1542 return !(hiddenApiWhitelistedApp_optional_.empty()); 1543 } 1544 getFirstHiddenApiWhitelistedApp_optional() const1545 const HiddenApiWhitelistedApp* Permissions::getFirstHiddenApiWhitelistedApp_optional() const { 1546 if (hiddenApiWhitelistedApp_optional_.empty()) { 1547 return nullptr; 1548 } 1549 return &hiddenApiWhitelistedApp_optional_[0]; 1550 } 1551 getAllowAssociation_optional() const1552 const std::vector<AllowAssociation>& Permissions::getAllowAssociation_optional() const { 1553 return allowAssociation_optional_; 1554 } 1555 hasAllowAssociation_optional() const1556 bool Permissions::hasAllowAssociation_optional() const { 1557 return !(allowAssociation_optional_.empty()); 1558 } 1559 getFirstAllowAssociation_optional() const1560 const AllowAssociation* Permissions::getFirstAllowAssociation_optional() const { 1561 if (allowAssociation_optional_.empty()) { 1562 return nullptr; 1563 } 1564 return &allowAssociation_optional_[0]; 1565 } 1566 getBugreportWhitelisted_optional() const1567 const std::vector<BugreportWhitelisted>& Permissions::getBugreportWhitelisted_optional() const { 1568 return bugreportWhitelisted_optional_; 1569 } 1570 hasBugreportWhitelisted_optional() const1571 bool Permissions::hasBugreportWhitelisted_optional() const { 1572 return !(bugreportWhitelisted_optional_.empty()); 1573 } 1574 getFirstBugreportWhitelisted_optional() const1575 const BugreportWhitelisted* Permissions::getFirstBugreportWhitelisted_optional() const { 1576 if (bugreportWhitelisted_optional_.empty()) { 1577 return nullptr; 1578 } 1579 return &bugreportWhitelisted_optional_[0]; 1580 } 1581 getAppDataIsolationWhitelistedApp_optional() const1582 const std::vector<AppDataIsolationWhitelistedApp>& Permissions::getAppDataIsolationWhitelistedApp_optional() const { 1583 return appDataIsolationWhitelistedApp_optional_; 1584 } 1585 hasAppDataIsolationWhitelistedApp_optional() const1586 bool Permissions::hasAppDataIsolationWhitelistedApp_optional() const { 1587 return !(appDataIsolationWhitelistedApp_optional_.empty()); 1588 } 1589 getFirstAppDataIsolationWhitelistedApp_optional() const1590 const AppDataIsolationWhitelistedApp* Permissions::getFirstAppDataIsolationWhitelistedApp_optional() const { 1591 if (appDataIsolationWhitelistedApp_optional_.empty()) { 1592 return nullptr; 1593 } 1594 return &appDataIsolationWhitelistedApp_optional_[0]; 1595 } 1596 read(xmlNode * root)1597 Permissions Permissions::read(xmlNode *root) { 1598 std::string _raw; 1599 std::vector<Group> group_optional; 1600 std::vector<Permission> permission_optional; 1601 std::vector<AssignPermission> assignPermission_optional; 1602 std::vector<SplitPermission> splitPermission_optional; 1603 std::vector<Library> library_optional; 1604 std::vector<Feature> feature_optional; 1605 std::vector<UnavailableFeature> unavailableFeature_optional; 1606 std::vector<AllowInPowerSaveExceptIdle> allowInPowerSaveExceptIdle_optional; 1607 std::vector<AllowInPowerSave> allowInPowerSave_optional; 1608 std::vector<AllowInDataUsageSave> allowInDataUsageSave_optional; 1609 std::vector<AllowUnthrottledLocation> allowUnthrottledLocation_optional; 1610 std::vector<AllowIgnoreLocationSettings> allowIgnoreLocationSettings_optional; 1611 std::vector<AllowImplicitBroadcast> allowImplicitBroadcast_optional; 1612 std::vector<AppLink> appLink_optional; 1613 std::vector<SystemUserWhitelistedApp> systemUserWhitelistedApp_optional; 1614 std::vector<SystemUserBlacklistedApp> systemUserBlacklistedApp_optional; 1615 std::vector<DefaultEnabledVrApp> defaultEnabledVrApp_optional; 1616 std::vector<BackupTransportWhitelistedService> backupTransportWhitelistedService_optional; 1617 std::vector<DisabledUntilUsedPreinstalledCarrierAssociatedApp> disabledUntilUsedPreinstalledCarrierAssociatedApp_optional; 1618 std::vector<DisabledUntilUsedPreinstalledCarrierApp> disabledUntilUsedPreinstalledCarrierApp_optional; 1619 std::vector<PrivappPermissions> privappPermissions_optional; 1620 std::vector<OemPermissions> oemPermissions_optional; 1621 std::vector<SignaturePermissions> signaturePermissions_optional; 1622 std::vector<HiddenApiWhitelistedApp> hiddenApiWhitelistedApp_optional; 1623 std::vector<AllowAssociation> allowAssociation_optional; 1624 std::vector<BugreportWhitelisted> bugreportWhitelisted_optional; 1625 std::vector<AppDataIsolationWhitelistedApp> appDataIsolationWhitelistedApp_optional; 1626 for (auto *_child = root->xmlChildrenNode; _child != nullptr; _child = _child->next) { 1627 if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("group"))) { 1628 Group _value = Group::read(_child); 1629 group_optional.push_back(std::move(_value)); 1630 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("permission"))) { 1631 Permission _value = Permission::read(_child); 1632 permission_optional.push_back(std::move(_value)); 1633 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("assign-permission"))) { 1634 AssignPermission _value = AssignPermission::read(_child); 1635 assignPermission_optional.push_back(std::move(_value)); 1636 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("split-permission"))) { 1637 SplitPermission _value = SplitPermission::read(_child); 1638 splitPermission_optional.push_back(std::move(_value)); 1639 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("library"))) { 1640 Library _value = Library::read(_child); 1641 library_optional.push_back(std::move(_value)); 1642 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("feature"))) { 1643 Feature _value = Feature::read(_child); 1644 feature_optional.push_back(std::move(_value)); 1645 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("unavailable-feature"))) { 1646 UnavailableFeature _value = UnavailableFeature::read(_child); 1647 unavailableFeature_optional.push_back(std::move(_value)); 1648 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-in-power-save-except-idle"))) { 1649 AllowInPowerSaveExceptIdle _value = AllowInPowerSaveExceptIdle::read(_child); 1650 allowInPowerSaveExceptIdle_optional.push_back(std::move(_value)); 1651 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-in-power-save"))) { 1652 AllowInPowerSave _value = AllowInPowerSave::read(_child); 1653 allowInPowerSave_optional.push_back(std::move(_value)); 1654 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-in-data-usage-save"))) { 1655 AllowInDataUsageSave _value = AllowInDataUsageSave::read(_child); 1656 allowInDataUsageSave_optional.push_back(std::move(_value)); 1657 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-unthrottled-location"))) { 1658 AllowUnthrottledLocation _value = AllowUnthrottledLocation::read(_child); 1659 allowUnthrottledLocation_optional.push_back(std::move(_value)); 1660 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-ignore-location-settings"))) { 1661 AllowIgnoreLocationSettings _value = AllowIgnoreLocationSettings::read(_child); 1662 allowIgnoreLocationSettings_optional.push_back(std::move(_value)); 1663 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-implicit-broadcast"))) { 1664 AllowImplicitBroadcast _value = AllowImplicitBroadcast::read(_child); 1665 allowImplicitBroadcast_optional.push_back(std::move(_value)); 1666 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("app-link"))) { 1667 AppLink _value = AppLink::read(_child); 1668 appLink_optional.push_back(std::move(_value)); 1669 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("system-user-whitelisted-app"))) { 1670 SystemUserWhitelistedApp _value = SystemUserWhitelistedApp::read(_child); 1671 systemUserWhitelistedApp_optional.push_back(std::move(_value)); 1672 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("system-user-blacklisted-app"))) { 1673 SystemUserBlacklistedApp _value = SystemUserBlacklistedApp::read(_child); 1674 systemUserBlacklistedApp_optional.push_back(std::move(_value)); 1675 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("default-enabled-vr-app"))) { 1676 DefaultEnabledVrApp _value = DefaultEnabledVrApp::read(_child); 1677 defaultEnabledVrApp_optional.push_back(std::move(_value)); 1678 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("backup-transport-whitelisted-service"))) { 1679 BackupTransportWhitelistedService _value = BackupTransportWhitelistedService::read(_child); 1680 backupTransportWhitelistedService_optional.push_back(std::move(_value)); 1681 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("disabled-until-used-preinstalled-carrier-associated-app"))) { 1682 DisabledUntilUsedPreinstalledCarrierAssociatedApp _value = DisabledUntilUsedPreinstalledCarrierAssociatedApp::read(_child); 1683 disabledUntilUsedPreinstalledCarrierAssociatedApp_optional.push_back(std::move(_value)); 1684 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("disabled-until-used-preinstalled-carrier-app"))) { 1685 DisabledUntilUsedPreinstalledCarrierApp _value = DisabledUntilUsedPreinstalledCarrierApp::read(_child); 1686 disabledUntilUsedPreinstalledCarrierApp_optional.push_back(std::move(_value)); 1687 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("privapp-permissions"))) { 1688 PrivappPermissions _value = PrivappPermissions::read(_child); 1689 privappPermissions_optional.push_back(std::move(_value)); 1690 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("oem-permissions"))) { 1691 OemPermissions _value = OemPermissions::read(_child); 1692 oemPermissions_optional.push_back(std::move(_value)); 1693 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("signature-permissions"))) { 1694 SignaturePermissions _value = SignaturePermissions::read(_child); 1695 signaturePermissions_optional.push_back(std::move(_value)); 1696 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("hidden-api-whitelisted-app"))) { 1697 HiddenApiWhitelistedApp _value = HiddenApiWhitelistedApp::read(_child); 1698 hiddenApiWhitelistedApp_optional.push_back(std::move(_value)); 1699 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("allow-association"))) { 1700 AllowAssociation _value = AllowAssociation::read(_child); 1701 allowAssociation_optional.push_back(std::move(_value)); 1702 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("bugreport-whitelisted"))) { 1703 BugreportWhitelisted _value = BugreportWhitelisted::read(_child); 1704 bugreportWhitelisted_optional.push_back(std::move(_value)); 1705 } else if (!xmlStrcmp(_child->name, reinterpret_cast<const xmlChar*>("app-data-isolation-whitelisted-app"))) { 1706 AppDataIsolationWhitelistedApp _value = AppDataIsolationWhitelistedApp::read(_child); 1707 appDataIsolationWhitelistedApp_optional.push_back(std::move(_value)); 1708 } 1709 } 1710 Permissions instance(group_optional, permission_optional, assignPermission_optional, splitPermission_optional, library_optional, feature_optional, unavailableFeature_optional, allowInPowerSaveExceptIdle_optional, allowInPowerSave_optional, allowInDataUsageSave_optional, allowUnthrottledLocation_optional, allowIgnoreLocationSettings_optional, allowImplicitBroadcast_optional, appLink_optional, systemUserWhitelistedApp_optional, systemUserBlacklistedApp_optional, defaultEnabledVrApp_optional, backupTransportWhitelistedService_optional, disabledUntilUsedPreinstalledCarrierAssociatedApp_optional, disabledUntilUsedPreinstalledCarrierApp_optional, privappPermissions_optional, oemPermissions_optional, signaturePermissions_optional, hiddenApiWhitelistedApp_optional, allowAssociation_optional, bugreportWhitelisted_optional, appDataIsolationWhitelistedApp_optional); 1711 return instance; 1712 } 1713 } // configfile 1714 } // permission 1715 } // xml 1716 } // android 1717 } // com 1718