OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Use the <code>chrome.copresence</code> API to communicate with other nearby |
| 6 // devices using Google's copresence service. |
| 7 namespace copresence { |
| 8 // Suggestions to copresence on how to do the publication and subscription. |
| 9 // Note: These are only suggestions. Actual behavior may not always match |
| 10 // what is requested. |
| 11 dictionary Strategy { |
| 12 // Attempt to use low power mode. Defaults to false. |
| 13 boolean? lowPower; |
| 14 // Attempt to only broadcast. Using this with onlyScan can result in both |
| 15 // being ignored. Defaults to false. |
| 16 boolean? onlyBroadcast; |
| 17 // Attempt to only scan. Using this with onlyBroadcast can result in both |
| 18 // being ignored. Defaults to false. |
| 19 boolean? onlyScan; |
| 20 // Attempt to use audible audio. Defaults to false. |
| 21 boolean? audible; |
| 22 }; |
| 23 |
| 24 dictionary Message { |
| 25 // The type of message being published. Cannot be empty. |
| 26 DOMString type; |
| 27 // The message payload, in raw bytes. |
| 28 ArrayBuffer payload; |
| 29 }; |
| 30 |
| 31 dictionary MessageFilter { |
| 32 // The type of messages to subscribe to. Cannot be empty. |
| 33 DOMString type; |
| 34 }; |
| 35 |
| 36 [noinline_doc] dictionary AccessPolicy { |
| 37 // Only send this message to devices within hearing range. |
| 38 // Defaults to false. |
| 39 boolean? onlyEarshot; |
| 40 }; |
| 41 |
| 42 [noinline_doc] dictionary PublishOperation { |
| 43 // A unique ID that identifies this publish. |
| 44 DOMString id; |
| 45 // The message to publish. |
| 46 Message message; |
| 47 // The number of milliseconds for which this publication will be active. |
| 48 // This is capped at 24 hours. If not provided, a default of 5 minutes is |
| 49 // used. |
| 50 long? timeToLiveMillis; |
| 51 // A policy specifying who can get the message. |
| 52 AccessPolicy? policy; |
| 53 // A set of strategies to use when publishing the message. These |
| 54 // strategies are suggestions to copresence that may or may not be followed. |
| 55 Strategy? strategies; |
| 56 }; |
| 57 |
| 58 [noinline_doc] dictionary SubscribeOperation { |
| 59 // A unique ID that identifies this subscription. |
| 60 DOMString id; |
| 61 // Filter that defines which messages we want to subscribe to. |
| 62 MessageFilter filter; |
| 63 // The number of milliseconds for which this subscription will be active. |
| 64 // This is capped at 24 hours. If not provided, a default of 5 minutes is |
| 65 // used. |
| 66 long? timeToLiveMillis; |
| 67 // A set of strategies to use when subscribing with this filter. These |
| 68 // strategies are suggestions to copresence that may or may not be followed. |
| 69 Strategy? strategies; |
| 70 }; |
| 71 |
| 72 [noinline_doc] dictionary UnpublishOperation { |
| 73 // The ID of a message to unpublish. Required if the operation type |
| 74 // is 'unpublish'. |
| 75 DOMString unpublishId; |
| 76 }; |
| 77 |
| 78 [noinline_doc] dictionary UnsubscribeOperation { |
| 79 // The ID of a subscription to cancel. Required if the operation type |
| 80 // is 'unsubscribe'. |
| 81 DOMString unsubscribeId; |
| 82 }; |
| 83 |
| 84 // Only one of these can be set. |
| 85 [noinline_doc] dictionary Operation { |
| 86 // Publication details. Required if the operation type is 'publish'. |
| 87 PublishOperation? publish; |
| 88 // Subscription details. Required if the operation type is 'subscribe'. |
| 89 SubscribeOperation? subscribe; |
| 90 // Unpublish details. Required if the operation type is 'unpublish'. |
| 91 UnpublishOperation? unpublish; |
| 92 // Unsubscribe details. Required if the operation type is 'unsubscribe'. |
| 93 UnsubscribeOperation? unsubscribe; |
| 94 }; |
| 95 |
| 96 // Indicates whether a batchExecute() call succeeded or encountered errors. |
| 97 enum ExecuteStatus { |
| 98 // All operations sent to batchExecute succeeded. |
| 99 success, |
| 100 // One of the operations sent to batchExecute failed. |
| 101 failed, |
| 102 // Contacting the Copresence server failed. |
| 103 serverError, |
| 104 // Initializing Copresence failed. |
| 105 initFailed |
| 106 }; |
| 107 |
| 108 // Specifies an asynchronous status event sent to the app. |
| 109 enum Status { |
| 110 // We attempted to broadcast audio but weren't able to. |
| 111 audioFailed, |
| 112 // Contacting the Copresence server failed. |
| 113 serverError |
| 114 }; |
| 115 |
| 116 // Callback to return the status of a completed batchExecute() call. |
| 117 callback ExecuteCallback = void(ExecuteStatus status); |
| 118 |
| 119 interface Functions { |
| 120 // Sets the API key to use with the app. This parameter only needs to be |
| 121 // set to communicate with apps on other platforms. Once the API key is set, |
| 122 // apps on any platform that are using this API key can publish/subscribe to |
| 123 // each other. |
| 124 [nodoc] static void setApiKey(DOMString apiKey); |
| 125 |
| 126 // Executes a set of copresence operations in one batch. They will either |
| 127 // all be executed, or none will be executed (due to an error in one or |
| 128 // more of them). Publish/Subscribe operations are executed in the order |
| 129 // that they exist in the array. Unpublish and Unsubscribe are processsed |
| 130 // at the end, again, in the order that they exist in the array. |
| 131 static void execute(Operation[] operations, ExecuteCallback callback); |
| 132 }; |
| 133 |
| 134 interface Events { |
| 135 // Fired when new messages arrive. |
| 136 static void onMessagesReceived(DOMString subscriptionId, |
| 137 Message[] messages); |
| 138 |
| 139 // Fired when a new copresence status update is available. |
| 140 static void onStatusUpdated(Status status); |
| 141 }; |
| 142 }; |
| 143 |
OLD | NEW |