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 library view_provider_mojom; |
| 6 |
| 7 import 'dart:async'; |
| 8 |
| 9 import 'package:mojo/bindings.dart' as bindings; |
| 10 import 'package:mojo/core.dart' as core; |
| 11 import 'package:mojo/mojo/service_provider.mojom.dart' as service_provider_mojom
; |
| 12 import 'package:mojo_services/mojo/ui/views.mojom.dart' as views_mojom; |
| 13 |
| 14 |
| 15 |
| 16 class ViewProviderCreateViewParams extends bindings.Struct { |
| 17 static const List<bindings.StructDataHeader> kVersions = const [ |
| 18 const bindings.StructDataHeader(24, 0) |
| 19 ]; |
| 20 Object services = null; |
| 21 Object exposedServices = null; |
| 22 |
| 23 ViewProviderCreateViewParams() : super(kVersions.last.size); |
| 24 |
| 25 static ViewProviderCreateViewParams deserialize(bindings.Message message) { |
| 26 var decoder = new bindings.Decoder(message); |
| 27 var result = decode(decoder); |
| 28 if (decoder.excessHandles != null) { |
| 29 decoder.excessHandles.forEach((h) => h.close()); |
| 30 } |
| 31 return result; |
| 32 } |
| 33 |
| 34 static ViewProviderCreateViewParams decode(bindings.Decoder decoder0) { |
| 35 if (decoder0 == null) { |
| 36 return null; |
| 37 } |
| 38 ViewProviderCreateViewParams result = new ViewProviderCreateViewParams(); |
| 39 |
| 40 var mainDataHeader = decoder0.decodeStructDataHeader(); |
| 41 if (mainDataHeader.version <= kVersions.last.version) { |
| 42 // Scan in reverse order to optimize for more recent versions. |
| 43 for (int i = kVersions.length - 1; i >= 0; --i) { |
| 44 if (mainDataHeader.version >= kVersions[i].version) { |
| 45 if (mainDataHeader.size == kVersions[i].size) { |
| 46 // Found a match. |
| 47 break; |
| 48 } |
| 49 throw new bindings.MojoCodecError( |
| 50 'Header size doesn\'t correspond to known version size.'); |
| 51 } |
| 52 } |
| 53 } else if (mainDataHeader.size < kVersions.last.size) { |
| 54 throw new bindings.MojoCodecError( |
| 55 'Message newer than the last known version cannot be shorter than ' |
| 56 'required by the last known version.'); |
| 57 } |
| 58 if (mainDataHeader.version >= 0) { |
| 59 |
| 60 result.services = decoder0.decodeInterfaceRequest(8, true, service_provide
r_mojom.ServiceProviderStub.newFromEndpoint); |
| 61 } |
| 62 if (mainDataHeader.version >= 0) { |
| 63 |
| 64 result.exposedServices = decoder0.decodeServiceInterface(12, true, service
_provider_mojom.ServiceProviderProxy.newFromEndpoint); |
| 65 } |
| 66 return result; |
| 67 } |
| 68 |
| 69 void encode(bindings.Encoder encoder) { |
| 70 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last); |
| 71 |
| 72 encoder0.encodeInterfaceRequest(services, 8, true); |
| 73 |
| 74 encoder0.encodeInterface(exposedServices, 12, true); |
| 75 } |
| 76 |
| 77 String toString() { |
| 78 return "ViewProviderCreateViewParams(" |
| 79 "services: $services" ", " |
| 80 "exposedServices: $exposedServices" ")"; |
| 81 } |
| 82 |
| 83 Map toJson() { |
| 84 throw new bindings.MojoCodecError( |
| 85 'Object containing handles cannot be encoded to JSON.'); |
| 86 } |
| 87 } |
| 88 |
| 89 |
| 90 class ViewProviderCreateViewResponseParams extends bindings.Struct { |
| 91 static const List<bindings.StructDataHeader> kVersions = const [ |
| 92 const bindings.StructDataHeader(16, 0) |
| 93 ]; |
| 94 views_mojom.ViewToken viewToken = null; |
| 95 |
| 96 ViewProviderCreateViewResponseParams() : super(kVersions.last.size); |
| 97 |
| 98 static ViewProviderCreateViewResponseParams deserialize(bindings.Message messa
ge) { |
| 99 var decoder = new bindings.Decoder(message); |
| 100 var result = decode(decoder); |
| 101 if (decoder.excessHandles != null) { |
| 102 decoder.excessHandles.forEach((h) => h.close()); |
| 103 } |
| 104 return result; |
| 105 } |
| 106 |
| 107 static ViewProviderCreateViewResponseParams decode(bindings.Decoder decoder0)
{ |
| 108 if (decoder0 == null) { |
| 109 return null; |
| 110 } |
| 111 ViewProviderCreateViewResponseParams result = new ViewProviderCreateViewResp
onseParams(); |
| 112 |
| 113 var mainDataHeader = decoder0.decodeStructDataHeader(); |
| 114 if (mainDataHeader.version <= kVersions.last.version) { |
| 115 // Scan in reverse order to optimize for more recent versions. |
| 116 for (int i = kVersions.length - 1; i >= 0; --i) { |
| 117 if (mainDataHeader.version >= kVersions[i].version) { |
| 118 if (mainDataHeader.size == kVersions[i].size) { |
| 119 // Found a match. |
| 120 break; |
| 121 } |
| 122 throw new bindings.MojoCodecError( |
| 123 'Header size doesn\'t correspond to known version size.'); |
| 124 } |
| 125 } |
| 126 } else if (mainDataHeader.size < kVersions.last.size) { |
| 127 throw new bindings.MojoCodecError( |
| 128 'Message newer than the last known version cannot be shorter than ' |
| 129 'required by the last known version.'); |
| 130 } |
| 131 if (mainDataHeader.version >= 0) { |
| 132 |
| 133 var decoder1 = decoder0.decodePointer(8, false); |
| 134 result.viewToken = views_mojom.ViewToken.decode(decoder1); |
| 135 } |
| 136 return result; |
| 137 } |
| 138 |
| 139 void encode(bindings.Encoder encoder) { |
| 140 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last); |
| 141 |
| 142 encoder0.encodeStruct(viewToken, 8, false); |
| 143 } |
| 144 |
| 145 String toString() { |
| 146 return "ViewProviderCreateViewResponseParams(" |
| 147 "viewToken: $viewToken" ")"; |
| 148 } |
| 149 |
| 150 Map toJson() { |
| 151 Map map = new Map(); |
| 152 map["viewToken"] = viewToken; |
| 153 return map; |
| 154 } |
| 155 } |
| 156 |
| 157 const int kViewProvider_createView_name = 0; |
| 158 |
| 159 const String ViewProviderName = |
| 160 'mojo::ui::ViewProvider'; |
| 161 |
| 162 abstract class ViewProvider { |
| 163 dynamic createView(Object services,Object exposedServices,[Function responseFa
ctory = null]); |
| 164 |
| 165 } |
| 166 |
| 167 |
| 168 class ViewProviderProxyImpl extends bindings.Proxy { |
| 169 ViewProviderProxyImpl.fromEndpoint( |
| 170 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint); |
| 171 |
| 172 ViewProviderProxyImpl.fromHandle(core.MojoHandle handle) : |
| 173 super.fromHandle(handle); |
| 174 |
| 175 ViewProviderProxyImpl.unbound() : super.unbound(); |
| 176 |
| 177 static ViewProviderProxyImpl newFromEndpoint( |
| 178 core.MojoMessagePipeEndpoint endpoint) { |
| 179 assert(endpoint.setDescription("For ViewProviderProxyImpl")); |
| 180 return new ViewProviderProxyImpl.fromEndpoint(endpoint); |
| 181 } |
| 182 |
| 183 String get name => ViewProviderName; |
| 184 |
| 185 void handleResponse(bindings.ServiceMessage message) { |
| 186 switch (message.header.type) { |
| 187 case kViewProvider_createView_name: |
| 188 var r = ViewProviderCreateViewResponseParams.deserialize( |
| 189 message.payload); |
| 190 if (!message.header.hasRequestId) { |
| 191 proxyError("Expected a message with a valid request Id."); |
| 192 return; |
| 193 } |
| 194 Completer c = completerMap[message.header.requestId]; |
| 195 if (c == null) { |
| 196 proxyError( |
| 197 "Message had unknown request Id: ${message.header.requestId}"); |
| 198 return; |
| 199 } |
| 200 completerMap.remove(message.header.requestId); |
| 201 if (c.isCompleted) { |
| 202 proxyError("Response completer already completed"); |
| 203 return; |
| 204 } |
| 205 c.complete(r); |
| 206 break; |
| 207 default: |
| 208 proxyError("Unexpected message type: ${message.header.type}"); |
| 209 close(immediate: true); |
| 210 break; |
| 211 } |
| 212 } |
| 213 |
| 214 String toString() { |
| 215 var superString = super.toString(); |
| 216 return "ViewProviderProxyImpl($superString)"; |
| 217 } |
| 218 } |
| 219 |
| 220 |
| 221 class _ViewProviderProxyCalls implements ViewProvider { |
| 222 ViewProviderProxyImpl _proxyImpl; |
| 223 |
| 224 _ViewProviderProxyCalls(this._proxyImpl); |
| 225 dynamic createView(Object services,Object exposedServices,[Function response
Factory = null]) { |
| 226 var params = new ViewProviderCreateViewParams(); |
| 227 params.services = services; |
| 228 params.exposedServices = exposedServices; |
| 229 return _proxyImpl.sendMessageWithRequestId( |
| 230 params, |
| 231 kViewProvider_createView_name, |
| 232 -1, |
| 233 bindings.MessageHeader.kMessageExpectsResponse); |
| 234 } |
| 235 } |
| 236 |
| 237 |
| 238 class ViewProviderProxy implements bindings.ProxyBase { |
| 239 final bindings.Proxy impl; |
| 240 ViewProvider ptr; |
| 241 final String name = ViewProviderName; |
| 242 |
| 243 ViewProviderProxy(ViewProviderProxyImpl proxyImpl) : |
| 244 impl = proxyImpl, |
| 245 ptr = new _ViewProviderProxyCalls(proxyImpl); |
| 246 |
| 247 ViewProviderProxy.fromEndpoint( |
| 248 core.MojoMessagePipeEndpoint endpoint) : |
| 249 impl = new ViewProviderProxyImpl.fromEndpoint(endpoint) { |
| 250 ptr = new _ViewProviderProxyCalls(impl); |
| 251 } |
| 252 |
| 253 ViewProviderProxy.fromHandle(core.MojoHandle handle) : |
| 254 impl = new ViewProviderProxyImpl.fromHandle(handle) { |
| 255 ptr = new _ViewProviderProxyCalls(impl); |
| 256 } |
| 257 |
| 258 ViewProviderProxy.unbound() : |
| 259 impl = new ViewProviderProxyImpl.unbound() { |
| 260 ptr = new _ViewProviderProxyCalls(impl); |
| 261 } |
| 262 |
| 263 factory ViewProviderProxy.connectToService( |
| 264 bindings.ServiceConnector s, String url) { |
| 265 ViewProviderProxy p = new ViewProviderProxy.unbound(); |
| 266 s.connectToService(url, p); |
| 267 return p; |
| 268 } |
| 269 |
| 270 static ViewProviderProxy newFromEndpoint( |
| 271 core.MojoMessagePipeEndpoint endpoint) { |
| 272 assert(endpoint.setDescription("For ViewProviderProxy")); |
| 273 return new ViewProviderProxy.fromEndpoint(endpoint); |
| 274 } |
| 275 |
| 276 Future close({bool immediate: false}) => impl.close(immediate: immediate); |
| 277 |
| 278 Future responseOrError(Future f) => impl.responseOrError(f); |
| 279 |
| 280 Future get errorFuture => impl.errorFuture; |
| 281 |
| 282 int get version => impl.version; |
| 283 |
| 284 Future<int> queryVersion() => impl.queryVersion(); |
| 285 |
| 286 void requireVersion(int requiredVersion) { |
| 287 impl.requireVersion(requiredVersion); |
| 288 } |
| 289 |
| 290 String toString() { |
| 291 return "ViewProviderProxy($impl)"; |
| 292 } |
| 293 } |
| 294 |
| 295 |
| 296 class ViewProviderStub extends bindings.Stub { |
| 297 ViewProvider _impl = null; |
| 298 |
| 299 ViewProviderStub.fromEndpoint( |
| 300 core.MojoMessagePipeEndpoint endpoint, [this._impl]) |
| 301 : super.fromEndpoint(endpoint); |
| 302 |
| 303 ViewProviderStub.fromHandle(core.MojoHandle handle, [this._impl]) |
| 304 : super.fromHandle(handle); |
| 305 |
| 306 ViewProviderStub.unbound() : super.unbound(); |
| 307 |
| 308 static ViewProviderStub newFromEndpoint( |
| 309 core.MojoMessagePipeEndpoint endpoint) { |
| 310 assert(endpoint.setDescription("For ViewProviderStub")); |
| 311 return new ViewProviderStub.fromEndpoint(endpoint); |
| 312 } |
| 313 |
| 314 static const String name = ViewProviderName; |
| 315 |
| 316 |
| 317 ViewProviderCreateViewResponseParams _ViewProviderCreateViewResponseParamsFact
ory(views_mojom.ViewToken viewToken) { |
| 318 var result = new ViewProviderCreateViewResponseParams(); |
| 319 result.viewToken = viewToken; |
| 320 return result; |
| 321 } |
| 322 |
| 323 dynamic handleMessage(bindings.ServiceMessage message) { |
| 324 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
| 325 return bindings.ControlMessageHandler.handleMessage(this, |
| 326 0, |
| 327 message); |
| 328 } |
| 329 assert(_impl != null); |
| 330 switch (message.header.type) { |
| 331 case kViewProvider_createView_name: |
| 332 var params = ViewProviderCreateViewParams.deserialize( |
| 333 message.payload); |
| 334 var response = _impl.createView(params.services,params.exposedServices,_
ViewProviderCreateViewResponseParamsFactory); |
| 335 if (response is Future) { |
| 336 return response.then((response) { |
| 337 if (response != null) { |
| 338 return buildResponseWithId( |
| 339 response, |
| 340 kViewProvider_createView_name, |
| 341 message.header.requestId, |
| 342 bindings.MessageHeader.kMessageIsResponse); |
| 343 } |
| 344 }); |
| 345 } else if (response != null) { |
| 346 return buildResponseWithId( |
| 347 response, |
| 348 kViewProvider_createView_name, |
| 349 message.header.requestId, |
| 350 bindings.MessageHeader.kMessageIsResponse); |
| 351 } |
| 352 break; |
| 353 default: |
| 354 throw new bindings.MojoCodecError("Unexpected message name"); |
| 355 break; |
| 356 } |
| 357 return null; |
| 358 } |
| 359 |
| 360 ViewProvider get impl => _impl; |
| 361 set impl(ViewProvider d) { |
| 362 assert(_impl == null); |
| 363 _impl = d; |
| 364 } |
| 365 |
| 366 String toString() { |
| 367 var superString = super.toString(); |
| 368 return "ViewProviderStub($superString)"; |
| 369 } |
| 370 |
| 371 int get version => 0; |
| 372 } |
| 373 |
| 374 |
OLD | NEW |