// Copyright 2020 The Chromium OS 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 tast.cros.arc;

option go_package = "chromiumos/tast/services/cros/arc";

// GmsCoreService provides GMS Core and GFS caches generation
service GmsCoreCacheService {
  // Generate generates GMS Core and GFS caches.
  rpc Generate (GmsCoreCacheRequest) returns (GmsCoreCacheResponse) {}
}

message GmsCoreCacheRequest {
  // If set, PackagesCopy is requested. Otherwise, requests PackageSkipCopy.
  bool packages_cache_enabled = 1;
  // If set, GMSCoreEnabled is requested. Otherwise, requests GMSCoreDisabled.
  bool gms_core_enabled = 2;
}

message GmsCoreCacheResponse {
  // Path to directory with caches.
  string target_dir = 1;
  // Name of packages cache.
  string packages_cache_name = 2;
  //Name of GMS Core caches packed to tar file.
  string gms_core_cache_name = 3;
  //Name of GMS Core manifest file.
  string gms_core_manifest_name = 4;
  // Name of GSF cache.
  string gsf_cache_name = 5;
  // Name of generated packages cache.
  string generated_packages_cache_name = 6;
}
