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} 59 60/* 61 Logs details about the launched picker session 62 */ 63message PhotopickerSessionInfoReported { 64 optional int32 session_id = 1; 65 optional int32 package_uid = 2; 66 optional android.photopicker.PickerPermittedSelection picker_permitted_selection= 3; 67 optional int32 cloud_provider_uid = 4; 68 optional android.photopicker.UserProfile user_profile = 5; 69 optional android.photopicker.PickerStatus picker_status = 6; 70 optional int32 picked_items_count = 7; 71 optional int32 picked_items_size = 8; 72 optional bool is_profile_switch_button_visible = 9; 73 optional android.photopicker.PickerMode picker_mode = 10; 74 optional android.photopicker.PickerCloseMethod picker_close_method = 11; 75} 76 77/* 78 Logs details about how the picker was launched including information on the set picker options 79 */ 80message PhotopickerApiInfoReported { 81 optional int32 session_id = 1; 82 optional android.photopicker.PickerIntentAction picker_intent_action = 2; 83 optional android.photopicker.PickerSize screen_size = 3; 84 optional android.photopicker.MediaType media_filter = 4; 85 optional int32 max_picked_item_count = 5; 86 optional android.photopicker.SelectedTab selected_tab = 6; 87 optional android.photopicker.SelectedAlbum selected_album = 7; 88 optional bool is_ordered_selection_set = 8; 89 optional bool is_accent_color_set = 9; 90 optional bool is_default_tab_set = 10; 91 optional bool is_search_enabled = 11; 92} 93 94/* 95 A general atom capturing any and all user interactions with the picker with other atoms focusing 96 on more specific interactions detailing the same. 97 */ 98message PhotopickerUIEventLogged { 99 optional int32 session_id = 1; 100 optional int32 package_uid = 2; 101 optional android.photopicker.UiEvent ui_event = 3; 102} 103 104/* 105 Details out the information of a picker media item 106 */ 107message PhotopickerMediaItemStatusReported { 108 optional int32 session_id = 1; 109 optional android.photopicker.MediaStatus media_status = 2; 110 optional android.photopicker.MediaLocation media_location = 3; 111 optional int32 item_position = 4; 112 optional android.photopicker.SelectedAlbum selected_album = 5; 113 optional android.photopicker.MediaType media_type = 6; 114 optional bool cloud_only = 7; 115 optional android.photopicker.PickerSize picker_size = 8; 116} 117 118/* 119 Captures details of the picker's preview mode 120 */ 121message PhotopickerPreviewInfoLogged { 122 optional int32 session_id = 1; 123 optional android.photopicker.PreviewModeEntry preview_mode_entry = 2; 124 optional int32 preview_item_count = 3; 125 optional android.photopicker.MediaType media_type = 4; 126 optional android.photopicker.VideoPlayBackInteractions video_interactions = 5; 127} 128 129/* 130Logs the user's interaction with the photopicker menu 131 */ 132message PhotopickerMenuInteractionLogged { 133 optional int32 session_id = 1; 134 optional int32 package_uid = 2; 135 optional android.photopicker.MenuItemSelected menu_item_selected = 3; 136} 137 138/* 139 Logs the user's interaction with different picker banners 140 */ 141message PhotopickerBannerInteractionLogged { 142 optional int32 session_id = 1; 143 optional android.photopicker.BannerType banner_type = 2; 144 optional android.photopicker.UserBannerInteraction user_banner_interaction = 3; 145} 146 147/* 148 Logs details of the picker media library size 149 */ 150message PhotopickerMediaLibraryInfoLogged { 151 optional int32 session_id = 1; 152 optional int32 cloud_provider_uid = 2; 153 optional int32 library_size = 3; 154 optional int32 media_count = 4; 155} 156 157/* 158 Ccaptures the picker's paging details: can give an estimate of how far the user scrolled and 159 the items loaded in. 160 */ 161message PhotopickerPageInfoLogged { 162 optional int32 session_id = 1; 163 optional int32 page_number = 2; 164 optional int32 items_loaded_in_page = 3; 165} 166 167/* 168 Logs picker media sync information: both sync start/end and incremental syncs. 169 */ 170message PhotopickerMediaGridSyncInfoReported { 171 optional int32 session_id = 1; 172 optional int32 media_collection_info_start_time_millis = 2; 173 optional int32 media_collection_info_end_time_millis = 3; 174 optional int32 media_sync_start_time_millis = 4; 175 optional int32 media_sync_end_time_millis = 5; 176 optional int32 incremental_media_sync_start_time_millis = 6; 177 optional int32 incremental_media_sync_end_time_millis = 7; 178 optional int32 incremental_deleted_media_sync_start_time_millis = 8; 179 optional int32 incremental_deleted_media_sync_end_time_millis = 9; 180} 181 182/* 183 Logs sync information for picker albums: both the album details and its content 184 */ 185message PhotopickerAlbumSyncInfoReported { 186 optional int32 session_id_time_millis = 1; 187 optional int32 get_albums_start_time_millis = 2; 188 optional int32 get_albums_end_time_millis = 3; 189 optional int32 get_album_media_start_time_millis = 4; 190 optional int32 get_album_media_end_time_millis = 5; 191} 192 193/* 194 Logs information about the picker's search functionality 195 */ 196message PhotopickerSearchInfoReported { 197 optional int32 session_id = 1; 198 optional android.photopicker.SearchMethod search_method = 2; 199 // items picked in a particular search method 200 optional int32 picked_items = 3; 201 optional int32 start_time_millis = 4; 202 optional int32 end_time_millis = 5; 203} 204 205/* 206 Logs details about the requests made for extracting search data 207 */ 208message SearchDataExtractionDetailsReported { 209 optional int32 session_id = 1; 210 optional int32 unprocessed_images_count = 2; 211 optional int32 processing_start_time_millis = 3; 212 optional int32 processing_end_time_millis = 4; 213 optional bool is_processing_successful = 5; 214 optional bool is_response_received = 6; 215} 216 217/* 218 Logs information about the embedded photopicker(implementation details) 219 */ 220message EmbeddedPhotopickerInfoReported { 221 optional int32 session_id = 1; 222 optional bool is_surface_package_creation_successful = 2; 223 optional int32 surface_package_delivery_start_time = 3; 224 optional int32 surface_package_delivery_end_time = 4; 225} 226