1/* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17syntax = "proto2"; 18 19package android.os.statsd.photopicker; 20 21import "frameworks/proto_logging/stats/atoms.proto"; 22import "frameworks/proto_logging/stats/atom_field_options.proto"; 23import "frameworks/proto_logging/stats/enums/photopicker/enums.proto"; 24 25// This file contains extension atoms for photopicker. 26option java_package = "com.android.os.photopicker"; 27option java_multiple_files = true; 28 29extend Atom { 30 optional PhotopickerSessionInfoReported photopicker_session_info_reported = 886 31 [(module) = "mediaprovider"]; 32 optional PhotopickerApiInfoReported photopicker_api_info_reported = 887 33 [(module) = "mediaprovider"]; 34 optional PhotopickerUIEventLogged photopicker_ui_event_logged = 888 35 [(module) = "mediaprovider"]; 36 optional PhotopickerMediaItemStatusReported photopicker_media_item_status_reported = 889 37 [(module) = "mediaprovider"]; 38 optional PhotopickerPreviewInfoLogged photopicker_preview_info_logged = 890 39 [(module) = "mediaprovider"]; 40 optional PhotopickerMenuInteractionLogged photopicker_menu_interaction_logged = 891 41 [(module) = "mediaprovider"]; 42 optional PhotopickerBannerInteractionLogged photopicker_banner_interaction_logged = 892 43 [(module) = "mediaprovider"]; 44 optional PhotopickerMediaLibraryInfoLogged photopicker_media_library_info_logged = 893 45 [(module) = "mediaprovider"]; 46 optional PhotopickerPageInfoLogged photopicker_page_info_logged = 894 47 [(module) = "mediaprovider"]; 48 optional PhotopickerMediaGridSyncInfoReported photopicker_media_grid_sync_info_reported = 895 49 [(module) = "mediaprovider"]; 50 optional PhotopickerAlbumSyncInfoReported photopicker_album_sync_info_reported = 896 51 [(module) = "mediaprovider"]; 52 optional PhotopickerSearchInfoReported photopicker_search_info_reported = 897 53 [(module) = "mediaprovider"]; 54 optional SearchDataExtractionDetailsReported search_data_extraction_details_reported = 898 55 [(module) = "mediaprovider"]; 56 optional EmbeddedPhotopickerInfoReported embedded_photopicker_info_reported = 899 57 [(module) = "mediaprovider"]; 58 optional PhotopickerAppMediaCapabilitiesReported photopicker_app_media_capabilities_reported = 1043 59 [(module) = "mediaprovider"]; 60 optional PhotopickerVideoTranscodingDetailsLogged photopicker_video_transcoding_details_logged = 1044 61 [(module) = "mediaprovider"]; 62} 63 64/* 65 Logs details about the launched picker session 66 */ 67message PhotopickerSessionInfoReported { 68 optional int32 session_id = 1; 69 optional int32 package_uid = 2 [(is_uid) = true]; 70 optional android.photopicker.PickerPermittedSelection picker_permitted_selection= 3; 71 optional int32 cloud_provider_uid = 4 [(is_uid) = true]; 72 optional android.photopicker.UserProfile user_profile = 5; 73 optional android.photopicker.PickerStatus picker_status = 6; 74 optional int32 picked_items_count = 7; 75 optional int32 picked_items_size = 8; 76 optional bool is_profile_switch_button_visible = 9; 77 optional android.photopicker.PickerMode picker_mode = 10; 78 optional android.photopicker.PickerCloseMethod picker_close_method = 11; 79} 80 81/* 82 Logs details about how the picker was launched including information on the set picker options 83 */ 84message PhotopickerApiInfoReported { 85 optional int32 session_id = 1; 86 optional android.photopicker.PickerIntentAction picker_intent_action = 2; 87 optional android.photopicker.PickerSize screen_size = 3; 88 optional android.photopicker.MediaType media_filter = 4; 89 optional int32 max_picked_item_count = 5; 90 optional android.photopicker.SelectedTab selected_tab = 6; 91 optional android.photopicker.SelectedAlbum selected_album = 7; 92 optional bool is_ordered_selection_set = 8; 93 optional bool is_accent_color_set = 9; 94 optional bool is_default_tab_set = 10; 95 optional bool is_search_enabled = 11 [deprecated = true]; 96 optional bool is_cloud_search_enabled = 12; 97 optional bool is_local_search_enabled = 13; 98 optional bool is_transcoding_requested = 14; 99} 100 101/* 102 A general atom capturing any and all user interactions with the picker with other atoms focusing 103 on more specific interactions detailing the same. 104 */ 105message PhotopickerUIEventLogged { 106 optional int32 session_id = 1; 107 optional int32 package_uid = 2 [(is_uid) = true]; 108 optional android.photopicker.UiEvent ui_event = 3; 109} 110 111/* 112 Details out the information of a picker media item 113 */ 114message PhotopickerMediaItemStatusReported { 115 optional int32 session_id = 1; 116 optional android.photopicker.MediaStatus media_status = 2; 117 optional android.photopicker.MediaLocation media_location = 3; 118 optional int32 item_position = 4; 119 optional android.photopicker.SelectedAlbum selected_album = 5; 120 optional android.photopicker.MediaType media_type = 6; 121 optional bool cloud_only = 7; 122 optional android.photopicker.PickerSize picker_size = 8; 123} 124 125/* 126 Captures details of the picker's preview mode 127 */ 128message PhotopickerPreviewInfoLogged { 129 optional int32 session_id = 1; 130 optional android.photopicker.PreviewModeEntry preview_mode_entry = 2; 131 optional int32 preview_item_count = 3; 132 optional android.photopicker.MediaType media_type = 4; 133 optional android.photopicker.VideoPlayBackInteractions video_interactions = 5; 134} 135 136/* 137Logs the user's interaction with the photopicker menu 138 */ 139message PhotopickerMenuInteractionLogged { 140 optional int32 session_id = 1; 141 optional int32 package_uid = 2 [(is_uid) = true]; 142 optional android.photopicker.MenuItemSelected menu_item_selected = 3; 143} 144 145/* 146 Logs the user's interaction with different picker banners 147 */ 148message PhotopickerBannerInteractionLogged { 149 optional int32 session_id = 1; 150 optional android.photopicker.BannerType banner_type = 2; 151 optional android.photopicker.UserBannerInteraction user_banner_interaction = 3; 152} 153 154/* 155 Logs details of the picker media library size 156 */ 157message PhotopickerMediaLibraryInfoLogged { 158 optional int32 session_id = 1; 159 optional int32 cloud_provider_uid = 2 [(is_uid) = true]; 160 optional int32 library_size = 3; 161 optional int32 media_count = 4; 162} 163 164/* 165 Captures the picker's paging details: can give an estimate of how far the user scrolled and 166 the items loaded in. 167 */ 168message PhotopickerPageInfoLogged { 169 optional int32 session_id = 1; 170 optional int32 page_number = 2; 171 optional int32 items_loaded_in_page = 3; 172} 173 174/* 175 Logs picker media sync information: both sync start/end and incremental syncs. 176 */ 177message PhotopickerMediaGridSyncInfoReported { 178 optional int32 session_id = 1; 179 optional int32 media_collection_info_start_time_millis = 2; 180 optional int32 media_collection_info_end_time_millis = 3; 181 optional int32 media_sync_start_time_millis = 4; 182 optional int32 media_sync_end_time_millis = 5; 183 optional int32 incremental_media_sync_start_time_millis = 6; 184 optional int32 incremental_media_sync_end_time_millis = 7; 185 optional int32 incremental_deleted_media_sync_start_time_millis = 8; 186 optional int32 incremental_deleted_media_sync_end_time_millis = 9; 187} 188 189/* 190 Logs sync information for picker albums: both the album details and its content 191 */ 192message PhotopickerAlbumSyncInfoReported { 193 optional int32 session_id_time_millis = 1; 194 optional int32 get_albums_start_time_millis = 2; 195 optional int32 get_albums_end_time_millis = 3; 196 optional int32 get_album_media_start_time_millis = 4; 197 optional int32 get_album_media_end_time_millis = 5; 198} 199 200/* 201 Logs information about the picker's search functionality 202 */ 203message PhotopickerSearchInfoReported { 204 optional int32 session_id = 1; 205 optional android.photopicker.SearchMethod search_method = 2; 206 // items picked in a particular search method 207 optional int32 picked_items = 3 [deprecated = true]; 208 optional int32 start_time_millis = 4 [deprecated = true]; 209 optional int32 end_time_millis = 5 [deprecated = true]; 210} 211 212/* 213 Logs details about the requests made for extracting search data 214 */ 215message SearchDataExtractionDetailsReported { 216 optional int32 session_id = 1; 217 optional int32 unprocessed_images_count = 2; 218 optional int32 processing_start_time_millis = 3; 219 optional int32 processing_end_time_millis = 4; 220 optional bool is_processing_successful = 5; 221 optional bool is_response_received = 6; 222} 223 224/* 225 Logs information about the embedded photopicker(implementation details) 226 */ 227message EmbeddedPhotopickerInfoReported { 228 optional int32 session_id = 1; 229 optional bool is_surface_package_creation_successful = 2; 230 optional int32 surface_package_delivery_start_time_millis = 3; 231 optional int32 surface_package_delivery_end_time_millis = 4; 232} 233 234/* 235 Logs Application Media Capabilities for Transcoding support 236 */ 237message PhotopickerAppMediaCapabilitiesReported { 238 optional int32 session_id = 1; 239 repeated android.photopicker.AppMediaCapabilityHdrType supported_hdr_types = 2; 240 repeated android.photopicker.AppMediaCapabilityHdrType unsupported_hdr_types = 3; 241} 242 243/* 244 Logs Transcoding video details 245*/ 246message PhotopickerVideoTranscodingDetailsLogged { 247 optional int32 session_id = 1; 248 optional int32 duration = 2; 249 optional int32 colorStandard = 3; 250 optional int32 colorTransfer = 4; 251 optional android.photopicker.VideoMimeType mimeType = 5; 252} 253