// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// If you change or add any fields in this file, update
// components/sync/protocol/proto_visitors.h and potentially
// components/sync/protocol/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;
// Sync & local data: Information about web app icon.
message WebAppIconInfo {
enum Purpose {
UNSPECIFIED = 0;
// Suitable for any purpose.
ANY = 1;
// Designed for masking.
MASKABLE = 2;
// Suitable for monochrome purposes.
MONOCHROME = 3;
}
// The size of the square app icon, in raw pixels.
optional int32 size_in_px = 1;
// The URL of the app icon.
optional string url = 2;
// The purpose or context in which the icon should be used.
optional Purpose purpose = 3;
}
// WebApp data. This is a synced part of
// chrome/browser/web_applications/proto/web_app.proto data.
// Note: Pre-M125 clients will incorrectly drop any unrecognized new fields
// added to the proto. Handling should be added to ApplySyncDataToApp in
// web_app_sync_bridge.cc if new fields need to be preserved.
message WebAppSpecifics {
// This enum should be a subset of the DisplayMode enum in
// chrome/browser/web_applications/proto/web_app.proto and
// third_party/blink/public/mojom/manifest/display_mode.mojom
enum UserDisplayMode {
UNSPECIFIED = 0;
BROWSER = 1;
// MINIMAL_UI is never serialized.
STANDALONE = 3;
// FULLSCREEN is never serialized.
// WINDOW_CONTROLS_OVERLAY is never serialized.
TABBED = 6;
// BORDERLESS is never serialized.
// PICTURE_IN_PICTURE is never serialized.
}
optional string start_url = 1;
optional string name = 2;
// User-selected display setting, which may be used if no platform-specific
// setting is available (eg. on Windows, Mac, and Linux). If absent,
// user_display_mode_cros may be used as fallback (if populated). On pre-M122
// devices this field is used by all platforms (ie. ChromeOS, Windows, Mac,
// Linux) and always replaces any locally-stored value, with
// absent/unspecified falling back to standalone.
optional UserDisplayMode user_display_mode_default = 3;
reserved "user_display_mode_non_cros";
reserved "user_display_mode";
optional uint32 theme_color = 4;
optional string scope = 5;
repeated WebAppIconInfo icon_infos = 6;
// Used to store the page number that the app is displayed on in
// chrome://apps.
optional string user_page_ordinal = 7;
// Used to store the in-page ranking for ordering apps in its given
// |user_page_ordinal| page.
optional string user_launch_ordinal = 8;
// Used to store id specified in the manifest. This is a path that is relative
// to the start_url, similar to how the id field is parsed in
// https://www.w3.org/TR/appmanifest/#id-member, except this field does not
// include a scheme or origin. This is only the path after the origin,
// excluding the first "/".
// Note: If this field is not set, then the manifest_id is generated using the
// start_url in GenerateManifestIdFromStartUrlOnly. This is different than if
// this is set to "", which means the manifest_id will be set to the origin of
// the start_url.
optional string relative_manifest_id = 9;
// User-selected display setting for ChromeOS.
// If absent, user_display_mode_default may be used as fallback (if
// populated).
// Introduced in M122.
optional UserDisplayMode user_display_mode_cros = 10;
}