Home | History | Annotate | Download | only in proto
      1 // Copyright (C) 2018 The Android Open Source Project
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 //      http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 // [START declaration]
     16 syntax = "proto3";
     17 package com_android_cts_releaseparser;
     18 // [END declaration]
     19 
     20 // [START java_declaration]
     21 option java_package = "com.android.cts.releaseparser";
     22 option java_outer_classname = "ReleaseProto";
     23 // [END java_declaration]
     24 
     25 // [START messages]
     26 message Option {
     27     string name = 1;
     28     string key = 2;
     29     string value =3;
     30 }
     31 
     32 message TestModuleConfig {
     33     string module_name = 1;
     34     string component = 2;
     35     string description = 3;
     36     repeated Option options = 4;
     37 
     38     message TargetPreparer {
     39         string test_class = 1;
     40         repeated Option options = 2;
     41     }
     42     repeated TargetPreparer target_preparers = 5;
     43     repeated string test_file_names = 6;
     44 
     45     message TestClass {
     46         string test_class = 1;
     47         string package = 2;
     48         repeated Option options = 3;
     49     }
     50     repeated TestClass test_classes = 7;
     51     repeated string test_jars = 8;
     52 }
     53 
     54 message Element {
     55     string name = 1;
     56     string value = 2;
     57 }
     58 
     59 message ApiAnnotation {
     60     int32 visibility = 1;
     61     string type = 2;
     62 
     63     repeated Element elements = 3;
     64 }
     65 
     66 message ApiField {
     67     string defining_class = 1;
     68     string name = 2;
     69     string type = 3;
     70     int32 access_flags = 4;
     71     string initial_value = 5;
     72     repeated ApiAnnotation annotations = 6;
     73     string value = 7;
     74 }
     75 
     76 message ApiMethod {
     77     string defining_class = 1;
     78     string name = 2;
     79     repeated string parameters = 3;
     80     string return_type = 4;
     81     int32 access_flags = 5;
     82     string known_failure_filter = 6;
     83     repeated ApiAnnotation annotations = 7;
     84 }
     85 
     86 message ApiClass {
     87     string name = 1;
     88     string type = 2;
     89     string super_class = 3;
     90     repeated string interfaces = 4;
     91     TestClassType test_class_type = 5;
     92     int32 access_flags = 6;
     93     repeated ApiAnnotation annotations = 7;
     94     repeated ApiMethod methods = 8;
     95     repeated ApiField fields = 9;
     96 }
     97 
     98 message ApiPackage {
     99     string name = 1;
    100     string package_file = 2;
    101     string content_id = 3;
    102     string op_codes = 4;
    103 
    104     repeated ApiClass classes = 5;
    105     string error = 6;
    106 }
    107 
    108 enum TestClassType {
    109     UNKNOWN = 0;
    110     JUNIT3 = 1;
    111     JUNIT4 = 2;
    112     PARAMETERIZED = 3;
    113     JAVAHOST = 4;
    114 }
    115 
    116 message TestSuite {
    117     string name = 1;
    118     // Version
    119     string version = 2;
    120     // Build Number
    121     string build_number = 3;
    122     // Content ID
    123     string content_id = 4;
    124 
    125     enum TestType {
    126         UNKNOWN = 0;
    127         ANDROIDJUNIT = 1;
    128         JAVAHOST = 2;
    129         GTEST = 3;
    130         LIBCORE = 4;
    131         DALVIK = 5;
    132         DEQP = 6;
    133     }
    134 
    135     message Module {
    136         string name = 1;
    137         string config_file = 2;
    138         TestType test_type = 3;
    139         string test_class = 4;
    140         repeated ApiPackage packages = 5;
    141     }
    142     repeated Module modules = 5;
    143 }
    144 
    145 message Service {
    146     string name = 1;
    147     string file = 2;
    148     repeated string arguments = 3;
    149     string clazz = 4;
    150     string user = 5;
    151     string group = 6;
    152     string writepid = 7;
    153     repeated string options = 8;
    154 }
    155 
    156 message Api {
    157     string name = 1;
    158     string version = 2;
    159     // map of Package Name & Package Message
    160     map<string, ApiPackage> packages = 3;
    161 }
    162 
    163 message UsesFeature {
    164     string name = 1;
    165     string required = 2;
    166 }
    167 
    168 message UsesLibrary {
    169     string name = 1;
    170     string required = 2;
    171 }
    172 
    173 message AppInfo {
    174     string package_name = 1;
    175     string version_code = 2;
    176     string version_name = 3;
    177     string sdk_version = 4;
    178     string target_sdk_version = 5;
    179     repeated UsesFeature uses_features = 6;
    180     repeated UsesLibrary uses_libraries = 7;
    181     repeated string native_code = 8;
    182     repeated string uses_permissions = 9;
    183     repeated string activities = 10;
    184     repeated string services = 11;
    185     repeated string providers = 12;
    186     map<string, string> properties = 13;
    187     repeated ApiPackage external_api_packages = 14;
    188     repeated ApiPackage internal_api_packages = 15;
    189     PackageFileContent package_file_content = 16;
    190     string package_signature = 17;
    191 }
    192 
    193 message ImageSection {
    194     uint32 offset = 1;
    195     uint32 size = 2;
    196 }
    197 
    198 // art/runtime/image.h
    199 message ArtInfo {
    200     bool valid = 1;
    201     // skip magic_[4]
    202     string version = 2;
    203     uint32 image_begin = 3;
    204     uint32 image_size = 4;
    205     uint32 oat_checksum = 5;
    206     uint32 oat_file_begin = 6;
    207     uint32 oat_data_begin = 7;
    208     uint32 oat_data_end = 8;
    209     uint32 oat_file_end = 9;
    210 
    211     // app image headers only
    212     uint32 boot_image_begin = 10;
    213     uint32 boot_image_size = 11;
    214     uint32 boot_oat_begin = 12;
    215     uint32 boot_oat_size = 13;
    216 
    217     int32 patch_delta = 14;
    218     uint32 image_roots = 15;
    219     uint32 pointer_size = 16;
    220     uint32 compile_pic = 17;
    221     uint32 is_pic = 18;
    222 
    223     repeated ImageSection image_sections = 19;
    224     repeated uint64 image_methods = 20;
    225 
    226     uint32 storage_mode = 21;
    227     uint32 data_size = 22;
    228 }
    229 
    230 // art/dex2oat/linker/oat_writer.cc OatDexFile
    231 message OatDexInfo {
    232     string dex_file_location_data = 1;
    233     // The checksum of the dex file.
    234     uint32 dex_file_location_checksum = 2;
    235     // Offset of the dex file in the vdex file.
    236     uint32 dex_file_offset = 3;
    237     // The lookup table offset in the oat file. Set in WriteTypeLookupTables.
    238     uint32 lookup_table_offset = 4;
    239     // Class and BSS offsets set in PrepareLayout.
    240     uint32 class_offsets_offset = 5;
    241     uint32 method_bss_mapping_offset = 6;
    242     uint32 type_bss_mapping_offset = 7;
    243     uint32 string_bss_mapping_offset = 8;
    244     // Offset of dex sections that will have different runtime madvise states.
    245     uint32 dex_sections_layout_offset = 9;
    246 }
    247 
    248 // art/runtime/oat.h
    249 message OatInfo {
    250     // skip magic_[4]
    251     string version = 1;
    252     uint32 adler32_checksum = 2;
    253     // art/libartbase/arch/instruction_set.h
    254 
    255     uint32 instruction_set = 3;
    256     uint32 instruction_set_features_bitmap = 4;
    257     uint32 dex_file_count = 5;
    258     uint32 oat_dex_files_offset = 6;
    259     uint32 executable_offset = 7;
    260     uint32 interpreter_to_interpreter_bridge_offset = 8;
    261     uint32 interpreter_to_compiled_code_bridge_offset = 9;
    262     uint32 jni_dlsym_lookup_offset = 10;
    263     uint32 quick_generic_jni_trampoline_offset = 11;
    264     uint32 quick_imt_conflict_trampoline_offset = 12;
    265     uint32 quick_resolution_trampoline_offset = 13;
    266     uint32 quick_to_interpreter_bridge_offset = 14;
    267 
    268     // for backward compatibility, removed from version 162, see aosp/e0669326c0282b5b645aba75160425eef9d57617
    269     uint32 image_patch_delta = 15;
    270 
    271     uint32 image_file_location_oat_checksum = 16;
    272     // for backward compatibility, removed from version 162, see aosp/e0669326c0282b5b645aba75160425eef9d57617
    273     uint32 image_file_location_oat_data_begin = 17;
    274 
    275     uint32 key_value_store_size = 18;
    276 
    277     // int8_t key_value_store_[0];
    278     map<string, string> key_value_store = 19;
    279     repeated OatDexInfo oat_dex_info = 20;
    280     bool valid = 21;
    281     int32 bits = 22;
    282     string architecture = 23;
    283 }
    284 
    285 message DexSectionHeader {
    286     uint32 dex_size = 1;
    287     uint32 dex_shared_data_size = 2;
    288     uint32 quickening_info_size = 3;
    289 }
    290 
    291 // art/runtime/vdex_file.h
    292 message VdexInfo {
    293     bool valid = 1;
    294 
    295     // skip magic_[4]
    296     string verifier_deps_version = 2;
    297     string dex_section_version = 3;
    298     uint32 number_of_dex_files = 4;
    299     uint32 verifier_deps_size = 5;
    300     repeated uint32 checksums = 6;
    301     repeated DexSectionHeader dex_section_headers = 7;
    302 }
    303 
    304 message Permission {
    305     string name = 1;
    306     repeated Element elements = 2;
    307 }
    308 
    309 message PermissionList {
    310     string name = 1;
    311     repeated Permission permissions = 2;
    312 }
    313 
    314 message PackageFileContent {
    315     map<string, Entry> entries = 1;
    316 }
    317 
    318 // An entry in a release
    319 message Entry {
    320     // Name
    321     string name = 1;
    322 
    323     enum EntryType {
    324         FOLDER = 0;
    325         FILE = 1;
    326         TEST_MODULE_CONFIG = 2;
    327         JAR = 3;
    328         APK = 4;
    329         EXE = 5;
    330         SO = 6;
    331         OAT = 7;
    332         ODEX = 8;
    333         VDEX = 9;
    334         TEST_SUITE_TRADEFED = 10;
    335         BUILD_PROP = 11;
    336         SYMBOLIC_LINK = 12;
    337         RC = 13;
    338         ART = 14;
    339         XML = 15;
    340         IMG = 16;
    341     }
    342     // Type
    343     EntryType type = 2;
    344 
    345     // Size
    346     int64 size = 3;
    347     // Content ID
    348     string content_id = 4;
    349     // code_id
    350     string code_id = 5;
    351     // Parent folder
    352     string abi_architecture = 6;
    353     int32 abi_bits = 7;
    354     string parent_folder = 8;
    355     // Relative path
    356     string relative_path = 9;
    357 
    358     repeated string dependencies = 10;
    359     repeated string dynamic_loading_dependencies = 11;
    360 
    361     // file type specified info
    362     AppInfo app_info = 12;
    363     ArtInfo art_info = 13;
    364     OatInfo oat_info = 14;
    365     VdexInfo vdex_info = 15;
    366     // TestModule.config message
    367     TestModuleConfig test_module_config = 16;
    368     // Native services
    369     repeated Service services = 17;
    370     // Device permissions
    371     map<string, PermissionList> device_permissions = 18;
    372     // property map(key,value)
    373     map<string, string> properties = 19;
    374 }
    375 
    376 enum ReleaseType {
    377     DEVICE_BUILD = 0;
    378     TEST_SUITE = 1;
    379     APP_DISTRIBUTION_PACKAGE = 2;
    380 }
    381 
    382 message ReleaseContent {
    383     // Name
    384     string name = 1;
    385     // Version
    386     string version = 2;
    387     // Build Number
    388     string build_number = 3;
    389     // Full name
    390     string fullname = 4;
    391     // release uid e.g. Build Fingerprint
    392     string release_id = 5;
    393     // Content id
    394     string content_id = 6;
    395     // Size in byte
    396     int64 size = 7;
    397     ReleaseType release_type = 8;
    398     // property map(key,value)
    399     map<string, string> properties = 9;
    400     // File Entry map(relative_path, entry)
    401     map<string, Entry> entries = 10;
    402 
    403     // Test Suite specific
    404     string test_suite_tradefed = 11;
    405     string target_arch = 12;
    406     repeated string known_failures = 13;
    407 }
    408 // [END messages]