| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Sync protocol datatype extension for desks on Chrome OS. |
| |
| // If you change or add any fields in this file, update proto_visitors.h and |
| // potentially proto_enum_conversions.{h, cc}. |
| |
| syntax = "proto2"; |
| |
| option java_multiple_files = true; |
| option java_package = "org.chromium.components.sync.protocol"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| package sync_pb; |
| |
| // A workspace desk entry. This proto contains the fields synced to represent |
| // a saved desk in user's workspace. |
| message WorkspaceDeskSpecifics { |
| reserved "created_time_usec"; |
| |
| // A random unique identifier for each desk. |
| // Required. |
| optional string uuid = 1; |
| // The name of the desk being saved. |
| optional string name = 2; |
| // The time this snapshot of desk was created. |
| optional int64 created_time_windows_epoch_micros = 3; |
| |
| // The time this snapshot of desk was updated. |
| optional int64 updated_time_windows_epoch_micros = 5; |
| |
| optional Desk desk = 4; |
| |
| // The type of a desk. |
| optional DeskType desk_type = 6; |
| |
| // Represent a snapshot of the information on a desk. |
| message Desk { |
| // The apps in this template. |
| repeated App apps = 1; |
| } |
| |
| // A Launchable app in template. |
| message App { |
| // The on-display location of this window. |
| optional WindowBound window_bound = 1; |
| optional WindowState window_state = 2; |
| // The z-index of this app relative to other apps in this template. |
| // App with larger z-index appears in front of app with smaller z-index. |
| optional int32 z_index = 3; |
| |
| optional AppOneOf app = 4; |
| |
| // window_id used to instantiate proto as a restore_data object. The |
| // restore_data object in question can be found at: |
| // //components/app_restore/restore_data.h |
| optional int32 window_id = 5; |
| |
| // Display ID this app is on. |
| optional int64 display_id = 6; |
| |
| // State of a window before it was minimized. Empty/unset for non-minimized |
| // windows. |
| optional WindowState pre_minimized_window_state = 7; |
| |
| // Container this app was launched from. Empty/unset for Arc apps. |
| optional LaunchContainer container = 8; |
| |
| // Window open disposition, defines how a window opens. Empty/unset for Arc |
| // apps. |
| optional WindowOpenDisposition disposition = 9; |
| |
| // Name of the app which is used by the browser to determine whether to |
| // launch an app as an app or a tab. Does not contain a human readable name |
| // but contains the app ID and a prefix. |
| optional string app_name = 10; |
| |
| // Human readable title of the app. |
| optional string title = 11; |
| |
| // This is used to determine the size of a snapped window is in clamshell |
| // mode. Empty/unset for non-snapped windows. This should be a value between |
| // 0 and 100. |
| optional int32 snap_percentage = 12; |
| } |
| |
| message AppOneOf { |
| oneof app { |
| BrowserAppWindow browser_app_window = 1; |
| ChromeApp chrome_app = 2; |
| ProgressiveWebApp progress_web_app = 3; |
| ArcApp arc_app = 4; |
| } |
| } |
| |
| // A Chrome or Lacros Browser app window. |
| message BrowserAppWindow { |
| message BrowserAppTab { |
| // The last committed URL of the main frame of the tab. |
| optional string url = 1; |
| // The title of the tab. |
| optional string title = 2; |
| } |
| |
| // Structure representing a tab group associated with this window. |
| message TabGroup { |
| // Zero-based index within the browser app tabs of the first tab in the |
| // group. |
| optional int32 first_index = 1; |
| |
| // Zero-based Index wotjom the browser app tabs of the last tab in the |
| // group. |
| optional int32 last_index = 2; |
| |
| // User readable title of the tab group. |
| optional string title = 3; |
| |
| // Color associated with this tab group. |
| optional TabGroupColor color = 4; |
| |
| // Indicates whether the tab group is collapsed. |
| optional bool is_collapsed = 5; |
| } |
| |
| // The tabs in this browser window. |
| repeated BrowserAppTab tabs = 1; |
| |
| // The index of the currently active tab. |
| optional int32 active_tab_index = 2; |
| |
| // Indicates whether to show as a dedicated app window. |
| optional bool show_as_app = 3; |
| |
| // Tab groups associated with this window. |
| repeated TabGroup tab_groups = 4; |
| |
| // The index of the first non-pinned tab. |
| optional int32 first_non_pinned_tab_index = 5; |
| } |
| |
| // A Chrome App window. |
| message ChromeApp { |
| // The Chrome App's App ID. |
| optional string app_id = 1; |
| |
| reserved 2; |
| } |
| |
| // A PWA window. |
| message ProgressiveWebApp { |
| // The PWA's App ID. |
| optional string app_id = 1; |
| |
| reserved 2; |
| } |
| |
| // An Arc App window. |
| message ArcApp { |
| // The Arc App's ID. |
| optional string app_id = 1; |
| |
| // Arc window information. This maps |
| // to ArcExtraInfo in a WindowInfo struct. |
| optional WindowSize minimum_size = 2; |
| optional WindowSize maximum_size = 3; |
| |
| reserved 4; |
| |
| optional WindowBound bounds_in_root = 5; |
| |
| // maps to gfx::Size. Width of the window, including the frame, |
| // in pixels. |
| message WindowSize { |
| optional int32 width = 1; |
| optional int32 height = 2; |
| } |
| } |
| |
| message WindowBound { |
| // The offset of the window from the top edge of the screen in pixels. |
| optional int32 top = 1; |
| // The offset of the window from the left edge of the screen in pixels. |
| optional int32 left = 2; |
| // The width of the window, including the frame, in pixels. |
| optional int32 width = 3; |
| // The height of the window, including the frame, in pixels. |
| optional int32 height = 4; |
| } |
| |
| // Enumeration for the container an app was launched from as used by |
| // (components/services/app_services/public/mojom/types.mojom:490). |
| enum LaunchContainer { |
| LAUNCH_CONTAINER_UNSPECIFIED = 0; |
| LAUNCH_CONTAINER_WINDOW = 1; |
| LAUNCH_CONTAINER_PANEL_DEPRECATED = 2; |
| LAUNCH_CONTAINER_TAB = 3; |
| LAUNCH_CONTAINER_NONE = 4; |
| } |
| |
| // The state of a generic window. |
| enum WindowState { |
| UNKNOWN_WINDOW_STATE = 0; |
| // Normal window state (not minimized, maximized, or fullscreen). |
| NORMAL = 1; |
| // Minimized window state. |
| MINIMIZED = 2; |
| // Maximized window state. |
| MAXIMIZED = 3; |
| // Fullscreen window state. |
| FULLSCREEN = 4; |
| // Snapped to primary half of the screen. Primary half is on the left in |
| // landscape screen orientation and top in portrait screen orientation. |
| PRIMARY_SNAPPED = 5; |
| // Snapped to secondary half of the screen. Secondary half is on the right |
| // in landscape screen orientation and bottom in portrait screen |
| // orientation. |
| SECONDARY_SNAPPED = 6; |
| // Floated window state. |
| FLOATED = 7; |
| } |
| |
| // Enumeration for how a window opens. Maps to base::WindowOpenDisposition. |
| // (found in ui/base/window_open_disposition.h:10). Does not include |
| // MAX_VALUE as MAX_VALUE is equivalent to NEW_PICTURE_IN_PICTURE. All |
| // comments are copied verbatim from aforementioned header. |
| enum WindowOpenDisposition { |
| UNKNOWN = 0; |
| CURRENT_TAB = 1; |
| // Indicates that only one tab with the URL shoul exist in the same window. |
| SINGLETON_TAB = 2; |
| NEW_FOREGROUND_TAB = 3; |
| NEW_BACKGROUND_TAB = 4; |
| NEW_POPUP = 5; |
| NEW_WINDOW = 6; |
| SAVE_TO_DISK = 7; |
| OFF_THE_RECORD = 8; |
| IGNORE_ACTION = 9; |
| // Activates an existing tab containing the URL, rather than navigating. |
| // This is similar to SINGLETON_TAB, but searches across all windows |
| // from the current profile and anymity (instead of tjust the current one); |
| // closes the current tab on switching if the current ta was the NTP with |
| // no session history; and behaves like CURRENT_TAB instead of |
| // NEW_FOREGROUND_TAB when no existing tab is found. |
| SWITCH_TO_TAB = 10; |
| // creates a new document picture-in-picture window showing a child WebView. |
| NEW_PICTURE_IN_PICTURE = 11; |
| } |
| |
| // Enumerates the type of desk, namely to differentiate desks between desks |
| // saved for desk templates and desks saved for save and recall. |
| enum DeskType { |
| UNKNOWN_TYPE = 0; |
| TEMPLATE = 1; |
| SAVE_AND_RECALL = 2; |
| FLOATING_WORKSPACE = 3; |
| } |
| |
| // Enumerates the possible colors that a tab group can have. This mirrors |
| // the enumeration that can be found in |
| // components/tab_groups/tab_group_color.h |
| enum TabGroupColor { |
| UNKNOWN_COLOR = 0; |
| GREY = 1; |
| BLUE = 2; |
| RED = 3; |
| YELLOW = 4; |
| GREEN = 5; |
| PINK = 6; |
| PURPLE = 7; |
| CYAN = 8; |
| ORANGE = 9; |
| } |
| } |