syntax = "proto2"; option java_package = "com.android.dialer.phonelookup"; option java_multiple_files = true; package com.android.dialer.phonelookup; // Contains information about a phone number, possibly from many sources. // // This message is organized into sub-message fields where each one corresponds // to an implementation of PhoneLookup. For example, field // "cp2_info_in_default_directory" corresponds to class // Cp2DefaultDirectoryPhoneLookup, and class Cp2DefaultDirectoryPhoneLookup // alone is responsible for populating it. // Next ID: 11 message PhoneLookupInfo { // Information about a PhoneNumber retrieved from CP2. message Cp2Info { // Information about a single contact. // Next ID: 9 message Cp2ContactInfo { // For a contact in the default directory: // android.provider.ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY // For a contact in other directories: // android.provider.ContactsContract.PhoneLookup.DISPLAY_NAME_PRIMARY optional string name = 1; // For a contact in the default directory: // android.provider.ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI // For a contact in other directories: // android.provider.ContactsContract.PhoneLookup.PHOTO_THUMBNAIL_URI optional string photo_thumbnail_uri = 2; // For a contact in the default directory: // android.provider.ContactsContract.CommonDataKinds.Phone.PHOTO_URI // For a contact in other directories: // android.provider.ContactsContract.PhoneLookup.PHOTO_URI optional string photo_uri = 3; // For a contact in the default directory: // android.provider.ContactsContract.CommonDataKinds.Phone.PHOTO_ID // For a contact in other directories: // android.provider.ContactsContract.PhoneLookup.PHOTO_ID optional fixed64 photo_id = 4; // For a contact in the default directory: // android.provider.ContactsContract.CommonDataKinds.Phone.LABEL // For a contact in other directories: // android.provider.ContactsContract.PhoneLookup.LABEL // // The value can be "Home", "Mobile", ect. optional string label = 5; // For a contact in the default directory: // android.provider.ContactsContract.CommonDataKinds.Phone.CONTACT_ID // For a contact in other directories: // android.provider.ContactsContract.PhoneLookup.CONTACT_ID optional fixed64 contact_id = 6; // For a contact in the default directory: // constructed based on // android.provider.ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY // For a contact in other directories: // constructed based on // android.provider.ContactsContract.PhoneLookup.LOOKUP_KEY optional string lookup_uri = 7; // For a contact in the default directory: // value set based on // android.provider.ContactsContract.CommonDataKinds.Phone.CARRIER_PRESENCE // For a contact in other directories: always false. // This is because we lookup contacts in other directories via // android.provider.ContactsContract.PhoneLookup, to which carrier // presence info is not directly accessible. optional bool can_support_carrier_video_call = 8; } // Repeated because one phone number can be associated with multiple CP2 // contacts. // // Empty if there is no CP2 contact information for the number. repeated Cp2ContactInfo cp2_contact_info = 1; // The information for this number is incomplete. This can happen when the // call log is requested to be updated but there are many invalid numbers // and the update cannot be performed efficiently. In this case, the call // log needs to query for the CP2 information at render time. optional bool is_incomplete = 2; } // Information about a contact in the default directory, retrieved via CP2. // Cp2DefaultDirectoryPhoneLookup is responsible for populating this field. optional Cp2Info default_cp2_info = 1; // Information about a contact in other directories, retrieved via CP2. // Cp2ExtendedDirectoryPhoneLookup is responsible for populating this field. optional Cp2Info extended_cp2_info = 6; // Message for spam info. // SpamPhoneLookup is responsible for populating this message. message SpamInfo { optional bool is_spam = 1; } optional SpamInfo spam_info = 2; // Message for PeopleApi, including G+ contacts and nearby places message PeopleApiInfo { // Best display name determined by people API if available, first display // name otherwise. optional string display_name = 1; // The type of the number, for example "phone" or "home". optional string number_type = 2; // The number_type label in human readable string, for example "Phone". // The UI should display known number_type with string resources if possible // but if number_type is unrecognized formatted_number_type. For example // if the user set an custom type label. optional string formatted_number_type = 3; // URL to the contact's full size photo. optional string image_url = 4; // The primary key of the contact in people API. optional string person_id = 5; enum InfoType { UNKNOWN = 0; CONTACT = 1; // the result is a saved contact in people API NEARBY_BUSINESS = 2; // the result is found through nearby places } // The type of the lookup result, for example, a saved contact or a nearby // business. optional InfoType info_type = 6; // A URI that contains encoded JSON about the number so contacts can // populate the quick contact activity with name and numbers. This does not // point to any real contact entry anywhere. optional string lookup_uri = 7; } optional PeopleApiInfo people_api_info = 3; // Whether a number is blocked or not. Used by both the system block list and // dialer fallback enum BlockedState { UNKNOWN = 0; BLOCKED = 1; NOT_BLOCKED = 2; } // Message for the android system BlockedNumber lookup. Available starting in // N. message SystemBlockedNumberInfo { optional BlockedState blocked_state = 1; } optional SystemBlockedNumberInfo system_blocked_number_info = 4; // Information obtained via CNAP // (https://en.wikipedia.org/wiki/Calling_Name_Presentation) // Next ID: 2 message CnapInfo { optional string name = 1; } optional CnapInfo cnap_info = 7; // Information obtained via Cequint // Next ID: 4 message CequintInfo { optional string name = 1; // Description of the geolocation (e.g., "Mountain View, CA") optional string geolocation = 2; optional string photo_uri = 3; } optional CequintInfo cequint_info = 8; // Message indicating whether a number is an emergency number. // Next ID: 2 message EmergencyInfo { optional bool is_emergency_number = 1; } optional EmergencyInfo emergency_info = 9; // Information cached in the old calllog message MigratedInfo { // The display name optional string name = 1; // Display label, i.e. "Home", "Mobile" optional string label = 2; optional string photo_uri = 3; optional bool is_business = 4; // ContactSource.Type optional int32 source_type = 5; } optional MigratedInfo migrated_info = 10; }