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

Unified Diff: mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart

Issue 1964193002: Dart: Refactors Proxies (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Address comments Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
index 3b81529e891ae24a256a1b79cd70a2ac636fbd63..e278849fd4779280a25abfaf0d8a13eb097f392a 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_structs.mojom.dart
@@ -6008,24 +6008,22 @@ abstract class SomeInterface {
}
-class _SomeInterfaceProxyImpl extends bindings.Proxy {
- _SomeInterfaceProxyImpl.fromEndpoint(
+class _SomeInterfaceProxyControl extends bindings.ProxyMessageHandler
+ implements bindings.ProxyControl {
+ _SomeInterfaceProxyControl.fromEndpoint(
core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint);
- _SomeInterfaceProxyImpl.fromHandle(core.MojoHandle handle) :
- super.fromHandle(handle);
+ _SomeInterfaceProxyControl.fromHandle(
+ core.MojoHandle handle) : super.fromHandle(handle);
- _SomeInterfaceProxyImpl.unbound() : super.unbound();
-
- static _SomeInterfaceProxyImpl newFromEndpoint(
- core.MojoMessagePipeEndpoint endpoint) {
- assert(endpoint.setDescription("For _SomeInterfaceProxyImpl"));
- return new _SomeInterfaceProxyImpl.fromEndpoint(endpoint);
- }
+ _SomeInterfaceProxyControl.unbound() : super.unbound();
service_describer.ServiceDescription get serviceDescription =>
- new _SomeInterfaceServiceDescription();
+ new _SomeInterfaceServiceDescription();
+
+ String get serviceName => SomeInterface.serviceName;
+ @override
void handleResponse(bindings.ServiceMessage message) {
switch (message.header.type) {
case _someInterfaceMethodSomeMethodName:
@@ -6055,51 +6053,30 @@ class _SomeInterfaceProxyImpl extends bindings.Proxy {
}
}
+ @override
String toString() {
var superString = super.toString();
- return "_SomeInterfaceProxyImpl($superString)";
+ return "_SomeInterfaceProxyControl($superString)";
}
}
-class _SomeInterfaceProxyCalls implements SomeInterface {
- _SomeInterfaceProxyImpl _proxyImpl;
-
- _SomeInterfaceProxyCalls(this._proxyImpl);
- dynamic someMethod(RectPair pair,[Function responseFactory = null]) {
- var params = new _SomeInterfaceSomeMethodParams();
- params.pair = pair;
- return _proxyImpl.sendMessageWithRequestId(
- params,
- _someInterfaceMethodSomeMethodName,
- -1,
- bindings.MessageHeader.kMessageExpectsResponse);
- }
-}
-
-
-class SomeInterfaceProxy implements bindings.ProxyBase {
- final bindings.Proxy impl;
- SomeInterface ptr;
-
- SomeInterfaceProxy(_SomeInterfaceProxyImpl proxyImpl) :
- impl = proxyImpl,
- ptr = new _SomeInterfaceProxyCalls(proxyImpl);
-
+class SomeInterfaceProxy extends bindings.Proxy
+ implements SomeInterface {
SomeInterfaceProxy.fromEndpoint(
- core.MojoMessagePipeEndpoint endpoint) :
- impl = new _SomeInterfaceProxyImpl.fromEndpoint(endpoint) {
- ptr = new _SomeInterfaceProxyCalls(impl);
- }
+ core.MojoMessagePipeEndpoint endpoint)
+ : super(new _SomeInterfaceProxyControl.fromEndpoint(endpoint));
- SomeInterfaceProxy.fromHandle(core.MojoHandle handle) :
- impl = new _SomeInterfaceProxyImpl.fromHandle(handle) {
- ptr = new _SomeInterfaceProxyCalls(impl);
- }
+ SomeInterfaceProxy.fromHandle(core.MojoHandle handle)
+ : super(new _SomeInterfaceProxyControl.fromHandle(handle));
- SomeInterfaceProxy.unbound() :
- impl = new _SomeInterfaceProxyImpl.unbound() {
- ptr = new _SomeInterfaceProxyCalls(impl);
+ SomeInterfaceProxy.unbound()
+ : super(new _SomeInterfaceProxyControl.unbound());
+
+ static SomeInterfaceProxy newFromEndpoint(
+ core.MojoMessagePipeEndpoint endpoint) {
+ assert(endpoint.setDescription("For SomeInterfaceProxy"));
+ return new SomeInterfaceProxy.fromEndpoint(endpoint);
}
factory SomeInterfaceProxy.connectToService(
@@ -6109,30 +6086,15 @@ class SomeInterfaceProxy implements bindings.ProxyBase {
return p;
}
- static SomeInterfaceProxy newFromEndpoint(
- core.MojoMessagePipeEndpoint endpoint) {
- assert(endpoint.setDescription("For SomeInterfaceProxy"));
- return new SomeInterfaceProxy.fromEndpoint(endpoint);
- }
-
- String get serviceName => SomeInterface.serviceName;
-
- Future close({bool immediate: false}) => impl.close(immediate: immediate);
-
- Future responseOrError(Future f) => impl.responseOrError(f);
-
- Future get errorFuture => impl.errorFuture;
-
- int get version => impl.version;
- Future<int> queryVersion() => impl.queryVersion();
-
- void requireVersion(int requiredVersion) {
- impl.requireVersion(requiredVersion);
- }
-
- String toString() {
- return "SomeInterfaceProxy($impl)";
+ dynamic someMethod(RectPair pair,[Function responseFactory = null]) {
+ var params = new _SomeInterfaceSomeMethodParams();
+ params.pair = pair;
+ return ctrl.sendMessageWithRequestId(
+ params,
+ _someInterfaceMethodSomeMethodName,
+ -1,
+ bindings.MessageHeader.kMessageExpectsResponse);
}
}
@@ -6254,7 +6216,7 @@ mojom_types.RuntimeTypeInfo _initRuntimeTypeInfo() {
// serializedRuntimeTypeInfo contains the bytes of the Mojo serialization of
// a mojom_types.RuntimeTypeInfo struct describing the Mojom types in this
// file. The string contains the base64 encoding of the gzip-compressed bytes.
- var serializedRuntimeTypeInfo = "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";
+ var serializedRuntimeTypeInfo = "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";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);

Powered by Google App Engine
This is Rietveld 408576698