OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 library gpu_mojom; | 5 library audio_server_mojom; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:mojo/bindings.dart' as bindings; | 9 import 'package:mojo/bindings.dart' as bindings; |
10 import 'package:mojo/core.dart' as core; | 10 import 'package:mojo/core.dart' as core; |
11 import 'package:mojo_services/mojo/command_buffer.mojom.dart' as command_buffer_
mojom; | 11 import 'package:mojo_services/mojo/media/audio_track.mojom.dart' as audio_track_
mojom; |
12 | 12 |
13 | 13 |
14 | 14 |
15 class GpuCreateOffscreenGleS2ContextParams extends bindings.Struct { | 15 class AudioServerCreateTrackParams extends bindings.Struct { |
16 static const List<bindings.StructDataHeader> kVersions = const [ | 16 static const List<bindings.StructDataHeader> kVersions = const [ |
17 const bindings.StructDataHeader(16, 0) | 17 const bindings.StructDataHeader(16, 0) |
18 ]; | 18 ]; |
19 Object gles2Client = null; | 19 Object track = null; |
20 | 20 |
21 GpuCreateOffscreenGleS2ContextParams() : super(kVersions.last.size); | 21 AudioServerCreateTrackParams() : super(kVersions.last.size); |
22 | 22 |
23 static GpuCreateOffscreenGleS2ContextParams deserialize(bindings.Message messa
ge) { | 23 static AudioServerCreateTrackParams deserialize(bindings.Message message) { |
24 var decoder = new bindings.Decoder(message); | 24 var decoder = new bindings.Decoder(message); |
25 var result = decode(decoder); | 25 var result = decode(decoder); |
26 if (decoder.excessHandles != null) { | 26 if (decoder.excessHandles != null) { |
27 decoder.excessHandles.forEach((h) => h.close()); | 27 decoder.excessHandles.forEach((h) => h.close()); |
28 } | 28 } |
29 return result; | 29 return result; |
30 } | 30 } |
31 | 31 |
32 static GpuCreateOffscreenGleS2ContextParams decode(bindings.Decoder decoder0)
{ | 32 static AudioServerCreateTrackParams decode(bindings.Decoder decoder0) { |
33 if (decoder0 == null) { | 33 if (decoder0 == null) { |
34 return null; | 34 return null; |
35 } | 35 } |
36 GpuCreateOffscreenGleS2ContextParams result = new GpuCreateOffscreenGleS2Con
textParams(); | 36 AudioServerCreateTrackParams result = new AudioServerCreateTrackParams(); |
37 | 37 |
38 var mainDataHeader = decoder0.decodeStructDataHeader(); | 38 var mainDataHeader = decoder0.decodeStructDataHeader(); |
39 if (mainDataHeader.version <= kVersions.last.version) { | 39 if (mainDataHeader.version <= kVersions.last.version) { |
40 // Scan in reverse order to optimize for more recent versions. | 40 // Scan in reverse order to optimize for more recent versions. |
41 for (int i = kVersions.length - 1; i >= 0; --i) { | 41 for (int i = kVersions.length - 1; i >= 0; --i) { |
42 if (mainDataHeader.version >= kVersions[i].version) { | 42 if (mainDataHeader.version >= kVersions[i].version) { |
43 if (mainDataHeader.size == kVersions[i].size) { | 43 if (mainDataHeader.size == kVersions[i].size) { |
44 // Found a match. | 44 // Found a match. |
45 break; | 45 break; |
46 } | 46 } |
47 throw new bindings.MojoCodecError( | 47 throw new bindings.MojoCodecError( |
48 'Header size doesn\'t correspond to known version size.'); | 48 'Header size doesn\'t correspond to known version size.'); |
49 } | 49 } |
50 } | 50 } |
51 } else if (mainDataHeader.size < kVersions.last.size) { | 51 } else if (mainDataHeader.size < kVersions.last.size) { |
52 throw new bindings.MojoCodecError( | 52 throw new bindings.MojoCodecError( |
53 'Message newer than the last known version cannot be shorter than ' | 53 'Message newer than the last known version cannot be shorter than ' |
54 'required by the last known version.'); | 54 'required by the last known version.'); |
55 } | 55 } |
56 if (mainDataHeader.version >= 0) { | 56 if (mainDataHeader.version >= 0) { |
57 | 57 |
58 result.gles2Client = decoder0.decodeInterfaceRequest(8, false, command_buf
fer_mojom.CommandBufferStub.newFromEndpoint); | 58 result.track = decoder0.decodeInterfaceRequest(8, false, audio_track_mojom
.AudioTrackStub.newFromEndpoint); |
59 } | 59 } |
60 return result; | 60 return result; |
61 } | 61 } |
62 | 62 |
63 void encode(bindings.Encoder encoder) { | 63 void encode(bindings.Encoder encoder) { |
64 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last); | 64 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last); |
65 | 65 |
66 encoder0.encodeInterfaceRequest(gles2Client, 8, false); | 66 encoder0.encodeInterfaceRequest(track, 8, false); |
67 } | 67 } |
68 | 68 |
69 String toString() { | 69 String toString() { |
70 return "GpuCreateOffscreenGleS2ContextParams(" | 70 return "AudioServerCreateTrackParams(" |
71 "gles2Client: $gles2Client" ")"; | 71 "track: $track" ")"; |
72 } | 72 } |
73 | 73 |
74 Map toJson() { | 74 Map toJson() { |
75 throw new bindings.MojoCodecError( | 75 throw new bindings.MojoCodecError( |
76 'Object containing handles cannot be encoded to JSON.'); | 76 'Object containing handles cannot be encoded to JSON.'); |
77 } | 77 } |
78 } | 78 } |
79 | 79 |
80 const int kGpu_createOffscreenGleS2Context_name = 0; | 80 const int kAudioServer_createTrack_name = 0; |
81 const String GpuName = "mojo::Gpu"; | 81 const String AudioServerName = "mojo::media::AudioServer"; |
82 | 82 |
83 abstract class Gpu { | 83 abstract class AudioServer { |
84 void createOffscreenGleS2Context(Object gles2Client); | 84 void createTrack(Object track); |
85 | 85 |
86 } | 86 } |
87 | 87 |
88 | 88 |
89 class GpuProxyImpl extends bindings.Proxy { | 89 class AudioServerProxyImpl extends bindings.Proxy { |
90 GpuProxyImpl.fromEndpoint( | 90 AudioServerProxyImpl.fromEndpoint( |
91 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint); | 91 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint); |
92 | 92 |
93 GpuProxyImpl.fromHandle(core.MojoHandle handle) : | 93 AudioServerProxyImpl.fromHandle(core.MojoHandle handle) : |
94 super.fromHandle(handle); | 94 super.fromHandle(handle); |
95 | 95 |
96 GpuProxyImpl.unbound() : super.unbound(); | 96 AudioServerProxyImpl.unbound() : super.unbound(); |
97 | 97 |
98 static GpuProxyImpl newFromEndpoint( | 98 static AudioServerProxyImpl newFromEndpoint( |
99 core.MojoMessagePipeEndpoint endpoint) { | 99 core.MojoMessagePipeEndpoint endpoint) { |
100 assert(endpoint.setDescription("For GpuProxyImpl")); | 100 assert(endpoint.setDescription("For AudioServerProxyImpl")); |
101 return new GpuProxyImpl.fromEndpoint(endpoint); | 101 return new AudioServerProxyImpl.fromEndpoint(endpoint); |
102 } | 102 } |
103 | 103 |
104 String get name => GpuName; | 104 String get name => AudioServerName; |
105 | 105 |
106 void handleResponse(bindings.ServiceMessage message) { | 106 void handleResponse(bindings.ServiceMessage message) { |
107 switch (message.header.type) { | 107 switch (message.header.type) { |
108 default: | 108 default: |
109 proxyError("Unexpected message type: ${message.header.type}"); | 109 proxyError("Unexpected message type: ${message.header.type}"); |
110 close(immediate: true); | 110 close(immediate: true); |
111 break; | 111 break; |
112 } | 112 } |
113 } | 113 } |
114 | 114 |
115 String toString() { | 115 String toString() { |
116 var superString = super.toString(); | 116 var superString = super.toString(); |
117 return "GpuProxyImpl($superString)"; | 117 return "AudioServerProxyImpl($superString)"; |
118 } | 118 } |
119 } | 119 } |
120 | 120 |
121 | 121 |
122 class _GpuProxyCalls implements Gpu { | 122 class _AudioServerProxyCalls implements AudioServer { |
123 GpuProxyImpl _proxyImpl; | 123 AudioServerProxyImpl _proxyImpl; |
124 | 124 |
125 _GpuProxyCalls(this._proxyImpl); | 125 _AudioServerProxyCalls(this._proxyImpl); |
126 void createOffscreenGleS2Context(Object gles2Client) { | 126 void createTrack(Object track) { |
127 if (!_proxyImpl.isBound) { | 127 if (!_proxyImpl.isBound) { |
128 _proxyImpl.proxyError("The Proxy is closed."); | 128 _proxyImpl.proxyError("The Proxy is closed."); |
129 return; | 129 return; |
130 } | 130 } |
131 var params = new GpuCreateOffscreenGleS2ContextParams(); | 131 var params = new AudioServerCreateTrackParams(); |
132 params.gles2Client = gles2Client; | 132 params.track = track; |
133 _proxyImpl.sendMessage(params, kGpu_createOffscreenGleS2Context_name); | 133 _proxyImpl.sendMessage(params, kAudioServer_createTrack_name); |
134 } | 134 } |
135 | 135 |
136 } | 136 } |
137 | 137 |
138 | 138 |
139 class GpuProxy implements bindings.ProxyBase { | 139 class AudioServerProxy implements bindings.ProxyBase { |
140 final bindings.Proxy impl; | 140 final bindings.Proxy impl; |
141 Gpu ptr; | 141 AudioServer ptr; |
142 final String name = GpuName; | 142 final String name = AudioServerName; |
143 | 143 |
144 GpuProxy(GpuProxyImpl proxyImpl) : | 144 AudioServerProxy(AudioServerProxyImpl proxyImpl) : |
145 impl = proxyImpl, | 145 impl = proxyImpl, |
146 ptr = new _GpuProxyCalls(proxyImpl); | 146 ptr = new _AudioServerProxyCalls(proxyImpl); |
147 | 147 |
148 GpuProxy.fromEndpoint( | 148 AudioServerProxy.fromEndpoint( |
149 core.MojoMessagePipeEndpoint endpoint) : | 149 core.MojoMessagePipeEndpoint endpoint) : |
150 impl = new GpuProxyImpl.fromEndpoint(endpoint) { | 150 impl = new AudioServerProxyImpl.fromEndpoint(endpoint) { |
151 ptr = new _GpuProxyCalls(impl); | 151 ptr = new _AudioServerProxyCalls(impl); |
152 } | 152 } |
153 | 153 |
154 GpuProxy.fromHandle(core.MojoHandle handle) : | 154 AudioServerProxy.fromHandle(core.MojoHandle handle) : |
155 impl = new GpuProxyImpl.fromHandle(handle) { | 155 impl = new AudioServerProxyImpl.fromHandle(handle) { |
156 ptr = new _GpuProxyCalls(impl); | 156 ptr = new _AudioServerProxyCalls(impl); |
157 } | 157 } |
158 | 158 |
159 GpuProxy.unbound() : | 159 AudioServerProxy.unbound() : |
160 impl = new GpuProxyImpl.unbound() { | 160 impl = new AudioServerProxyImpl.unbound() { |
161 ptr = new _GpuProxyCalls(impl); | 161 ptr = new _AudioServerProxyCalls(impl); |
162 } | 162 } |
163 | 163 |
164 factory GpuProxy.connectToService( | 164 factory AudioServerProxy.connectToService( |
165 bindings.ServiceConnector s, String url, [String serviceName]) { | 165 bindings.ServiceConnector s, String url) { |
166 GpuProxy p = new GpuProxy.unbound(); | 166 AudioServerProxy p = new AudioServerProxy.unbound(); |
167 s.connectToService(url, p, serviceName); | 167 s.connectToService(url, p); |
168 return p; | 168 return p; |
169 } | 169 } |
170 | 170 |
171 static GpuProxy newFromEndpoint( | 171 static AudioServerProxy newFromEndpoint( |
172 core.MojoMessagePipeEndpoint endpoint) { | 172 core.MojoMessagePipeEndpoint endpoint) { |
173 assert(endpoint.setDescription("For GpuProxy")); | 173 assert(endpoint.setDescription("For AudioServerProxy")); |
174 return new GpuProxy.fromEndpoint(endpoint); | 174 return new AudioServerProxy.fromEndpoint(endpoint); |
175 } | 175 } |
176 | 176 |
177 Future close({bool immediate: false}) => impl.close(immediate: immediate); | 177 Future close({bool immediate: false}) => impl.close(immediate: immediate); |
178 | 178 |
179 Future responseOrError(Future f) => impl.responseOrError(f); | 179 Future responseOrError(Future f) => impl.responseOrError(f); |
180 | 180 |
181 Future get errorFuture => impl.errorFuture; | 181 Future get errorFuture => impl.errorFuture; |
182 | 182 |
183 int get version => impl.version; | 183 int get version => impl.version; |
184 | 184 |
185 Future<int> queryVersion() => impl.queryVersion(); | 185 Future<int> queryVersion() => impl.queryVersion(); |
186 | 186 |
187 void requireVersion(int requiredVersion) { | 187 void requireVersion(int requiredVersion) { |
188 impl.requireVersion(requiredVersion); | 188 impl.requireVersion(requiredVersion); |
189 } | 189 } |
190 | 190 |
191 String toString() { | 191 String toString() { |
192 return "GpuProxy($impl)"; | 192 return "AudioServerProxy($impl)"; |
193 } | 193 } |
194 } | 194 } |
195 | 195 |
196 | 196 |
197 class GpuStub extends bindings.Stub { | 197 class AudioServerStub extends bindings.Stub { |
198 Gpu _impl = null; | 198 AudioServer _impl = null; |
199 | 199 |
200 GpuStub.fromEndpoint( | 200 AudioServerStub.fromEndpoint( |
201 core.MojoMessagePipeEndpoint endpoint, [this._impl]) | 201 core.MojoMessagePipeEndpoint endpoint, [this._impl]) |
202 : super.fromEndpoint(endpoint); | 202 : super.fromEndpoint(endpoint); |
203 | 203 |
204 GpuStub.fromHandle(core.MojoHandle handle, [this._impl]) | 204 AudioServerStub.fromHandle(core.MojoHandle handle, [this._impl]) |
205 : super.fromHandle(handle); | 205 : super.fromHandle(handle); |
206 | 206 |
207 GpuStub.unbound() : super.unbound(); | 207 AudioServerStub.unbound() : super.unbound(); |
208 | 208 |
209 static GpuStub newFromEndpoint( | 209 static AudioServerStub newFromEndpoint( |
210 core.MojoMessagePipeEndpoint endpoint) { | 210 core.MojoMessagePipeEndpoint endpoint) { |
211 assert(endpoint.setDescription("For GpuStub")); | 211 assert(endpoint.setDescription("For AudioServerStub")); |
212 return new GpuStub.fromEndpoint(endpoint); | 212 return new AudioServerStub.fromEndpoint(endpoint); |
213 } | 213 } |
214 | 214 |
215 static const String name = GpuName; | 215 static const String name = AudioServerName; |
216 | 216 |
217 | 217 |
218 | 218 |
219 dynamic handleMessage(bindings.ServiceMessage message) { | 219 dynamic handleMessage(bindings.ServiceMessage message) { |
220 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 220 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
221 return bindings.ControlMessageHandler.handleMessage(this, | 221 return bindings.ControlMessageHandler.handleMessage(this, |
222 0, | 222 0, |
223 message); | 223 message); |
224 } | 224 } |
225 assert(_impl != null); | 225 assert(_impl != null); |
226 switch (message.header.type) { | 226 switch (message.header.type) { |
227 case kGpu_createOffscreenGleS2Context_name: | 227 case kAudioServer_createTrack_name: |
228 var params = GpuCreateOffscreenGleS2ContextParams.deserialize( | 228 var params = AudioServerCreateTrackParams.deserialize( |
229 message.payload); | 229 message.payload); |
230 _impl.createOffscreenGleS2Context(params.gles2Client); | 230 _impl.createTrack(params.track); |
231 break; | 231 break; |
232 default: | 232 default: |
233 throw new bindings.MojoCodecError("Unexpected message name"); | 233 throw new bindings.MojoCodecError("Unexpected message name"); |
234 break; | 234 break; |
235 } | 235 } |
236 return null; | 236 return null; |
237 } | 237 } |
238 | 238 |
239 Gpu get impl => _impl; | 239 AudioServer get impl => _impl; |
240 set impl(Gpu d) { | 240 set impl(AudioServer d) { |
241 assert(_impl == null); | 241 assert(_impl == null); |
242 _impl = d; | 242 _impl = d; |
243 } | 243 } |
244 | 244 |
245 String toString() { | 245 String toString() { |
246 var superString = super.toString(); | 246 var superString = super.toString(); |
247 return "GpuStub($superString)"; | 247 return "AudioServerStub($superString)"; |
248 } | 248 } |
249 | 249 |
250 int get version => 0; | 250 int get version => 0; |
251 } | 251 } |
252 | 252 |
253 | 253 |
OLD | NEW |