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

Side by Side Diff: mojo/dart/packages/mojo_services/lib/mojo/gfx/composition/scheduling.mojom.dart

Issue 2006093002: Dart: Futures -> Callbacks. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Cleanup Created 4 years, 6 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
OLDNEW
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 scheduling_mojom; 5 library scheduling_mojom;
6 import 'dart:async'; 6 import 'dart:async';
7 import 'package:mojo/bindings.dart' as bindings; 7 import 'package:mojo/bindings.dart' as bindings;
8 import 'package:mojo/core.dart' as core; 8 import 'package:mojo/core.dart' as core;
9 import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as servic e_describer; 9 import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart' as servic e_describer;
10 10
11 11
12 12
13 class FrameInfo extends bindings.Struct { 13 class FrameInfo extends bindings.Struct {
14 static const List<bindings.StructDataHeader> kVersions = const [ 14 static const List<bindings.StructDataHeader> kVersions = const [
15 const bindings.StructDataHeader(40, 0) 15 const bindings.StructDataHeader(40, 0)
16 ]; 16 ];
17 int frameTime = 0; 17 int frameTime = 0;
18 int frameInterval = 0; 18 int frameInterval = 0;
19 int frameDeadline = 0; 19 int frameDeadline = 0;
20 int presentationTime = 0; 20 int presentationTime = 0;
21 21
22 FrameInfo() : super(kVersions.last.size); 22 FrameInfo() : super(kVersions.last.size);
23 23
24 FrameInfo.init(
25 int this.frameTime,
26 int this.frameInterval,
27 int this.frameDeadline,
28 int this.presentationTime
29 ) : super(kVersions.last.size);
30
24 static FrameInfo deserialize(bindings.Message message) { 31 static FrameInfo deserialize(bindings.Message message) {
25 var decoder = new bindings.Decoder(message); 32 var decoder = new bindings.Decoder(message);
26 var result = decode(decoder); 33 var result = decode(decoder);
27 if (decoder.excessHandles != null) { 34 if (decoder.excessHandles != null) {
28 decoder.excessHandles.forEach((h) => h.close()); 35 decoder.excessHandles.forEach((h) => h.close());
29 } 36 }
30 return result; 37 return result;
31 } 38 }
32 39
33 static FrameInfo decode(bindings.Decoder decoder0) { 40 static FrameInfo decode(bindings.Decoder decoder0) {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 } 131 }
125 132
126 133
127 class _FrameSchedulerScheduleFrameParams extends bindings.Struct { 134 class _FrameSchedulerScheduleFrameParams extends bindings.Struct {
128 static const List<bindings.StructDataHeader> kVersions = const [ 135 static const List<bindings.StructDataHeader> kVersions = const [
129 const bindings.StructDataHeader(8, 0) 136 const bindings.StructDataHeader(8, 0)
130 ]; 137 ];
131 138
132 _FrameSchedulerScheduleFrameParams() : super(kVersions.last.size); 139 _FrameSchedulerScheduleFrameParams() : super(kVersions.last.size);
133 140
141 _FrameSchedulerScheduleFrameParams.init(
142 ) : super(kVersions.last.size);
143
134 static _FrameSchedulerScheduleFrameParams deserialize(bindings.Message message ) { 144 static _FrameSchedulerScheduleFrameParams deserialize(bindings.Message message ) {
135 var decoder = new bindings.Decoder(message); 145 var decoder = new bindings.Decoder(message);
136 var result = decode(decoder); 146 var result = decode(decoder);
137 if (decoder.excessHandles != null) { 147 if (decoder.excessHandles != null) {
138 decoder.excessHandles.forEach((h) => h.close()); 148 decoder.excessHandles.forEach((h) => h.close());
139 } 149 }
140 return result; 150 return result;
141 } 151 }
142 152
143 static _FrameSchedulerScheduleFrameParams decode(bindings.Decoder decoder0) { 153 static _FrameSchedulerScheduleFrameParams decode(bindings.Decoder decoder0) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 193
184 194
185 class FrameSchedulerScheduleFrameResponseParams extends bindings.Struct { 195 class FrameSchedulerScheduleFrameResponseParams extends bindings.Struct {
186 static const List<bindings.StructDataHeader> kVersions = const [ 196 static const List<bindings.StructDataHeader> kVersions = const [
187 const bindings.StructDataHeader(16, 0) 197 const bindings.StructDataHeader(16, 0)
188 ]; 198 ];
189 FrameInfo frameInfo = null; 199 FrameInfo frameInfo = null;
190 200
191 FrameSchedulerScheduleFrameResponseParams() : super(kVersions.last.size); 201 FrameSchedulerScheduleFrameResponseParams() : super(kVersions.last.size);
192 202
203 FrameSchedulerScheduleFrameResponseParams.init(
204 FrameInfo this.frameInfo
205 ) : super(kVersions.last.size);
206
193 static FrameSchedulerScheduleFrameResponseParams deserialize(bindings.Message message) { 207 static FrameSchedulerScheduleFrameResponseParams deserialize(bindings.Message message) {
194 var decoder = new bindings.Decoder(message); 208 var decoder = new bindings.Decoder(message);
195 var result = decode(decoder); 209 var result = decode(decoder);
196 if (decoder.excessHandles != null) { 210 if (decoder.excessHandles != null) {
197 decoder.excessHandles.forEach((h) => h.close()); 211 decoder.excessHandles.forEach((h) => h.close());
198 } 212 }
199 return result; 213 return result;
200 } 214 }
201 215
202 static FrameSchedulerScheduleFrameResponseParams decode(bindings.Decoder decod er0) { 216 static FrameSchedulerScheduleFrameResponseParams decode(bindings.Decoder decod er0) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 Map toJson() { 264 Map toJson() {
251 Map map = new Map(); 265 Map map = new Map();
252 map["frameInfo"] = frameInfo; 266 map["frameInfo"] = frameInfo;
253 return map; 267 return map;
254 } 268 }
255 } 269 }
256 270
257 const int _frameSchedulerMethodScheduleFrameName = 0; 271 const int _frameSchedulerMethodScheduleFrameName = 0;
258 272
259 class _FrameSchedulerServiceDescription implements service_describer.ServiceDesc ription { 273 class _FrameSchedulerServiceDescription implements service_describer.ServiceDesc ription {
260 dynamic getTopLevelInterface([Function responseFactory]) => 274 void getTopLevelInterface(Function responder) {
261 responseFactory(null); 275 responder(null);
276 }
262 277
263 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => 278 void getTypeDefinition(String typeKey, Function responder) {
264 responseFactory(null); 279 responder(null);
280 }
265 281
266 dynamic getAllTypeDefinitions([Function responseFactory]) => 282 void getAllTypeDefinitions(Function responder) {
267 responseFactory(null); 283 responder(null);
284 }
268 } 285 }
269 286
270 abstract class FrameScheduler { 287 abstract class FrameScheduler {
271 static const String serviceName = null; 288 static const String serviceName = null;
272 289
273 static service_describer.ServiceDescription _cachedServiceDescription; 290 static service_describer.ServiceDescription _cachedServiceDescription;
274 static service_describer.ServiceDescription get serviceDescription { 291 static service_describer.ServiceDescription get serviceDescription {
275 if (_cachedServiceDescription == null) { 292 if (_cachedServiceDescription == null) {
276 _cachedServiceDescription = new _FrameSchedulerServiceDescription(); 293 _cachedServiceDescription = new _FrameSchedulerServiceDescription();
277 } 294 }
278 return _cachedServiceDescription; 295 return _cachedServiceDescription;
279 } 296 }
280 297
281 static FrameSchedulerProxy connectToService( 298 static FrameSchedulerProxy connectToService(
282 bindings.ServiceConnector s, String url, [String serviceName]) { 299 bindings.ServiceConnector s, String url, [String serviceName]) {
283 FrameSchedulerProxy p = new FrameSchedulerProxy.unbound(); 300 FrameSchedulerProxy p = new FrameSchedulerProxy.unbound();
284 String name = serviceName ?? FrameScheduler.serviceName; 301 String name = serviceName ?? FrameScheduler.serviceName;
285 if ((name == null) || name.isEmpty) { 302 if ((name == null) || name.isEmpty) {
286 throw new core.MojoApiError( 303 throw new core.MojoApiError(
287 "If an interface has no ServiceName, then one must be provided."); 304 "If an interface has no ServiceName, then one must be provided.");
288 } 305 }
289 s.connectToService(url, p, name); 306 s.connectToService(url, p, name);
290 return p; 307 return p;
291 } 308 }
292 dynamic scheduleFrame([Function responseFactory = null]); 309 void scheduleFrame(void callback(FrameInfo frameInfo));
293 } 310 }
294 311
295 abstract class FrameSchedulerInterface 312 abstract class FrameSchedulerInterface
296 implements bindings.MojoInterface<FrameScheduler>, 313 implements bindings.MojoInterface<FrameScheduler>,
297 FrameScheduler { 314 FrameScheduler {
298 factory FrameSchedulerInterface([FrameScheduler impl]) => 315 factory FrameSchedulerInterface([FrameScheduler impl]) =>
299 new FrameSchedulerStub.unbound(impl); 316 new FrameSchedulerStub.unbound(impl);
300 317
301 factory FrameSchedulerInterface.fromEndpoint( 318 factory FrameSchedulerInterface.fromEndpoint(
302 core.MojoMessagePipeEndpoint endpoint, 319 core.MojoMessagePipeEndpoint endpoint,
(...skipping 29 matching lines...) Expand all
332 349
333 void handleResponse(bindings.ServiceMessage message) { 350 void handleResponse(bindings.ServiceMessage message) {
334 switch (message.header.type) { 351 switch (message.header.type) {
335 case _frameSchedulerMethodScheduleFrameName: 352 case _frameSchedulerMethodScheduleFrameName:
336 var r = FrameSchedulerScheduleFrameResponseParams.deserialize( 353 var r = FrameSchedulerScheduleFrameResponseParams.deserialize(
337 message.payload); 354 message.payload);
338 if (!message.header.hasRequestId) { 355 if (!message.header.hasRequestId) {
339 proxyError("Expected a message with a valid request Id."); 356 proxyError("Expected a message with a valid request Id.");
340 return; 357 return;
341 } 358 }
342 Completer c = completerMap[message.header.requestId]; 359 Function callback = callbackMap[message.header.requestId];
343 if (c == null) { 360 if (callback == null) {
344 proxyError( 361 proxyError(
345 "Message had unknown request Id: ${message.header.requestId}"); 362 "Message had unknown request Id: ${message.header.requestId}");
346 return; 363 return;
347 } 364 }
348 completerMap.remove(message.header.requestId); 365 callbackMap.remove(message.header.requestId);
349 if (c.isCompleted) { 366 callback(r.frameInfo );
350 proxyError("Response completer already completed");
351 return;
352 }
353 c.complete(r);
354 break; 367 break;
355 default: 368 default:
356 proxyError("Unexpected message type: ${message.header.type}"); 369 proxyError("Unexpected message type: ${message.header.type}");
357 close(immediate: true); 370 close(immediate: true);
358 break; 371 break;
359 } 372 }
360 } 373 }
361 374
362 @override 375 @override
363 String toString() { 376 String toString() {
(...skipping 24 matching lines...) Expand all
388 return newMockedProxy; 401 return newMockedProxy;
389 } 402 }
390 403
391 static FrameSchedulerProxy newFromEndpoint( 404 static FrameSchedulerProxy newFromEndpoint(
392 core.MojoMessagePipeEndpoint endpoint) { 405 core.MojoMessagePipeEndpoint endpoint) {
393 assert(endpoint.setDescription("For FrameSchedulerProxy")); 406 assert(endpoint.setDescription("For FrameSchedulerProxy"));
394 return new FrameSchedulerProxy.fromEndpoint(endpoint); 407 return new FrameSchedulerProxy.fromEndpoint(endpoint);
395 } 408 }
396 409
397 410
398 dynamic scheduleFrame([Function responseFactory = null]) { 411 void scheduleFrame(void callback(FrameInfo frameInfo)) {
399 if (impl != null) { 412 if (impl != null) {
400 return new Future(() => impl.scheduleFrame(_FrameSchedulerStubControl._fra meSchedulerScheduleFrameResponseParamsFactory)); 413 impl.scheduleFrame(callback);
414 return;
401 } 415 }
402 var params = new _FrameSchedulerScheduleFrameParams(); 416 var params = new _FrameSchedulerScheduleFrameParams();
403 return ctrl.sendMessageWithRequestId( 417 ctrl.sendMessageWithRequestId(
404 params, 418 params,
405 _frameSchedulerMethodScheduleFrameName, 419 _frameSchedulerMethodScheduleFrameName,
406 -1, 420 -1,
407 bindings.MessageHeader.kMessageExpectsResponse); 421 bindings.MessageHeader.kMessageExpectsResponse,
422 callback);
408 } 423 }
409 } 424 }
410 425
411 class _FrameSchedulerStubControl 426 class _FrameSchedulerStubControl
412 extends bindings.StubMessageHandler 427 extends bindings.StubMessageHandler
413 implements bindings.StubControl<FrameScheduler> { 428 implements bindings.StubControl<FrameScheduler> {
414 FrameScheduler _impl; 429 FrameScheduler _impl;
415 430
416 _FrameSchedulerStubControl.fromEndpoint( 431 _FrameSchedulerStubControl.fromEndpoint(
417 core.MojoMessagePipeEndpoint endpoint, [FrameScheduler impl]) 432 core.MojoMessagePipeEndpoint endpoint, [FrameScheduler impl])
418 : super.fromEndpoint(endpoint, autoBegin: impl != null) { 433 : super.fromEndpoint(endpoint, autoBegin: impl != null) {
419 _impl = impl; 434 _impl = impl;
420 } 435 }
421 436
422 _FrameSchedulerStubControl.fromHandle( 437 _FrameSchedulerStubControl.fromHandle(
423 core.MojoHandle handle, [FrameScheduler impl]) 438 core.MojoHandle handle, [FrameScheduler impl])
424 : super.fromHandle(handle, autoBegin: impl != null) { 439 : super.fromHandle(handle, autoBegin: impl != null) {
425 _impl = impl; 440 _impl = impl;
426 } 441 }
427 442
428 _FrameSchedulerStubControl.unbound([this._impl]) : super.unbound(); 443 _FrameSchedulerStubControl.unbound([this._impl]) : super.unbound();
429 444
430 String get serviceName => FrameScheduler.serviceName; 445 String get serviceName => FrameScheduler.serviceName;
431 446
432 447
433 static FrameSchedulerScheduleFrameResponseParams _frameSchedulerScheduleFrameR esponseParamsFactory(FrameInfo frameInfo) { 448 Function _frameSchedulerScheduleFrameResponseParamsResponder(
434 var result = new FrameSchedulerScheduleFrameResponseParams(); 449 int requestId) {
435 result.frameInfo = frameInfo; 450 return (FrameInfo frameInfo) {
436 return result; 451 var result = new FrameSchedulerScheduleFrameResponseParams();
452 result.frameInfo = frameInfo;
453 sendResponse(buildResponseWithId(
454 result,
455 _frameSchedulerMethodScheduleFrameName,
456 requestId,
457 bindings.MessageHeader.kMessageIsResponse));
458 };
437 } 459 }
438 460
439 dynamic handleMessage(bindings.ServiceMessage message) { 461 void handleMessage(bindings.ServiceMessage message) {
440 if (bindings.ControlMessageHandler.isControlMessage(message)) { 462 if (bindings.ControlMessageHandler.isControlMessage(message)) {
441 return bindings.ControlMessageHandler.handleMessage(this, 463 bindings.ControlMessageHandler.handleMessage(
442 0, 464 this, 0, message);
443 message); 465 return;
444 } 466 }
445 if (_impl == null) { 467 if (_impl == null) {
446 throw new core.MojoApiError("$this has no implementation set"); 468 throw new core.MojoApiError("$this has no implementation set");
447 } 469 }
448 switch (message.header.type) { 470 switch (message.header.type) {
449 case _frameSchedulerMethodScheduleFrameName: 471 case _frameSchedulerMethodScheduleFrameName:
450 var response = _impl.scheduleFrame(_frameSchedulerScheduleFrameResponseP aramsFactory); 472 _impl.scheduleFrame(_frameSchedulerScheduleFrameResponseParamsResponder( message.header.requestId));
451 if (response is Future) {
452 return response.then((response) {
453 if (response != null) {
454 return buildResponseWithId(
455 response,
456 _frameSchedulerMethodScheduleFrameName,
457 message.header.requestId,
458 bindings.MessageHeader.kMessageIsResponse);
459 }
460 });
461 } else if (response != null) {
462 return buildResponseWithId(
463 response,
464 _frameSchedulerMethodScheduleFrameName,
465 message.header.requestId,
466 bindings.MessageHeader.kMessageIsResponse);
467 }
468 break; 473 break;
469 default: 474 default:
470 throw new bindings.MojoCodecError("Unexpected message name"); 475 throw new bindings.MojoCodecError("Unexpected message name");
471 break; 476 break;
472 } 477 }
473 return null;
474 } 478 }
475 479
476 FrameScheduler get impl => _impl; 480 FrameScheduler get impl => _impl;
477 set impl(FrameScheduler d) { 481 set impl(FrameScheduler d) {
478 if (d == null) { 482 if (d == null) {
479 throw new core.MojoApiError("$this: Cannot set a null implementation"); 483 throw new core.MojoApiError("$this: Cannot set a null implementation");
480 } 484 }
481 if (isBound && (_impl == null)) { 485 if (isBound && (_impl == null)) {
482 beginHandlingEvents(); 486 beginHandlingEvents();
483 } 487 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 core.MojoHandle handle, [FrameScheduler impl]) 521 core.MojoHandle handle, [FrameScheduler impl])
518 : super(new _FrameSchedulerStubControl.fromHandle(handle, impl)); 522 : super(new _FrameSchedulerStubControl.fromHandle(handle, impl));
519 523
520 static FrameSchedulerStub newFromEndpoint( 524 static FrameSchedulerStub newFromEndpoint(
521 core.MojoMessagePipeEndpoint endpoint) { 525 core.MojoMessagePipeEndpoint endpoint) {
522 assert(endpoint.setDescription("For FrameSchedulerStub")); 526 assert(endpoint.setDescription("For FrameSchedulerStub"));
523 return new FrameSchedulerStub.fromEndpoint(endpoint); 527 return new FrameSchedulerStub.fromEndpoint(endpoint);
524 } 528 }
525 529
526 530
527 dynamic scheduleFrame([Function responseFactory = null]) { 531 void scheduleFrame(void callback(FrameInfo frameInfo)) {
528 return impl.scheduleFrame(responseFactory); 532 return impl.scheduleFrame(callback);
529 } 533 }
530 } 534 }
531 535
532 536
533 537
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698