
// Copyright 2019 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 = "proto3";

package tools.android.avd.proto;

message CIPDPackage {
  // CIPD package name.
  string package_name = 1;
  // CIPD package version to use.
  // Ignored when creating AVD packages.
  string version = 2;
  // Path into which the package should be installed.
  // src-relative.
  string dest_path = 3;
}

message ScreenSettings {
  // Screen height in pixels.
  uint32 height = 1;

  // Screen width in pixels.
  uint32 width = 2;

  // Scren density in dpi.
  uint32 density = 3;
}

message SdcardSettings {
  // Size of the sdcard that should be created for this AVD.
  // Can be anything that `mksdcard` or `avdmanager -c` would accept:
  //   - a number of bytes
  //   - a number followed by K, M, or G, indicating that many
  //     KiB, MiB, or GiB, respectively.
  string size = 1;
}

message AvdSettings {
  // Settings pertaining to the AVD's screen.
  ScreenSettings screen = 1;

  // Settings pertaining to the AVD's sdcard.
  SdcardSettings sdcard = 2;

  // Advanced Features for AVD. The <key,value> pairs here will override the
  // default ones in the given system image.
  // See https://bit.ly/2P1qK2X for all the available keys.
  // The values should be on, off, default, or null
  map<string, string> advanced_features = 3;

  // The physical RAM size on the device, in megabytes.
  uint32 ram_size = 4;
}

message Avd {
  // The emulator to use in running the AVD.
  CIPDPackage emulator_package = 1;

  // The system image to use.
  CIPDPackage system_image_package = 2;
  // The name of the system image to use, as reported by sdkmanager.
  string system_image_name = 3;

  // The AVD to create or use.
  // (Only the package_name is used during AVD creation.)
  CIPDPackage avd_package = 4;
  // The name of the AVD to create or use.
  string avd_name = 5;

  // How to configure the AVD at creation.
  AvdSettings avd_settings = 6;
}
