chromium/remoting/proto/url_forwarder_control.proto

// Copyright 2021 The Chromium Authors
// 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 remoting.protocol;

// Composite message type for messages sent over the url-forwarder-control data
// channel.
// Next ID: 5
message UrlForwarderControl {
  // Message sent by the client requesting the host for the current
  // configuration state. The host will respond with a QueryConfigStateResponse.
  // Next ID: 1
  message QueryConfigStateRequest {}

  // Message sent by the host reporting the current configuration state.
  // Next ID: 2
  message QueryConfigStateResponse {
    // Indicates whether the URL forwarder has been properly set up.
    optional bool is_url_forwarder_set_up = 1;
  }

  // Message sent by the client requesting the host to set up the URL forwarder.
  // The host will respond with one or more SetUpUrlForwarderResponse(s).
  // Next ID: 1
  message SetUpUrlForwarderRequest {}

  // Message sent by the host reporting the current state of the URL forwarder
  // setup process.
  // Next ID: 2
  message SetUpUrlForwarderResponse {
    // Next ID: 4
    enum State {
      UNSPECIFIED_STATE = 0;

      // The setup process has been completed successfully.
      COMPLETE = 1;

      // The setup process has failed.
      FAILED = 2;

      // The setup process requires user intervention. The host will send
      // another SetUpUrlForwarderResponse once the setup process becomes
      // completed or failed.
      USER_INTERVENTION_REQUIRED = 3;
    }

    optional State state = 1;
  }

  oneof message {
    QueryConfigStateRequest query_config_state_request = 1;
    QueryConfigStateResponse query_config_state_response = 2;
    SetUpUrlForwarderRequest set_up_url_forwarder_request = 3;
    SetUpUrlForwarderResponse set_up_url_forwarder_response = 4;
  }
}