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