1/* 2 * Copyright (C) 2017 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 19import "protos/perfetto/trace/android/app/statusbarmanager.proto"; 20import "protos/perfetto/trace/android/content/activityinfo.proto"; 21import "protos/perfetto/trace/android/content/configuration.proto"; 22import "protos/perfetto/trace/android/graphics/rect.proto"; 23import "protos/perfetto/trace/android/server/windowcontainerthumbnail.proto"; 24import "protos/perfetto/trace/android/server/surfaceanimator.proto"; 25import "protos/perfetto/trace/android/view/displaycutout.proto"; 26import "protos/perfetto/trace/android/view/displayinfo.proto"; 27import "protos/perfetto/trace/android/view/surface.proto"; 28import "protos/perfetto/trace/android/view/windowlayoutparams.proto"; 29import "protos/perfetto/trace/android/privacy.proto"; 30import "protos/perfetto/trace/android/typedef.proto"; 31 32import "protos/perfetto/trace/android/view/surfacecontrol.proto"; 33import "protos/perfetto/trace/android/view/insetssource.proto"; 34import "protos/perfetto/trace/android/view/insetssourcecontrol.proto"; 35 36import "protos/perfetto/trace/android/view/enums.proto"; 37 38package perfetto.protos; 39 40message WindowManagerServiceDumpProto { 41 optional WindowManagerPolicyProto policy = 1; 42 // window hierarchy root 43 optional RootWindowContainerProto root_window_container = 2; 44 optional IdentifierProto focused_window = 3; 45 optional string focused_app = 4; 46 optional IdentifierProto input_method_window = 5; 47 optional bool display_frozen = 6; 48 optional int32 rotation = 7 [ 49 (.perfetto.protos.typedef) = "android.view.Surface.Rotation", 50 deprecated = true 51 ]; 52 optional int32 last_orientation = 8 [ 53 (.perfetto.protos.typedef) = 54 "android.content.pm.ActivityInfo.ScreenOrientation", 55 deprecated = true 56 ]; 57 optional int32 focused_display_id = 9; 58 optional bool hard_keyboard_available = 10; 59 optional bool window_frames_valid = 11; 60 optional BackNavigationProto back_navigation = 12; 61} 62 63// represents RootWindowContainer object 64message RootWindowContainerProto { 65 optional WindowContainerProto window_container = 1; 66 repeated DisplayContentProto displays = 2 [deprecated = true]; 67 // IdentifierProto windows 68 reserved 3; 69 // window references in top down z order 70 repeated WindowStateProto windows = 4 [deprecated = true]; 71 optional KeyguardControllerProto keyguard_controller = 5; 72 // Whether or not the home activity is the recents activity. This is needed 73 // for the CTS tests to know what activity types to check for when invoking 74 // splitscreen multi-window. 75 optional bool is_home_recents_component = 6; 76 repeated IdentifierProto pending_activities = 7 [deprecated = true]; 77 optional int32 default_min_size_resizable_task = 8 [deprecated = true]; 78} 79 80message BarControllerProto { 81 optional StatusBarManagerProto.WindowState state = 1; 82 optional StatusBarManagerProto.TransientWindowState transient_state = 2; 83} 84 85message WindowOrientationListenerProto { 86 optional bool enabled = 1; 87 optional SurfaceProto.Rotation rotation = 2; 88} 89 90message KeyguardServiceDelegateProto { 91 optional bool showing = 1; 92 optional bool occluded = 2; 93 optional bool secure = 3; 94 enum ScreenState { 95 SCREEN_STATE_OFF = 0; 96 SCREEN_STATE_TURNING_ON = 1; 97 SCREEN_STATE_ON = 2; 98 SCREEN_STATE_TURNING_OFF = 3; 99 } 100 optional ScreenState screen_state = 4; 101 enum InteractiveState { 102 INTERACTIVE_STATE_SLEEP = 0; 103 INTERACTIVE_STATE_WAKING = 1; 104 INTERACTIVE_STATE_AWAKE = 2; 105 INTERACTIVE_STATE_GOING_TO_SLEEP = 3; 106 } 107 optional InteractiveState interactive_state = 5; 108} 109 110message KeyguardControllerProto { 111 optional bool keyguard_showing = 1; 112 repeated KeyguardOccludedProto keyguard_occluded_states = 2 113 [deprecated = true]; 114 optional bool aod_showing = 3; 115 repeated KeyguardPerDisplayProto keyguard_per_display = 4; 116 optional bool keyguard_going_away = 5; 117} 118 119message KeyguardOccludedProto { 120 optional int32 display_id = 1; 121 optional bool keyguard_occluded = 2; 122} 123 124message KeyguardPerDisplayProto { 125 optional int32 display_id = 1; 126 optional bool keyguard_showing = 2; 127 optional bool aod_showing = 3; 128 optional bool keyguard_occluded = 4; 129 optional bool keyguard_going_away = 5; 130} 131 132// represents PhoneWindowManager 133message WindowManagerPolicyProto { 134 optional int32 last_system_ui_flags = 1 [deprecated = true]; 135 enum UserRotationMode { 136 USER_ROTATION_FREE = 0; 137 USER_ROTATION_LOCKED = 1; 138 } 139 optional UserRotationMode rotation_mode = 2; 140 optional SurfaceProto.Rotation rotation = 3; 141 optional ActivityInfoProto.ScreenOrientation orientation = 4; 142 optional bool screen_on_fully = 5; 143 optional bool keyguard_draw_complete = 6; 144 optional bool window_manager_draw_complete = 7; 145 optional string focused_app_token = 8 [deprecated = true]; 146 optional IdentifierProto focused_window = 9 [deprecated = true]; 147 optional IdentifierProto top_fullscreen_opaque_window = 10 148 [deprecated = true]; 149 optional IdentifierProto top_fullscreen_opaque_or_dimming_window = 11 150 [deprecated = true]; 151 optional bool keyguard_occluded = 12; 152 optional bool keyguard_occluded_changed = 13; 153 optional bool keyguard_occluded_pending = 14; 154 optional bool force_status_bar = 15 [deprecated = true]; 155 optional bool force_status_bar_from_keyguard = 16 [deprecated = true]; 156 optional BarControllerProto status_bar = 17 [deprecated = true]; 157 optional BarControllerProto navigation_bar = 18 [deprecated = true]; 158 optional WindowOrientationListenerProto orientation_listener = 19 159 [deprecated = true]; 160 optional KeyguardServiceDelegateProto keyguard_delegate = 20; 161} 162 163// represents AppTransition 164message AppTransitionProto { 165 enum AppState { 166 APP_STATE_IDLE = 0; 167 APP_STATE_READY = 1; 168 APP_STATE_RUNNING = 2; 169 APP_STATE_TIMEOUT = 3; 170 } 171 optional AppState app_transition_state = 1; 172 173 optional TransitionTypeEnum last_used_app_transition = 2; 174} 175 176// represents DisplayContent object 177message DisplayContentProto { 178 // Use root_display_area instead 179 optional WindowContainerProto window_container = 1 [deprecated = true]; 180 optional int32 id = 2; 181 // RootTasks 182 reserved 3; 183 optional DockedTaskDividerControllerProto docked_task_divider_controller = 4 184 [deprecated = true]; 185 // Will be removed soon. 186 optional PinnedTaskControllerProto pinned_task_controller = 5 187 [deprecated = true]; 188 // non app windows 189 repeated WindowTokenProto above_app_windows = 6 [deprecated = true]; 190 repeated WindowTokenProto below_app_windows = 7 [deprecated = true]; 191 repeated WindowTokenProto ime_windows = 8 [deprecated = true]; 192 optional int32 dpi = 9; 193 optional DisplayInfoProto display_info = 10; 194 optional int32 rotation = 11 [ 195 (.perfetto.protos.typedef) = "android.view.Surface.Rotation", 196 deprecated = true 197 ]; 198 optional ScreenRotationAnimationProto screen_rotation_animation = 12; 199 optional DisplayFramesProto display_frames = 13; 200 optional int32 surface_size = 14 [deprecated = true]; 201 optional string focused_app = 15; 202 optional AppTransitionProto app_transition = 16; 203 repeated IdentifierProto opening_apps = 17; 204 repeated IdentifierProto closing_apps = 18; 205 repeated IdentifierProto changing_apps = 19; 206 repeated WindowTokenProto overlay_windows = 20 [deprecated = true]; 207 optional DisplayAreaProto root_display_area = 21; 208 209 optional bool single_task_instance = 22 [deprecated = true]; 210 optional int32 focused_root_task_id = 23; 211 optional IdentifierProto resumed_activity = 24; 212 repeated TaskProto tasks = 25 [deprecated = true]; 213 optional bool display_ready = 26; 214 optional WindowStateProto input_method_target = 27; 215 optional WindowStateProto input_method_input_target = 28; 216 optional WindowStateProto input_method_control_target = 29; 217 optional WindowStateProto current_focus = 30; 218 optional ImeInsetsSourceProviderProto ime_insets_source_provider = 31; 219 optional bool can_show_ime = 32 [deprecated = true]; 220 221 optional DisplayRotationProto display_rotation = 33; 222 optional int32 ime_policy = 34; 223 224 repeated InsetsSourceProviderProto insets_source_providers = 35; 225 optional bool is_sleeping = 36; 226 repeated string sleep_tokens = 37; 227 repeated RectProto keep_clear_areas = 38; 228 optional int32 min_size_of_resizeable_task_dp = 39; 229} 230 231// represents DisplayArea object 232message DisplayAreaProto { 233 optional WindowContainerProto window_container = 1; 234 optional string name = 2 [(.perfetto.protos.privacy).dest = DEST_EXPLICIT]; 235 repeated DisplayAreaChildProto children = 3 [deprecated = true]; 236 optional bool is_task_display_area = 4; 237 optional bool is_root_display_area = 5; 238 optional int32 feature_id = 6; 239 optional bool is_organized = 7; 240 optional bool is_ignoring_orientation_request = 8; 241} 242 243// represents a generic child of a DisplayArea 244message DisplayAreaChildProto { 245 // At most one of the following should be present: 246 247 // represents a DisplayArea child 248 optional DisplayAreaProto display_area = 1; 249 // represents a WindowToken child 250 optional WindowTokenProto window = 2; 251 // represents an unknown child - the class name is recorded 252 repeated string unknown = 3; 253} 254 255// represents DisplayFrames 256message DisplayFramesProto { 257 optional RectProto stable_bounds = 1 [deprecated = true]; 258 optional RectProto dock = 2 [deprecated = true]; 259 optional RectProto current = 3 [deprecated = true]; 260} 261 262message DisplayRotationProto { 263 optional int32 rotation = 1 264 [(.perfetto.protos.typedef) = "android.view.Surface.Rotation"]; 265 optional bool frozen_to_user_rotation = 2; 266 optional int32 user_rotation = 3 267 [(.perfetto.protos.typedef) = "android.view.Surface.Rotation"]; 268 optional int32 fixed_to_user_rotation_mode = 4; 269 optional int32 last_orientation = 5 270 [(.perfetto.protos.typedef) = 271 "android.content.pm.ActivityInfo.ScreenOrientation"]; 272 optional bool is_fixed_to_user_rotation = 6; 273} 274 275// represents DockedTaskDividerController 276message DockedTaskDividerControllerProto { 277 optional bool minimized_dock = 1 [deprecated = true]; 278} 279 280// represents PinnedTaskController 281message PinnedTaskControllerProto { 282 optional RectProto default_bounds = 1 [deprecated = true]; 283 optional RectProto movement_bounds = 2 [deprecated = true]; 284} 285 286// represents Task 287message TaskProto { 288 optional WindowContainerProto window_container = 1 [deprecated = true]; 289 optional int32 id = 2; 290 // activity 291 reserved 3; 292 optional bool fills_parent = 4; 293 optional RectProto bounds = 5; 294 optional RectProto displayed_bounds = 6 [deprecated = true]; 295 optional bool defer_removal = 7; 296 optional int32 surface_width = 8; 297 optional int32 surface_height = 9; 298 299 repeated TaskProto tasks = 10 [deprecated = true]; 300 repeated ActivityRecordProto activities = 11 [deprecated = true]; 301 302 optional IdentifierProto resumed_activity = 12; 303 optional string real_activity = 13; 304 optional string orig_activity = 14; 305 306 optional int32 display_id = 15 [deprecated = true]; 307 optional int32 root_task_id = 16; 308 optional int32 activity_type = 17 [ 309 (.perfetto.protos.typedef) = "android.app.WindowConfiguration.ActivityType", 310 deprecated = true 311 ]; 312 optional int32 resize_mode = 18 313 [(.perfetto.protos.typedef) = 314 "android.appwidget.AppWidgetProviderInfo.ResizeModeFlags"]; 315 optional int32 min_width = 19 [deprecated = true]; 316 optional int32 min_height = 20 [deprecated = true]; 317 318 optional RectProto adjusted_bounds = 21; 319 optional RectProto last_non_fullscreen_bounds = 22; 320 optional bool adjusted_for_ime = 23; 321 optional float adjust_ime_amount = 24; 322 optional float adjust_divider_amount = 25; 323 optional bool animating_bounds = 26 [deprecated = true]; 324 optional float minimize_amount = 27; 325 optional bool created_by_organizer = 28; 326 optional string affinity = 29; 327 optional bool has_child_pip_activity = 30; 328 optional TaskFragmentProto task_fragment = 31; 329} 330 331// represents TaskFragment 332message TaskFragmentProto { 333 optional WindowContainerProto window_container = 1; 334 optional int32 display_id = 2; 335 optional int32 activity_type = 3 336 [(.perfetto.protos.typedef) = 337 "android.app.WindowConfiguration.ActivityType"]; 338 optional int32 min_width = 4; 339 optional int32 min_height = 5; 340} 341 342// represents ActivityRecordProto 343message ActivityRecordProto { 344 optional string name = 1 [(.perfetto.protos.privacy).dest = DEST_EXPLICIT]; 345 optional WindowTokenProto window_token = 2; 346 optional bool last_surface_showing = 3; 347 optional bool is_waiting_for_transition_start = 4; 348 optional bool is_animating = 5; 349 optional WindowContainerThumbnailProto thumbnail = 6; 350 optional bool fills_parent = 7; 351 optional bool app_stopped = 8; 352 optional bool visible_requested = 9; 353 optional bool client_visible = 10; 354 optional bool defer_hiding_client = 11; 355 optional bool reported_drawn = 12; 356 optional bool reported_visible = 13; 357 optional int32 num_interesting_windows = 14; 358 optional int32 num_drawn_windows = 15; 359 optional bool all_drawn = 16; 360 optional bool last_all_drawn = 17; 361 // removed 362 reserved 18; 363 optional IdentifierProto starting_window = 19; 364 optional bool starting_displayed = 20; 365 optional bool starting_moved = 201; 366 optional bool visible_set_from_transferred_starting_window = 22; 367 repeated RectProto frozen_bounds = 23 [deprecated = true]; 368 optional bool visible = 24; 369 // configuration_container 370 reserved 25; 371 optional IdentifierProto identifier = 26 [deprecated = true]; 372 optional string state = 27 [(.perfetto.protos.privacy).dest = DEST_EXPLICIT]; 373 optional bool front_of_task = 28; 374 optional int32 proc_id = 29; 375 optional bool translucent = 30; 376 optional bool pip_auto_enter_enabled = 31; 377 optional bool in_size_compat_mode = 32; 378 optional float min_aspect_ratio = 33; 379 optional bool provides_max_bounds = 34; 380 optional bool enable_recents_screenshot = 35; 381 optional int32 last_drop_input_mode = 36; 382 optional int32 override_orientation = 37 383 [(.perfetto.protos.typedef) = 384 "android.content.pm.ActivityInfo.ScreenOrientation"]; 385 optional bool should_send_compat_fake_focus = 38; 386 optional bool should_force_rotate_for_camera_compat = 39; 387 optional bool should_refresh_activity_for_camera_compat = 40; 388 optional bool should_refresh_activity_via_pause_for_camera_compat = 41; 389 optional bool should_override_min_aspect_ratio = 42; 390 optional bool should_ignore_orientation_request_loop = 43; 391 optional bool should_override_force_resize_app = 44; 392 optional bool should_enable_user_aspect_ratio_settings = 45; 393 optional bool is_user_fullscreen_override_enabled = 46; 394} 395 396// represents WindowToken 397message WindowTokenProto { 398 optional WindowContainerProto window_container = 1; 399 optional int32 hash_code = 2; 400 repeated WindowStateProto windows = 3 [deprecated = true]; 401 optional bool waiting_to_show = 5 [deprecated = true]; 402 optional bool paused = 6; 403} 404 405// represents WindowState 406message WindowStateProto { 407 optional WindowContainerProto window_container = 1; 408 optional IdentifierProto identifier = 2 [deprecated = true]; 409 // Unique identifier of a DisplayContent stack. 410 optional int32 display_id = 3; 411 // Unique identifier for the task stack. 412 optional int32 stack_id = 4; 413 optional WindowLayoutParamsProto attributes = 5; 414 optional RectProto given_content_insets = 6; 415 optional RectProto frame = 7 [deprecated = true]; 416 optional RectProto containing_frame = 8 [deprecated = true]; 417 optional RectProto parent_frame = 9 [deprecated = true]; 418 optional RectProto content_frame = 10 [deprecated = true]; 419 optional RectProto content_insets = 11 [deprecated = true]; 420 optional RectProto surface_insets = 12; 421 optional WindowStateAnimatorProto animator = 13; 422 optional bool animating_exit = 14; 423 repeated WindowStateProto child_windows = 15 [deprecated = true]; 424 optional RectProto surface_position = 16; 425 optional int32 requested_width = 18; 426 optional int32 requested_height = 19; 427 optional int32 view_visibility = 20 428 [(.perfetto.protos.typedef) = "android.view.View.Visibility"]; 429 optional int32 system_ui_visibility = 21 [deprecated = true]; 430 optional bool has_surface = 22; 431 optional bool is_ready_for_display = 23; 432 optional RectProto display_frame = 24 [deprecated = true]; 433 optional RectProto overscan_frame = 25 [deprecated = true]; 434 optional RectProto visible_frame = 26 [deprecated = true]; 435 optional RectProto decor_frame = 27 [deprecated = true]; 436 optional RectProto outset_frame = 28 [deprecated = true]; 437 optional RectProto overscan_insets = 29 [deprecated = true]; 438 optional RectProto visible_insets = 30 [deprecated = true]; 439 optional RectProto stable_insets = 31 [deprecated = true]; 440 optional RectProto outsets = 32 [deprecated = true]; 441 optional DisplayCutoutProto cutout = 33 [deprecated = true]; 442 optional bool remove_on_exit = 34; 443 optional bool destroying = 35; 444 optional bool removed = 36; 445 optional bool is_on_screen = 37; 446 optional bool is_visible = 38; 447 optional bool pending_seamless_rotation = 39; 448 optional int64 finished_seamless_rotation_frame = 40 [deprecated = true]; 449 optional WindowFramesProto window_frames = 41; 450 optional bool force_seamless_rotation = 42; 451 optional bool has_compat_scale = 43; 452 optional float global_scale = 44; 453 repeated RectProto keep_clear_areas = 45; 454 repeated RectProto unrestricted_keep_clear_areas = 46; 455 repeated InsetsSourceProto mergedLocalInsetsSources = 47; 456 optional int32 requested_visible_types = 48; 457 optional RectProto dim_bounds = 49; 458} 459 460message IdentifierProto { 461 optional int32 hash_code = 1; 462 optional int32 user_id = 2; 463 // Either a component name/string (eg: "com.android.settings/.FallbackHome") 464 // or a window title ("NavigationBar"). 465 optional string title = 3 [(.perfetto.protos.privacy).dest = DEST_EXPLICIT]; 466} 467 468// represents WindowStateAnimator 469message WindowStateAnimatorProto { 470 optional RectProto last_clip_rect = 1; 471 optional WindowSurfaceControllerProto surface = 2; 472 enum DrawState { 473 NO_SURFACE = 0; 474 DRAW_PENDING = 1; 475 COMMIT_DRAW_PENDING = 2; 476 READY_TO_SHOW = 3; 477 HAS_DRAWN = 4; 478 } 479 optional DrawState draw_state = 3; 480 optional RectProto system_decor_rect = 4; 481} 482 483// represents WindowSurfaceController 484message WindowSurfaceControllerProto { 485 optional bool shown = 1; 486 optional int32 layer = 2; 487} 488 489// represents ScreenRotationAnimation 490message ScreenRotationAnimationProto { 491 optional bool started = 1; 492 optional bool animation_running = 2; 493} 494 495// represents WindowContainer 496message WindowContainerProto { 497 optional ConfigurationContainerProto configuration_container = 1; 498 optional int32 orientation = 2 499 [(.perfetto.protos.typedef) = 500 "android.content.pm.ActivityInfo.ScreenOrientation"]; 501 optional bool visible = 3; 502 optional SurfaceAnimatorProto surface_animator = 4; 503 repeated WindowContainerChildProto children = 5; 504 optional IdentifierProto identifier = 6; 505 optional SurfaceControlProto surface_control = 7; 506} 507 508// represents a generic child of a WindowContainer 509message WindowContainerChildProto { 510 // A window container can have multiple children of different types stored as 511 // a WindowContainerChildProto but each instance of WindowContainerChildProto 512 // can only contain a single type. 513 // 514 // We do not know the derived type and the class is dumped 515 // as a WindowContainer 516 optional WindowContainerProto window_container = 2; 517 // represents a DisplayContent child 518 optional DisplayContentProto display_content = 3; 519 // represents a DisplayArea child 520 optional DisplayAreaProto display_area = 4; 521 // represents a Task child 522 optional TaskProto task = 5; 523 // represents an ActivityRecord child 524 optional ActivityRecordProto activity = 6; 525 // represents a WindowToken child 526 optional WindowTokenProto window_token = 7; 527 // represents a WindowState child 528 optional WindowStateProto window = 8; 529 // represents a WindowState child 530 optional TaskFragmentProto task_fragment = 9; 531} 532 533// represents ConfigurationContainer 534message ConfigurationContainerProto { 535 optional ConfigurationProto override_configuration = 1; 536 optional ConfigurationProto full_configuration = 2; 537 optional ConfigurationProto merged_override_configuration = 3; 538} 539 540// represents WindowFrames 541message WindowFramesProto { 542 optional RectProto containing_frame = 1 [deprecated = true]; 543 optional RectProto content_frame = 2 [deprecated = true]; 544 optional RectProto decor_frame = 3 [deprecated = true]; 545 optional RectProto display_frame = 4; 546 optional RectProto frame = 5; 547 optional RectProto outset_frame = 6; 548 optional RectProto overscan_frame = 7 [deprecated = true]; 549 optional RectProto parent_frame = 8; 550 optional RectProto visible_frame = 9 [deprecated = true]; 551 optional DisplayCutoutProto cutout = 10 [deprecated = true]; 552 optional RectProto content_insets = 11 [deprecated = true]; 553 optional RectProto overscan_insets = 12 [deprecated = true]; 554 optional RectProto visible_insets = 13 [deprecated = true]; 555 optional RectProto stable_insets = 14 [deprecated = true]; 556 optional RectProto outsets = 15; 557 optional RectProto compat_frame = 16; 558} 559 560message InsetsSourceProviderProto { 561 optional InsetsSourceProto source = 1; 562 optional RectProto frame = 2; 563 optional InsetsSourceControlProto fake_control = 3; 564 optional InsetsSourceControlProto control = 4; 565 optional WindowStateProto control_target = 5; 566 optional WindowStateProto pending_control_target = 6; 567 optional WindowStateProto fake_control_target = 7; 568 optional SurfaceControlProto captured_leash = 8; 569 optional RectProto ime_overridden_frame = 9 [deprecated = true]; 570 optional bool is_leash_ready_for_dispatching = 10; 571 optional bool client_visible = 11; 572 optional bool server_visible = 12; 573 optional bool seamless_rotating = 13; 574 optional int64 finish_seamless_rotate_frame_number = 14; 575 optional bool controllable = 15; 576 optional WindowStateProto source_window_state = 16; 577} 578 579message ImeInsetsSourceProviderProto { 580 optional InsetsSourceProviderProto insets_source_provider = 1; 581 optional WindowStateProto ime_target_from_ime = 2; 582 optional bool is_ime_layout_drawn = 3 [deprecated = true]; 583} 584 585message BackNavigationProto { 586 optional bool animation_in_progress = 1; 587 optional int32 last_back_type = 2; 588 optional bool show_wallpaper = 3; 589 optional string main_open_activity = 4; 590 optional bool animation_running = 5; 591}