// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package webapk;

// Response after creating or updating a WebAPK.
message WebApkResponse {
  // Package name to install WebAPK at.
  optional string package_name = 1;

  // Version code of the WebAPK.
  optional string version = 2;

  // Unique id identifying session with WebAPK server.
  optional string token = 6;

  // This flag may be used, for example, if the WebAPK server is unable to
  // fulfill an update request and likely won't be able to fulfill subsequent
  // update requests from this WebAPK. One case where the server is unable to
  // fulfill update requests is if the Web Manifest is dynamically generated
  // based on the user's country etc. Therefore, we want the client to back off
  // from spamming update requests too often.
  optional bool relax_updates = 8;

  reserved 3, 4, 5, 7;
}

// Sent as part of request to create or update a WebAPK.
message WebApk {
  enum UpdateReason {
    NONE = 1;
    OLD_SHELL_APK = 2;
    PRIMARY_ICON_HASH_DIFFERS = 3;
    BADGE_ICON_HASH_DIFFERS = 4;
    SCOPE_DIFFERS = 5;
    START_URL_DIFFERS = 6;
    SHORT_NAME_DIFFERS = 7;
    NAME_DIFFERS = 8;
    BACKGROUND_COLOR_DIFFERS = 9;
    THEME_COLOR_DIFFERS = 10;
    ORIENTATION_DIFFERS = 11;
    DISPLAY_MODE_DIFFERS = 12;
    WEB_SHARE_TARGET_DIFFERS = 13;
  }

  // Package name of the WebAPK.
  optional string package_name = 1;

  // Version code of the WebAPK.
  optional string version = 2;

  // The URL of the Web App Manifest.
  optional string manifest_url = 3;

  // Chrome's package name.
  optional string requester_application_package = 5;

  // Chrome's version.
  optional string requester_application_version = 6;

  // The Web App Manifest.
  optional WebAppManifest manifest = 7;

  // The cpu abi of the browser making the request.
  optional string android_abi = 8;

  // If set true, this flag indicates that the Web App Manifest of the site is
  // no longer available.
  optional bool stale_manifest = 9;

  // The reason that a WebAPK update is requested.
  optional UpdateReason update_reason = 10;

  reserved 4;
}

// Contains data from the Web App Manifest.
message WebAppManifest {
  optional string name = 1;
  optional string short_name = 2;
  optional string start_url = 4;
  repeated string scopes = 5;
  repeated Image icons = 6;
  optional string orientation = 9;
  optional string display_mode = 10;
  optional string theme_color = 11;
  optional string background_color = 12;
  repeated ShareTarget share_targets = 17;

  reserved 3, 7, 8, 13 to 16;
}

message Image {
  enum Usage {
    PRIMARY_ICON = 1;
    BADGE_ICON = 2;
  }

  // Image's URL.
  optional string src = 1;

  // Murmur2 hash of the icon's bytes. There should not be any transformations
  // applied to the icon's bytes prior to taking the Murmur2 hash.
  optional string hash = 5;

  // Actual bytes of the image. This image may be re-encoded from the original
  // image and may not match the murmur2 hash field above.
  optional bytes image_data = 6;

  // Specifies Chrome's intended usages for the image.
  repeated Usage usages = 8;

  reserved 2, 3, 4, 7;
}

// A proto representing a ShareTargetParamsFile
// https://pr-preview.s3.amazonaws.com/ewilligers/web-share-target/pull/53.html#sharetargetfiles-and-its-members
message ShareTargetParamsFile {
  optional string name = 1;
  repeated string accept = 2;
}

// A proto representing ShareTargetParams
// https://wicg.github.io/web-share-target/#dom-sharetargetparams
// Each field corresponds to key in ShareData. These are the query parameter
// keys to be used for the data supplied in a ShareData instance.
// ShareData: https://wicg.github.io/web-share#dom-sharedata
message ShareTargetParams {
  optional string title = 1;
  optional string text = 2;
  optional string url = 3;
  repeated ShareTargetParamsFile files = 4;
}

// A proto representing a ShareTarget.
// https://wicg.github.io/web-share-target/#dom-sharetarget
message ShareTarget {
  // The URL to be resolved when sharing.
  optional string action = 2;
  optional ShareTargetParams params = 3;
  optional string method = 4;
  optional string enctype = 5;
  reserved 1;
}
