chromium/components/sync/protocol/web_app_specifics.proto

// 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;
}