10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file. 40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Module "mojo/public/js/bindings/core" 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Note: This file is for documentation purposes only. The code here is not 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// actually executed. The real module is implemented natively in Mojo. 90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// This module provides the JavaScript bindings for mojo/public/c/system/core.h. 110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Refer to that file for more detailed documentation for equivalent methods. 120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochwhile (1); 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoHandle: An opaque handles to a Mojo object (e.g. a message pipe). 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar kInvalidHandle; 190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoResult {number}: Result codes for Mojo operations. 220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_OK; 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_CANCELLED; 260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_UNKNOWN; 270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_INVALID_ARGUMENT; 280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_DEADLINE_EXCEEDED; 290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_NOT_FOUND; 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_ALREADY_EXISTS; 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_PERMISSION_DENIED; 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_RESOURCE_EXHAUSTED; 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_FAILED_PRECONDITION; 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_ABORTED; 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_OUT_OF_RANGE; 360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_UNIMPLEMENTED; 370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_INTERNAL; 380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_UNAVAILABLE; 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_DATA_LOSS; 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_BUSY; 410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar RESULT_SHOULD_WAIT; 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoDeadline {number}: Used to specify deadlines (timeouts), in microseconds. 450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar DEADLINE_INDEFINITE; 480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * MojoHandleSignals: Used to specify signals that can be waited on for a handle 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) *(and which can be triggered), e.g., the ability to read or write to 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * the handle. 530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)var HANDLE_SIGNAL_NONE; 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)var HANDLE_SIGNAL_READABLE; 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)var HANDLE_SIGNAL_WRITABLE; 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/* 600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoWriteMessageFlags: Used to specify different modes to |writeMessage()|. 610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar WRITE_MESSAGE_FLAG_NONE; 640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoReadMessageFlags: Used to specify different modes to |readMessage()|. 670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar READ_MESSAGE_FLAG_NONE; 700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar READ_MESSAGE_FLAG_MAY_DISCARD; 710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoCreateDataPipeOptions: Used to specify creation parameters for a data 740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * pipe to |createDataPipe()|. 750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochdictionary MojoCreateDataPipeOptions { 780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch MojoCreateDataPipeOptionsFlags flags; // See below. 790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int32 elementNumBytes; // The size of an element, in bytes. 800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch int32 capacityNumBytes; // The capacity of the data pipe, in bytes. 810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}; 820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// MojoCreateDataPipeOptionsFlags 840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar CREATE_DATA_PIPE_OPTIONS_FLAG_NONE; 850529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar CREATE_DATA_PIPE_OPTIONS_FLAG_MAY_DISCARD; 860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/* 880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoWriteDataFlags: Used to specify different modes to |writeData()|. 890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar WRITE_DATA_FLAG_NONE; 920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar WRITE_DATA_FLAG_ALL_OR_NONE; 930529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 940529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 950529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoReadDataFlags: Used to specify different modes to |readData()|. 960529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See core.h for more information. 970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar READ_DATA_FLAG_NONE; 990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar READ_DATA_FLAG_ALL_OR_NONE; 1000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar READ_DATA_FLAG_DISCARD; 1010529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvar READ_DATA_FLAG_QUERY; 1020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Closes the given |handle|. See MojoClose for more info. 1050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoHandle} Handle to close. 1060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {MojoResult} Result code. 1070529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1080529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction close(handle) { [native code] } 1090529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 111f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * Waits on the given handle until a signal indicated by |signals| is 1120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * satisfied or until |deadline| is passed. See MojoWait for more information. 1130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoHandle} handle Handle to wait on. 115f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param {MojoHandleSignals} signals Specifies the condition to wait for. 1160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoDeadline} deadline Stops waiting if this is reached. 1170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {MojoResult} Result code. 1180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 119f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)function wait(handle, signals, deadline) { [native code] } 1200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Waits on |handles[0]|, ..., |handles[handles.length-1]| for at least one of 1230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * them to satisfy the state indicated by |flags[0]|, ..., 1240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * |flags[handles.length-1]|, respectively, or until |deadline| has passed. 1250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See MojoWaitMany for more information. 1260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {Array.MojoHandle} handles Handles to wait on. 128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * @param {Array.MojoHandleSignals} signals Specifies the condition to wait for, 1290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * for each corresponding handle. Must be the same length as |handles|. 1300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoDeadline} deadline Stops waiting if this is reached. 1310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {MojoResult} Result code. 1320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)function waitMany(handles, signals, deadline) { [native code] } 1340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Creates a message pipe. This function always succeeds. 1370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * See MojoCreateMessagePipe for more information on message pipes. 1380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {MessagePipe} An object of the form { 1400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * handle0, 1410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * handle1, 1420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * } 1430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * where |handle0| and |handle1| are MojoHandles to each end of the channel. 1440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction createMessagePipe() { [native code] } 1460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Writes a message to the message pipe endpoint given by |handle|. See 1490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoWriteMessage for more information, including return codes. 1500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoHandle} handle The endpoint to write to. 1520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {ArrayBufferView} buffer The message data. May be empty. 1530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {Array.MojoHandle} handlesArray Any handles to attach. Handles are 1540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * transferred on success and will no longer be valid. May be empty. 1550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoWriteMessageFlags} flags Flags. 1560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {MojoResult} Result code. 1570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction writeMessage(handle, buffer, handlesArray, flags) { [native code] } 1590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Reads a message from the message pipe endpoint given by |handle|. See 1620529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoReadMessage for more information, including return codes. 1630529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1640529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoHandle} handle The endpoint to read from. 1650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoReadMessageFlags} flags Flags. 1660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {object} An object of the form { 1670529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * result, // |RESULT_OK| on success, error code otherwise. 1680529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * buffer, // An ArrayBufferView of the message data (only on success). 1690529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * handles // An array of MojoHandles transferred, if any. 1700529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * } 1710529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1720529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction readMessage(handle, flags) { [native code] } 1730529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1740529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1750529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Creates a data pipe, which is a unidirectional communication channel for 1760529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * unframed data, with the given options. See MojoCreateDataPipe for more 1770529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * more information, including return codes. 1780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoCreateDataPipeOptions} optionsDict Options to control the data 1800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * pipe parameters. May be null. 1810529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {object} An object of the form { 1820529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * result, // |RESULT_OK| on success, error code otherwise. 1830529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * producerHandle, // MojoHandle to use with writeData (only on success). 1840529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * consumerHandle, // MojoHandle to use with readData (only on success). 1850529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * } 1860529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1870529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction createDataPipe(optionsDict) { [native code] } 1880529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1890529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 1900529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Writes the given data to the data pipe producer given by |handle|. See 1910529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * MojoWriteData for more information, including return codes. 1920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 1930529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoHandle} handle A producerHandle returned by createDataPipe. 1940529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {ArrayBufferView} buffer The data to write. 1950529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoWriteDataFlags} flags Flags. 1960529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {object} An object of the form { 1970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * result, // |RESULT_OK| on success, error code otherwise. 1980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * numBytes, // The number of bytes written. 1990529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * } 2000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 2010529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction writeData(handle, buffer, flags) { [native code] } 2020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 2030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** 2040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Reads data from the data pipe consumer given by |handle|. May also 2050529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * be used to discard data. See MojoReadData for more information, including 2060529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * return codes. 2070529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * 2080529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoHandle} handle A consumerHandle returned by createDataPipe. 2090529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @param {MojoReadDataFlags} flags Flags. 2100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @return {object} An object of the form { 2110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * result, // |RESULT_OK| on success, error code otherwise. 2120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * buffer, // An ArrayBufferView of the data read (only on success). 2130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * } 2140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 2150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochfunction readData(handle, flags) { [native code] } 216