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

Side by Side Diff: mojo/dart/packages/mojo_services/lib/mojo/media/media_pipe.mojom.dart

Issue 1694963002: Change who allocated the MediaPipe's shared buffer. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix android trybots Created 4 years, 10 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 media_pipe_mojom; 5 library media_pipe_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;
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 map["endOfStream"] = endOfStream; 245 map["endOfStream"] = endOfStream;
246 map["payload"] = payload; 246 map["payload"] = payload;
247 map["extraPayload"] = extraPayload; 247 map["extraPayload"] = extraPayload;
248 return map; 248 return map;
249 } 249 }
250 } 250 }
251 251
252 252
253 253
254 254
255 class MediaPipeState extends bindings.Struct { 255 class _MediaPipeSetBufferParams extends bindings.Struct {
256 static const List<bindings.StructDataHeader> kVersions = const [ 256 static const List<bindings.StructDataHeader> kVersions = const [
257 const bindings.StructDataHeader(24, 0) 257 const bindings.StructDataHeader(24, 0)
258 ]; 258 ];
259 static const int kMaxPayloadLen = 4611686018427387903; 259 core.MojoSharedBuffer buffer = null;
260 core.MojoSharedBuffer payloadBuffer = null; 260 int size = 0;
261 int payloadBufferLen = 0;
262 261
263 MediaPipeState() : super(kVersions.last.size); 262 _MediaPipeSetBufferParams() : super(kVersions.last.size);
264 263
265 static MediaPipeState deserialize(bindings.Message message) { 264 static _MediaPipeSetBufferParams deserialize(bindings.Message message) {
266 var decoder = new bindings.Decoder(message); 265 var decoder = new bindings.Decoder(message);
267 var result = decode(decoder); 266 var result = decode(decoder);
268 if (decoder.excessHandles != null) { 267 if (decoder.excessHandles != null) {
269 decoder.excessHandles.forEach((h) => h.close()); 268 decoder.excessHandles.forEach((h) => h.close());
270 } 269 }
271 return result; 270 return result;
272 } 271 }
273 272
274 static MediaPipeState decode(bindings.Decoder decoder0) { 273 static _MediaPipeSetBufferParams decode(bindings.Decoder decoder0) {
275 if (decoder0 == null) { 274 if (decoder0 == null) {
276 return null; 275 return null;
277 } 276 }
278 MediaPipeState result = new MediaPipeState(); 277 _MediaPipeSetBufferParams result = new _MediaPipeSetBufferParams();
279 278
280 var mainDataHeader = decoder0.decodeStructDataHeader(); 279 var mainDataHeader = decoder0.decodeStructDataHeader();
281 if (mainDataHeader.version <= kVersions.last.version) { 280 if (mainDataHeader.version <= kVersions.last.version) {
282 // Scan in reverse order to optimize for more recent versions. 281 // Scan in reverse order to optimize for more recent versions.
283 for (int i = kVersions.length - 1; i >= 0; --i) { 282 for (int i = kVersions.length - 1; i >= 0; --i) {
284 if (mainDataHeader.version >= kVersions[i].version) { 283 if (mainDataHeader.version >= kVersions[i].version) {
285 if (mainDataHeader.size == kVersions[i].size) { 284 if (mainDataHeader.size == kVersions[i].size) {
286 // Found a match. 285 // Found a match.
287 break; 286 break;
288 } 287 }
289 throw new bindings.MojoCodecError( 288 throw new bindings.MojoCodecError(
290 'Header size doesn\'t correspond to known version size.'); 289 'Header size doesn\'t correspond to known version size.');
291 } 290 }
292 } 291 }
293 } else if (mainDataHeader.size < kVersions.last.size) { 292 } else if (mainDataHeader.size < kVersions.last.size) {
294 throw new bindings.MojoCodecError( 293 throw new bindings.MojoCodecError(
295 'Message newer than the last known version cannot be shorter than ' 294 'Message newer than the last known version cannot be shorter than '
296 'required by the last known version.'); 295 'required by the last known version.');
297 } 296 }
298 if (mainDataHeader.version >= 0) { 297 if (mainDataHeader.version >= 0) {
299 298
300 result.payloadBuffer = decoder0.decodeSharedBufferHandle(8, false); 299 result.buffer = decoder0.decodeSharedBufferHandle(8, false);
301 } 300 }
302 if (mainDataHeader.version >= 0) { 301 if (mainDataHeader.version >= 0) {
303 302
304 result.payloadBufferLen = decoder0.decodeUint64(16); 303 result.size = decoder0.decodeUint64(16);
305 } 304 }
306 return result; 305 return result;
307 } 306 }
308 307
309 void encode(bindings.Encoder encoder) { 308 void encode(bindings.Encoder encoder) {
310 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last); 309 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
311 try { 310 try {
312 encoder0.encodeSharedBufferHandle(payloadBuffer, 8, false); 311 encoder0.encodeSharedBufferHandle(buffer, 8, false);
313 } on bindings.MojoCodecError catch(e) { 312 } on bindings.MojoCodecError catch(e) {
314 e.message = "Error encountered while encoding field " 313 e.message = "Error encountered while encoding field "
315 "payloadBuffer of struct MediaPipeState: $e"; 314 "buffer of struct _MediaPipeSetBufferParams: $e";
316 rethrow; 315 rethrow;
317 } 316 }
318 try { 317 try {
319 encoder0.encodeUint64(payloadBufferLen, 16); 318 encoder0.encodeUint64(size, 16);
320 } on bindings.MojoCodecError catch(e) { 319 } on bindings.MojoCodecError catch(e) {
321 e.message = "Error encountered while encoding field " 320 e.message = "Error encountered while encoding field "
322 "payloadBufferLen of struct MediaPipeState: $e"; 321 "size of struct _MediaPipeSetBufferParams: $e";
323 rethrow; 322 rethrow;
324 } 323 }
325 } 324 }
326 325
327 String toString() { 326 String toString() {
328 return "MediaPipeState(" 327 return "_MediaPipeSetBufferParams("
329 "payloadBuffer: $payloadBuffer" ", " 328 "buffer: $buffer" ", "
330 "payloadBufferLen: $payloadBufferLen" ")"; 329 "size: $size" ")";
331 } 330 }
332 331
333 Map toJson() { 332 Map toJson() {
334 throw new bindings.MojoCodecError(
335 'Object containing handles cannot be encoded to JSON.');
336 }
337 }
338
339
340
341
342 class _MediaPipeGetStateParams extends bindings.Struct {
343 static const List<bindings.StructDataHeader> kVersions = const [
344 const bindings.StructDataHeader(8, 0)
345 ];
346
347 _MediaPipeGetStateParams() : super(kVersions.last.size);
348
349 static _MediaPipeGetStateParams deserialize(bindings.Message message) {
350 var decoder = new bindings.Decoder(message);
351 var result = decode(decoder);
352 if (decoder.excessHandles != null) {
353 decoder.excessHandles.forEach((h) => h.close());
354 }
355 return result;
356 }
357
358 static _MediaPipeGetStateParams decode(bindings.Decoder decoder0) {
359 if (decoder0 == null) {
360 return null;
361 }
362 _MediaPipeGetStateParams result = new _MediaPipeGetStateParams();
363
364 var mainDataHeader = decoder0.decodeStructDataHeader();
365 if (mainDataHeader.version <= kVersions.last.version) {
366 // Scan in reverse order to optimize for more recent versions.
367 for (int i = kVersions.length - 1; i >= 0; --i) {
368 if (mainDataHeader.version >= kVersions[i].version) {
369 if (mainDataHeader.size == kVersions[i].size) {
370 // Found a match.
371 break;
372 }
373 throw new bindings.MojoCodecError(
374 'Header size doesn\'t correspond to known version size.');
375 }
376 }
377 } else if (mainDataHeader.size < kVersions.last.size) {
378 throw new bindings.MojoCodecError(
379 'Message newer than the last known version cannot be shorter than '
380 'required by the last known version.');
381 }
382 return result;
383 }
384
385 void encode(bindings.Encoder encoder) {
386 encoder.getStructEncoderAtOffset(kVersions.last);
387 }
388
389 String toString() {
390 return "_MediaPipeGetStateParams("")";
391 }
392
393 Map toJson() {
394 Map map = new Map();
395 return map;
396 }
397 }
398
399
400
401
402 class MediaPipeGetStateResponseParams extends bindings.Struct {
403 static const List<bindings.StructDataHeader> kVersions = const [
404 const bindings.StructDataHeader(16, 0)
405 ];
406 MediaPipeState state = null;
407
408 MediaPipeGetStateResponseParams() : super(kVersions.last.size);
409
410 static MediaPipeGetStateResponseParams deserialize(bindings.Message message) {
411 var decoder = new bindings.Decoder(message);
412 var result = decode(decoder);
413 if (decoder.excessHandles != null) {
414 decoder.excessHandles.forEach((h) => h.close());
415 }
416 return result;
417 }
418
419 static MediaPipeGetStateResponseParams decode(bindings.Decoder decoder0) {
420 if (decoder0 == null) {
421 return null;
422 }
423 MediaPipeGetStateResponseParams result = new MediaPipeGetStateResponseParams ();
424
425 var mainDataHeader = decoder0.decodeStructDataHeader();
426 if (mainDataHeader.version <= kVersions.last.version) {
427 // Scan in reverse order to optimize for more recent versions.
428 for (int i = kVersions.length - 1; i >= 0; --i) {
429 if (mainDataHeader.version >= kVersions[i].version) {
430 if (mainDataHeader.size == kVersions[i].size) {
431 // Found a match.
432 break;
433 }
434 throw new bindings.MojoCodecError(
435 'Header size doesn\'t correspond to known version size.');
436 }
437 }
438 } else if (mainDataHeader.size < kVersions.last.size) {
439 throw new bindings.MojoCodecError(
440 'Message newer than the last known version cannot be shorter than '
441 'required by the last known version.');
442 }
443 if (mainDataHeader.version >= 0) {
444
445 var decoder1 = decoder0.decodePointer(8, false);
446 result.state = MediaPipeState.decode(decoder1);
447 }
448 return result;
449 }
450
451 void encode(bindings.Encoder encoder) {
452 var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
453 try {
454 encoder0.encodeStruct(state, 8, false);
455 } on bindings.MojoCodecError catch(e) {
456 e.message = "Error encountered while encoding field "
457 "state of struct MediaPipeGetStateResponseParams: $e";
458 rethrow;
459 }
460 }
461
462 String toString() {
463 return "MediaPipeGetStateResponseParams("
464 "state: $state" ")";
465 }
466
467 Map toJson() {
468 throw new bindings.MojoCodecError( 333 throw new bindings.MojoCodecError(
469 'Object containing handles cannot be encoded to JSON.'); 334 'Object containing handles cannot be encoded to JSON.');
470 } 335 }
471 } 336 }
472 337
473 338
474 339
475 340
476 class _MediaPipeSendPacketParams extends bindings.Struct { 341 class _MediaPipeSendPacketParams extends bindings.Struct {
477 static const List<bindings.StructDataHeader> kVersions = const [ 342 static const List<bindings.StructDataHeader> kVersions = const [
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
739 604
740 Map toJson() { 605 Map toJson() {
741 Map map = new Map(); 606 Map map = new Map();
742 return map; 607 return map;
743 } 608 }
744 } 609 }
745 610
746 611
747 612
748 613
749 const int _MediaPipe_getStateName = 0; 614 const int _MediaPipe_setBufferName = 0;
750 const int _MediaPipe_sendPacketName = 1; 615 const int _MediaPipe_sendPacketName = 1;
751 const int _MediaPipe_flushName = 2; 616 const int _MediaPipe_flushName = 2;
752 617
753 class MediaPipeSendResult extends bindings.MojoEnum { 618 class MediaPipeSendResult extends bindings.MojoEnum {
754 static const MediaPipeSendResult consumed = const MediaPipeSendResult._(0); 619 static const MediaPipeSendResult consumed = const MediaPipeSendResult._(0);
755 static const MediaPipeSendResult flushed = const MediaPipeSendResult._(1); 620 static const MediaPipeSendResult flushed = const MediaPipeSendResult._(1);
756 621
757 const MediaPipeSendResult._(int v) : super(v); 622 const MediaPipeSendResult._(int v) : super(v);
758 623
759 static const Map<String, MediaPipeSendResult> valuesMap = const { 624 static const Map<String, MediaPipeSendResult> valuesMap = const {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 677
813 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => 678 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) =>
814 responseFactory(null); 679 responseFactory(null);
815 680
816 dynamic getAllTypeDefinitions([Function responseFactory]) => 681 dynamic getAllTypeDefinitions([Function responseFactory]) =>
817 responseFactory(null); 682 responseFactory(null);
818 } 683 }
819 684
820 abstract class MediaPipe { 685 abstract class MediaPipe {
821 static const String serviceName = null; 686 static const String serviceName = null;
822 dynamic getState([Function responseFactory = null]); 687 void setBuffer(core.MojoSharedBuffer buffer, int size);
823 dynamic sendPacket(MediaPacket packet,[Function responseFactory = null]); 688 dynamic sendPacket(MediaPacket packet,[Function responseFactory = null]);
824 dynamic flush([Function responseFactory = null]); 689 dynamic flush([Function responseFactory = null]);
690 static const int kMaxBufferLen = 4611686018427387903;
825 } 691 }
826 692
827 693
828 class _MediaPipeProxyImpl extends bindings.Proxy { 694 class _MediaPipeProxyImpl extends bindings.Proxy {
829 _MediaPipeProxyImpl.fromEndpoint( 695 _MediaPipeProxyImpl.fromEndpoint(
830 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint); 696 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint);
831 697
832 _MediaPipeProxyImpl.fromHandle(core.MojoHandle handle) : 698 _MediaPipeProxyImpl.fromHandle(core.MojoHandle handle) :
833 super.fromHandle(handle); 699 super.fromHandle(handle);
834 700
835 _MediaPipeProxyImpl.unbound() : super.unbound(); 701 _MediaPipeProxyImpl.unbound() : super.unbound();
836 702
837 static _MediaPipeProxyImpl newFromEndpoint( 703 static _MediaPipeProxyImpl newFromEndpoint(
838 core.MojoMessagePipeEndpoint endpoint) { 704 core.MojoMessagePipeEndpoint endpoint) {
839 assert(endpoint.setDescription("For _MediaPipeProxyImpl")); 705 assert(endpoint.setDescription("For _MediaPipeProxyImpl"));
840 return new _MediaPipeProxyImpl.fromEndpoint(endpoint); 706 return new _MediaPipeProxyImpl.fromEndpoint(endpoint);
841 } 707 }
842 708
843 service_describer.ServiceDescription get serviceDescription => 709 service_describer.ServiceDescription get serviceDescription =>
844 new _MediaPipeServiceDescription(); 710 new _MediaPipeServiceDescription();
845 711
846 void handleResponse(bindings.ServiceMessage message) { 712 void handleResponse(bindings.ServiceMessage message) {
847 switch (message.header.type) { 713 switch (message.header.type) {
848 case _MediaPipe_getStateName:
849 var r = MediaPipeGetStateResponseParams.deserialize(
850 message.payload);
851 if (!message.header.hasRequestId) {
852 proxyError("Expected a message with a valid request Id.");
853 return;
854 }
855 Completer c = completerMap[message.header.requestId];
856 if (c == null) {
857 proxyError(
858 "Message had unknown request Id: ${message.header.requestId}");
859 return;
860 }
861 completerMap.remove(message.header.requestId);
862 if (c.isCompleted) {
863 proxyError("Response completer already completed");
864 return;
865 }
866 c.complete(r);
867 break;
868 case _MediaPipe_sendPacketName: 714 case _MediaPipe_sendPacketName:
869 var r = MediaPipeSendPacketResponseParams.deserialize( 715 var r = MediaPipeSendPacketResponseParams.deserialize(
870 message.payload); 716 message.payload);
871 if (!message.header.hasRequestId) { 717 if (!message.header.hasRequestId) {
872 proxyError("Expected a message with a valid request Id."); 718 proxyError("Expected a message with a valid request Id.");
873 return; 719 return;
874 } 720 }
875 Completer c = completerMap[message.header.requestId]; 721 Completer c = completerMap[message.header.requestId];
876 if (c == null) { 722 if (c == null) {
877 proxyError( 723 proxyError(
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 var superString = super.toString(); 762 var superString = super.toString();
917 return "_MediaPipeProxyImpl($superString)"; 763 return "_MediaPipeProxyImpl($superString)";
918 } 764 }
919 } 765 }
920 766
921 767
922 class _MediaPipeProxyCalls implements MediaPipe { 768 class _MediaPipeProxyCalls implements MediaPipe {
923 _MediaPipeProxyImpl _proxyImpl; 769 _MediaPipeProxyImpl _proxyImpl;
924 770
925 _MediaPipeProxyCalls(this._proxyImpl); 771 _MediaPipeProxyCalls(this._proxyImpl);
926 dynamic getState([Function responseFactory = null]) { 772 void setBuffer(core.MojoSharedBuffer buffer, int size) {
927 var params = new _MediaPipeGetStateParams(); 773 if (!_proxyImpl.isBound) {
928 return _proxyImpl.sendMessageWithRequestId( 774 _proxyImpl.proxyError("The Proxy is closed.");
929 params, 775 return;
930 _MediaPipe_getStateName, 776 }
931 -1, 777 var params = new _MediaPipeSetBufferParams();
932 bindings.MessageHeader.kMessageExpectsResponse); 778 params.buffer = buffer;
779 params.size = size;
780 _proxyImpl.sendMessage(params, _MediaPipe_setBufferName);
933 } 781 }
934 dynamic sendPacket(MediaPacket packet,[Function responseFactory = null]) { 782 dynamic sendPacket(MediaPacket packet,[Function responseFactory = null]) {
935 var params = new _MediaPipeSendPacketParams(); 783 var params = new _MediaPipeSendPacketParams();
936 params.packet = packet; 784 params.packet = packet;
937 return _proxyImpl.sendMessageWithRequestId( 785 return _proxyImpl.sendMessageWithRequestId(
938 params, 786 params,
939 _MediaPipe_sendPacketName, 787 _MediaPipe_sendPacketName,
940 -1, 788 -1,
941 bindings.MessageHeader.kMessageExpectsResponse); 789 bindings.MessageHeader.kMessageExpectsResponse);
942 } 790 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 870
1023 MediaPipeStub.unbound() : super.unbound(); 871 MediaPipeStub.unbound() : super.unbound();
1024 872
1025 static MediaPipeStub newFromEndpoint( 873 static MediaPipeStub newFromEndpoint(
1026 core.MojoMessagePipeEndpoint endpoint) { 874 core.MojoMessagePipeEndpoint endpoint) {
1027 assert(endpoint.setDescription("For MediaPipeStub")); 875 assert(endpoint.setDescription("For MediaPipeStub"));
1028 return new MediaPipeStub.fromEndpoint(endpoint); 876 return new MediaPipeStub.fromEndpoint(endpoint);
1029 } 877 }
1030 878
1031 879
1032 MediaPipeGetStateResponseParams _MediaPipeGetStateResponseParamsFactory(MediaP ipeState state) {
1033 var mojo_factory_result = new MediaPipeGetStateResponseParams();
1034 mojo_factory_result.state = state;
1035 return mojo_factory_result;
1036 }
1037 MediaPipeSendPacketResponseParams _MediaPipeSendPacketResponseParamsFactory(Me diaPipeSendResult result) { 880 MediaPipeSendPacketResponseParams _MediaPipeSendPacketResponseParamsFactory(Me diaPipeSendResult result) {
1038 var mojo_factory_result = new MediaPipeSendPacketResponseParams(); 881 var mojo_factory_result = new MediaPipeSendPacketResponseParams();
1039 mojo_factory_result.result = result; 882 mojo_factory_result.result = result;
1040 return mojo_factory_result; 883 return mojo_factory_result;
1041 } 884 }
1042 MediaPipeFlushResponseParams _MediaPipeFlushResponseParamsFactory() { 885 MediaPipeFlushResponseParams _MediaPipeFlushResponseParamsFactory() {
1043 var mojo_factory_result = new MediaPipeFlushResponseParams(); 886 var mojo_factory_result = new MediaPipeFlushResponseParams();
1044 return mojo_factory_result; 887 return mojo_factory_result;
1045 } 888 }
1046 889
1047 dynamic handleMessage(bindings.ServiceMessage message) { 890 dynamic handleMessage(bindings.ServiceMessage message) {
1048 if (bindings.ControlMessageHandler.isControlMessage(message)) { 891 if (bindings.ControlMessageHandler.isControlMessage(message)) {
1049 return bindings.ControlMessageHandler.handleMessage(this, 892 return bindings.ControlMessageHandler.handleMessage(this,
1050 0, 893 0,
1051 message); 894 message);
1052 } 895 }
1053 assert(_impl != null); 896 assert(_impl != null);
1054 switch (message.header.type) { 897 switch (message.header.type) {
1055 case _MediaPipe_getStateName: 898 case _MediaPipe_setBufferName:
1056 var params = _MediaPipeGetStateParams.deserialize( 899 var params = _MediaPipeSetBufferParams.deserialize(
1057 message.payload); 900 message.payload);
1058 var response = _impl.getState(_MediaPipeGetStateResponseParamsFactory); 901 _impl.setBuffer(params.buffer, params.size);
1059 if (response is Future) {
1060 return response.then((response) {
1061 if (response != null) {
1062 return buildResponseWithId(
1063 response,
1064 _MediaPipe_getStateName,
1065 message.header.requestId,
1066 bindings.MessageHeader.kMessageIsResponse);
1067 }
1068 });
1069 } else if (response != null) {
1070 return buildResponseWithId(
1071 response,
1072 _MediaPipe_getStateName,
1073 message.header.requestId,
1074 bindings.MessageHeader.kMessageIsResponse);
1075 }
1076 break; 902 break;
1077 case _MediaPipe_sendPacketName: 903 case _MediaPipe_sendPacketName:
1078 var params = _MediaPipeSendPacketParams.deserialize( 904 var params = _MediaPipeSendPacketParams.deserialize(
1079 message.payload); 905 message.payload);
1080 var response = _impl.sendPacket(params.packet,_MediaPipeSendPacketRespon seParamsFactory); 906 var response = _impl.sendPacket(params.packet,_MediaPipeSendPacketRespon seParamsFactory);
1081 if (response is Future) { 907 if (response is Future) {
1082 return response.then((response) { 908 return response.then((response) {
1083 if (response != null) { 909 if (response != null) {
1084 return buildResponseWithId( 910 return buildResponseWithId(
1085 response, 911 response,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 static service_describer.ServiceDescription get serviceDescription { 968 static service_describer.ServiceDescription get serviceDescription {
1143 if (_cachedServiceDescription == null) { 969 if (_cachedServiceDescription == null) {
1144 _cachedServiceDescription = new _MediaPipeServiceDescription(); 970 _cachedServiceDescription = new _MediaPipeServiceDescription();
1145 } 971 }
1146 return _cachedServiceDescription; 972 return _cachedServiceDescription;
1147 } 973 }
1148 } 974 }
1149 975
1150 976
1151 977
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698