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

// IDL for mojo core module. This is not a specced IDL.

typedef unsigned long MojoResult;

enum MojoScope {
  // Refers to the InterfaceProvider associated with the current execution
  // context. Either a Document or WorkerGlobalScope.
  "context",
  // Refers to the InterfaceProvider of the current process.
  //
  // Note: A "process" is not a web concept. In some cases the browser process
  // concept of a "site instance" may be useful however there is currently no
  // InterfaceProvider per site instance.
  "process",
};

[
    ContextEnabled=MojoJS,
    Exposed=(Window,Worker),
    RuntimeEnabled=MojoJS
] interface Mojo {
    const MojoResult RESULT_OK = 0;
    const MojoResult RESULT_CANCELLED = 1;
    const MojoResult RESULT_UNKNOWN = 2;
    const MojoResult RESULT_INVALID_ARGUMENT = 3;
    const MojoResult RESULT_DEADLINE_EXCEEDED = 4;
    const MojoResult RESULT_NOT_FOUND = 5;
    const MojoResult RESULT_ALREADY_EXISTS = 6;
    const MojoResult RESULT_PERMISSION_DENIED = 7;
    const MojoResult RESULT_RESOURCE_EXHAUSTED = 8;
    const MojoResult RESULT_FAILED_PRECONDITION = 9;
    const MojoResult RESULT_ABORTED = 10;
    const MojoResult RESULT_OUT_OF_RANGE = 11;
    const MojoResult RESULT_UNIMPLEMENTED = 12;
    const MojoResult RESULT_INTERNAL = 13;
    const MojoResult RESULT_UNAVAILABLE = 14;
    const MojoResult RESULT_DATA_LOSS = 15;
    const MojoResult RESULT_BUSY = 16;
    const MojoResult RESULT_SHOULD_WAIT = 17;

    static MojoCreateMessagePipeResult createMessagePipe();
    static MojoCreateDataPipeResult createDataPipe(MojoCreateDataPipeOptions options);
    static MojoCreateSharedBufferResult createSharedBuffer(unsigned long numBytes);

    [CallWith=ScriptState] static void bindInterface(DOMString interfaceName, MojoHandle request_handle, optional MojoScope scope = "context");
};
