// Copyright 2021 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.
//
// **** DO NOT EDIT - this file was automatically generated. ****
syntax = "proto3";

package cast.common;

option optimize_for = LITE_RUNTIME;

// Generic Cast application config.
message ApplicationConfig {
  // Cast application ID.
  string app_id = 1;

  // Cast application name.
  string display_name = 2;

  // Actual application config based on the type of runtime hosting it.
  oneof config {
    CastLiteApplicationConfig cast_lite_app_config = 3;
    CastWebApplicationConfig cast_web_app_config = 4;
    NativeApplicationConfig native_app_config = 5;
  }
}

// Config for applications running in CastLite runtime.
message CastLiteApplicationConfig {
  // Cast application URL (https). Will be augumented with URL rewrite rules to
  // add appropriate headers/parameters.
  string url = 1;
  // Below definitions are used only with legacy MSP API implementation of
  // CastLite.
  string api_url = 2;
  string api_key = 3;
  bool uses_server_session = 4;
  bool uses_grpc = 5;
  bool is_default_audio_receiver = 6;
  string session_id = 7;
}

// Config for applications running in Cast Web runtime.
message CastWebApplicationConfig {
  // Cast application URL (https). Will be augumented with URL rewrite rules to
  // add appropriate headers/parameters.
  string url = 1;

  // Collection of requested settings for the application.
  ApplicationSettings settings = 2;

  message ApplicationSettings {
    // Display settings requested by the application.
    DisplaySettings display_settings = 1;
  }

  // Contains display settings for an application.
  message DisplaySettings {
    enum DisplayHeight {
      HEIGHT_NATIVE = 0;  // The native resolution of the display.
      HEIGHT_720P = 1;    // Enforce 720p resolution of the display.
    }

    // Indicates the resolution height that the application supports/prefers.
    // The application may attempt to force 720p or render at the native
    // resolution of the display.   If the value is omitted, the
    // default is HEIGHT_NATIVE.
    DisplayHeight display_height = 1;
  }
}

// Config for applications running in native runtime.
message NativeApplicationConfig {
  // Cast application URL (https).
  // NOTE: this field is added ONLY FOR TESTING purposes. Proper integration
  // with native runtimes is still TBD.
  string url = 1;
}
