Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Side by Side Diff: chrome/common/extensions/api/copresence.idl

Issue 444513005: Add the Copresence API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 devices
6 // close by, using Google's copresence service.
7 namespace copresence {
8 // The set of supported copresence operations.
9 enum OperationType {
10 publish, subscribe, unpublish, unsubscribe
11 };
12
13 // Suggestions to copresence on how to do the publication and subscription.
14 // Note: These are only suggestions. Actual behavior may not always match
15 // what is requested.
16 dictionary Strategy {
17 // Attempt to use low power mode. Defaults to false.
18 boolean? lowPower;
19 // Attempt to only broadcast. Using this with onlyScan can result in both
20 // being ignored. Defaults to false.
21 boolean? onlyBroadcast;
22 // Attempt to only scan. Using this with onlyBroadcast can result in both
23 // being ignored. Defaults to false.
24 boolean? onlyScan;
25 // Attempt to use audible audio. Defaults to false.
26 boolean? audible;
27 };
28
29 [inline_doc] dictionary Message {
not at google - send to devlin 2014/08/05 21:05:38 it will automatically inline since it's only used
rkc 2014/08/05 22:25:22 Done.
30 // The type of message that we're publishing. Cannot be empty.
31 DOMString type;
32 // The message payload, in raw bytes.
33 ArrayBuffer payload;
34 };
35
36 dictionary MessageFilter {
37 // The type of messages to subscribe to. Cannot be empty.
38 DOMString type;
39 };
40
41 [noinline_doc] dictionary AccessPolicy {
42 // Only send this message to people within hearing range.
43 // Defaults to false.
44 boolean? onlyEarshot;
45 };
46
47 [noinline_doc] dictionary PublishOperation {
48 // A unique ID that identifies this publish.
49 DOMString id;
50 // The message to publish.
51 Message message;
52 // The number of milliseconds for which this publication will be active.
53 // This is capped at 24 hours. If not provided, we default to 5 minutes.
54 long? timeToLiveMillis;
55 // A policy specifying who can get the message.
56 AccessPolicy? policy;
57 // A set of strategies to use when publishing the message. These
58 // strategies are suggestions to copresence that may or may not be followed.
59 Strategy? strategies;
60 };
61
62 [noinline_doc] dictionary SubscribeOperation {
63 // A unique ID that identifies this subscription.
64 DOMString id;
65 // Filter that defines which messages we want to subscribe to.
66 MessageFilter filter;
67 // The number of milliseconds for which this subscription will be active.
68 // This is capped at 24 hours. If not provided, we default to 5 minutes.
69 long? timeToLiveMillis;
70 // A set of strategies to use when subscribing with this filter. These
71 // strategies are suggestions to copresence that may or may not be followed.
72 Strategy? strategies;
73 };
74
75 [noinline_doc] dictionary UnpublishOperation {
76 // The id of a message to unpublish. Required if the operation type
77 // is 'unpublish'.
78 DOMString unpublishId;
79 };
80
81 [noinline_doc] dictionary UnsubscribeOperation {
82 // The id of a subscription to cancel. Required if the operation type
83 // is 'unsubscribe'.
84 DOMString unsubscribeId;
85 };
86
87 [noinline_doc] dictionary Operation {
88 // Type of operation. An operation object matching the type must be a
89 // part of this object.
90 OperationType type;
not at google - send to devlin 2014/08/05 21:05:39 why do you need the OperationType? it can be deter
rkc 2014/08/05 22:25:23 Done.
91
92 // Publication details. Required if the operation type is 'publish'.
93 PublishOperation? publish;
94 // Subscription details. Required if the operation type is 'subscribe'.
95 SubscribeOperation? subscribe;
96
97 // Unpublish details. Required if the operation type is 'unpublish'.
98 UnpublishOperation? unpublish;
99 // Unsubscribe details. Required if the operation type is 'unsubscribe'.
100 UnsubscribeOperation? unsubscribe;
101 };
102
103 // Indicates whether a batchExecute() call succeeded or encountered errors.
104 [inline_doc] enum BatchExecuteStatus {
not at google - send to devlin 2014/08/05 21:05:39 it will automatically inline since it's only used
rkc 2014/08/05 22:25:22 Done.
105 // All operations sent to batchExecute succeeded.
106 success,
107 // One of the operations sent to batchExecute failed.
108 failed,
109 // Contacting the Copresence server failed.
110 serverError,
111 // Initializing Copresence failed.
112 initFailed
113 };
114
115 // Specifies an asynchronous status event sent to the app.
116 [inline_doc] enum Status {
not at google - send to devlin 2014/08/05 21:05:38 it will automatically inline since it's only used
rkc 2014/08/05 22:25:23 Done.
117 // We attempted to broadcast audio but weren't able to.
118 audioFailed,
119 // Contacting the Copresence server failed.
120 serverError
121 };
122
123 // Callback to return the status of a completed batchExecute() call.
124 callback BatchExecuteCallback = void(BatchExecuteStatus status);
125
126 interface Functions {
127 // Sets the API key to use with our app. This parameter only needs to be
128 // set if we need to communicate with apps on other platforms. Once we set
129 // the api key, apps on any platform that are using this API key can
not at google - send to devlin 2014/08/05 21:05:39 what's to stop some MyRandomApp from setting the s
rkc 2014/08/05 22:25:23 This isn't a security feature, it is a scoping fea
not at google - send to devlin 2014/08/05 22:38:14 I see. out of curiosity why isn't this a message f
rkc 2014/08/05 23:06:29 We don't want an app to keep setting arbitrary key
130 // publish/subscribe to each other.
131 static void setApiKey(DOMString apiKey);
132
133 // Executes a set of copresence operations in one batch. They will either
134 // all be executed, or none will be executed (due to an error in one or
135 // more of them). Publish/Subscribe operations are executed in the order
136 // that they exist in the array. Unpublish and Unsubscribe are processsed
137 // at the end, again, in the order that they exist in the array.
138 static void batchExecute(Operation[] operations,
not at google - send to devlin 2014/08/05 21:05:39 IMO this should just be "execute" because the fact
rkc 2014/08/05 22:25:23 Yes, but execute is fine too. Changed this and all
139 BatchExecuteCallback callback);
140 };
141
142 interface Events {
143 // Fired when we new messages arrive.
xiyuan 2014/08/05 21:02:35 nit: get rid of "we"
rkc 2014/08/05 22:25:23 Done.
144 static void onMessagesReceived(DOMString subscriptionId,
145 Message[] messages);
146
147 // Fired when we have a new status update for copresence.
148 static void onStatusReceived(Status status);
not at google - send to devlin 2014/08/05 21:05:39 onStatusUpdated?
rkc 2014/08/05 22:25:22 Done.
149 };
150 };
151
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698