// 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.

module nacl.mojom;

[Native]
enum NaClErrorCode;

interface NaClRendererHost {
  // This message must be synchronous to ensure that the exit status is sent
  // from NaCl to the renderer before the NaCl process exits very soon after.
  [Sync]
  ReportExitStatus(int32 exit_status) => ();

  // This message must be synchronous to ensure that the load status is sent
  // from NaCl to the renderer before the NaCl process exits very soon after.
  [Sync]
  ReportLoadStatus(NaClErrorCode load_status) => ();

  ProvideExitControl(pending_remote<NaClExitControl> exit_control);
};

// When this interface is closed, it indicates that the NaCl loader process
// should exit.
interface NaClExitControl {};
