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

Unified Diff: mojo/dart/packages/mojo_services/lib/mojo/ui/view_trees.mojom.dart

Issue 1679023006: Reify view ownership as a message pipe. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: mojo/dart/packages/mojo_services/lib/mojo/ui/view_trees.mojom.dart
diff --git a/mojo/dart/packages/mojo_services/lib/mojo/ui/view_trees.mojom.dart b/mojo/dart/packages/mojo_services/lib/mojo/ui/view_trees.mojom.dart
index a0fa2d06b6e095615fddffb64a716f3725139a05..9cc565e69d658cc43eb7dbe207268f52b6945071 100644
--- a/mojo/dart/packages/mojo_services/lib/mojo/ui/view_trees.mojom.dart
+++ b/mojo/dart/packages/mojo_services/lib/mojo/ui/view_trees.mojom.dart
@@ -344,6 +344,141 @@ class ViewTreeOnRootUnavailableResponseParams extends bindings.Struct {
+class _ViewTreeHostGetTokenParams extends bindings.Struct {
+ static const List<bindings.StructDataHeader> kVersions = const [
+ const bindings.StructDataHeader(8, 0)
+ ];
+
+ _ViewTreeHostGetTokenParams() : super(kVersions.last.size);
+
+ static _ViewTreeHostGetTokenParams deserialize(bindings.Message message) {
+ var decoder = new bindings.Decoder(message);
+ var result = decode(decoder);
+ if (decoder.excessHandles != null) {
+ decoder.excessHandles.forEach((h) => h.close());
+ }
+ return result;
+ }
+
+ static _ViewTreeHostGetTokenParams decode(bindings.Decoder decoder0) {
+ if (decoder0 == null) {
+ return null;
+ }
+ _ViewTreeHostGetTokenParams result = new _ViewTreeHostGetTokenParams();
+
+ var mainDataHeader = decoder0.decodeStructDataHeader();
+ if (mainDataHeader.version <= kVersions.last.version) {
+ // Scan in reverse order to optimize for more recent versions.
+ for (int i = kVersions.length - 1; i >= 0; --i) {
+ if (mainDataHeader.version >= kVersions[i].version) {
+ if (mainDataHeader.size == kVersions[i].size) {
+ // Found a match.
+ break;
+ }
+ throw new bindings.MojoCodecError(
+ 'Header size doesn\'t correspond to known version size.');
+ }
+ }
+ } else if (mainDataHeader.size < kVersions.last.size) {
+ throw new bindings.MojoCodecError(
+ 'Message newer than the last known version cannot be shorter than '
+ 'required by the last known version.');
+ }
+ return result;
+ }
+
+ void encode(bindings.Encoder encoder) {
+ encoder.getStructEncoderAtOffset(kVersions.last);
+ }
+
+ String toString() {
+ return "_ViewTreeHostGetTokenParams("")";
+ }
+
+ Map toJson() {
+ Map map = new Map();
+ return map;
+ }
+}
+
+
+
+
+class ViewTreeHostGetTokenResponseParams extends bindings.Struct {
+ static const List<bindings.StructDataHeader> kVersions = const [
+ const bindings.StructDataHeader(16, 0)
+ ];
+ ViewTreeToken token = null;
+
+ ViewTreeHostGetTokenResponseParams() : super(kVersions.last.size);
+
+ static ViewTreeHostGetTokenResponseParams deserialize(bindings.Message message) {
+ var decoder = new bindings.Decoder(message);
+ var result = decode(decoder);
+ if (decoder.excessHandles != null) {
+ decoder.excessHandles.forEach((h) => h.close());
+ }
+ return result;
+ }
+
+ static ViewTreeHostGetTokenResponseParams decode(bindings.Decoder decoder0) {
+ if (decoder0 == null) {
+ return null;
+ }
+ ViewTreeHostGetTokenResponseParams result = new ViewTreeHostGetTokenResponseParams();
+
+ var mainDataHeader = decoder0.decodeStructDataHeader();
+ if (mainDataHeader.version <= kVersions.last.version) {
+ // Scan in reverse order to optimize for more recent versions.
+ for (int i = kVersions.length - 1; i >= 0; --i) {
+ if (mainDataHeader.version >= kVersions[i].version) {
+ if (mainDataHeader.size == kVersions[i].size) {
+ // Found a match.
+ break;
+ }
+ throw new bindings.MojoCodecError(
+ 'Header size doesn\'t correspond to known version size.');
+ }
+ }
+ } else if (mainDataHeader.size < kVersions.last.size) {
+ throw new bindings.MojoCodecError(
+ 'Message newer than the last known version cannot be shorter than '
+ 'required by the last known version.');
+ }
+ if (mainDataHeader.version >= 0) {
+
+ var decoder1 = decoder0.decodePointer(8, false);
+ result.token = ViewTreeToken.decode(decoder1);
+ }
+ return result;
+ }
+
+ void encode(bindings.Encoder encoder) {
+ var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
+ try {
+ encoder0.encodeStruct(token, 8, false);
+ } on bindings.MojoCodecError catch(e) {
+ e.message = "Error encountered while encoding field "
+ "token of struct ViewTreeHostGetTokenResponseParams: $e";
+ rethrow;
+ }
+ }
+
+ String toString() {
+ return "ViewTreeHostGetTokenResponseParams("
+ "token: $token" ")";
+ }
+
+ Map toJson() {
+ Map map = new Map();
+ map["token"] = token;
+ return map;
+ }
+}
+
+
+
+
class _ViewTreeHostGetServiceProviderParams extends bindings.Struct {
static const List<bindings.StructDataHeader> kVersions = const [
const bindings.StructDataHeader(16, 0)
@@ -482,7 +617,7 @@ class _ViewTreeHostSetRootParams extends bindings.Struct {
const bindings.StructDataHeader(24, 0)
];
int rootKey = 0;
- views_mojom.ViewToken rootViewToken = null;
+ Object rootViewOwner = null;
_ViewTreeHostSetRootParams() : super(kVersions.last.size);
@@ -525,8 +660,7 @@ class _ViewTreeHostSetRootParams extends bindings.Struct {
}
if (mainDataHeader.version >= 0) {
- var decoder1 = decoder0.decodePointer(16, false);
- result.rootViewToken = views_mojom.ViewToken.decode(decoder1);
+ result.rootViewOwner = decoder0.decodeServiceInterface(12, false, views_mojom.ViewOwnerProxy.newFromEndpoint);
}
return result;
}
@@ -541,10 +675,10 @@ class _ViewTreeHostSetRootParams extends bindings.Struct {
rethrow;
}
try {
- encoder0.encodeStruct(rootViewToken, 16, false);
+ encoder0.encodeInterface(rootViewOwner, 12, false);
} on bindings.MojoCodecError catch(e) {
e.message = "Error encountered while encoding field "
- "rootViewToken of struct _ViewTreeHostSetRootParams: $e";
+ "rootViewOwner of struct _ViewTreeHostSetRootParams: $e";
rethrow;
}
}
@@ -552,14 +686,12 @@ class _ViewTreeHostSetRootParams extends bindings.Struct {
String toString() {
return "_ViewTreeHostSetRootParams("
"rootKey: $rootKey" ", "
- "rootViewToken: $rootViewToken" ")";
+ "rootViewOwner: $rootViewOwner" ")";
}
Map toJson() {
- Map map = new Map();
- map["rootKey"] = rootKey;
- map["rootViewToken"] = rootViewToken;
- return map;
+ throw new bindings.MojoCodecError(
+ 'Object containing handles cannot be encoded to JSON.');
}
}
@@ -568,8 +700,9 @@ class _ViewTreeHostSetRootParams extends bindings.Struct {
class _ViewTreeHostResetRootParams extends bindings.Struct {
static const List<bindings.StructDataHeader> kVersions = const [
- const bindings.StructDataHeader(8, 0)
+ const bindings.StructDataHeader(16, 0)
];
+ Object transferredViewOwner = null;
_ViewTreeHostResetRootParams() : super(kVersions.last.size);
@@ -606,20 +739,32 @@ class _ViewTreeHostResetRootParams extends bindings.Struct {
'Message newer than the last known version cannot be shorter than '
'required by the last known version.');
}
+ if (mainDataHeader.version >= 0) {
+
+ result.transferredViewOwner = decoder0.decodeInterfaceRequest(8, true, views_mojom.ViewOwnerStub.newFromEndpoint);
+ }
return result;
}
void encode(bindings.Encoder encoder) {
- encoder.getStructEncoderAtOffset(kVersions.last);
+ var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
+ try {
+ encoder0.encodeInterfaceRequest(transferredViewOwner, 8, true);
+ } on bindings.MojoCodecError catch(e) {
+ e.message = "Error encountered while encoding field "
+ "transferredViewOwner of struct _ViewTreeHostResetRootParams: $e";
+ rethrow;
+ }
}
String toString() {
- return "_ViewTreeHostResetRootParams("")";
+ return "_ViewTreeHostResetRootParams("
+ "transferredViewOwner: $transferredViewOwner" ")";
}
Map toJson() {
- Map map = new Map();
- return map;
+ throw new bindings.MojoCodecError(
+ 'Object containing handles cannot be encoded to JSON.');
}
}
@@ -1057,11 +1202,12 @@ class ViewTreeStub extends bindings.Stub {
new _ViewTreeServiceDescription();
}
-const int _ViewTreeHost_getServiceProviderName = 0;
-const int _ViewTreeHost_requestLayoutName = 1;
-const int _ViewTreeHost_setRootName = 2;
-const int _ViewTreeHost_resetRootName = 3;
-const int _ViewTreeHost_layoutRootName = 4;
+const int _ViewTreeHost_getTokenName = 0;
+const int _ViewTreeHost_getServiceProviderName = 1;
+const int _ViewTreeHost_requestLayoutName = 2;
+const int _ViewTreeHost_setRootName = 3;
+const int _ViewTreeHost_resetRootName = 4;
+const int _ViewTreeHost_layoutRootName = 5;
@@ -1075,10 +1221,11 @@ class _ViewTreeHostServiceDescription implements service_describer.ServiceDescri
abstract class ViewTreeHost {
static const String serviceName = null;
+ dynamic getToken([Function responseFactory = null]);
void getServiceProvider(Object serviceProvider);
void requestLayout();
- void setRoot(int rootKey, views_mojom.ViewToken rootViewToken);
- void resetRoot();
+ void setRoot(int rootKey, Object rootViewOwner);
+ void resetRoot(Object transferredViewOwner);
dynamic layoutRoot(layouts_mojom.ViewLayoutParams rootLayoutParams,[Function responseFactory = null]);
}
@@ -1103,6 +1250,26 @@ class _ViewTreeHostProxyImpl extends bindings.Proxy {
void handleResponse(bindings.ServiceMessage message) {
switch (message.header.type) {
+ case _ViewTreeHost_getTokenName:
+ var r = ViewTreeHostGetTokenResponseParams.deserialize(
+ message.payload);
+ if (!message.header.hasRequestId) {
+ proxyError("Expected a message with a valid request Id.");
+ return;
+ }
+ Completer c = completerMap[message.header.requestId];
+ if (c == null) {
+ proxyError(
+ "Message had unknown request Id: ${message.header.requestId}");
+ return;
+ }
+ completerMap.remove(message.header.requestId);
+ if (c.isCompleted) {
+ proxyError("Response completer already completed");
+ return;
+ }
+ c.complete(r);
+ break;
case _ViewTreeHost_layoutRootName:
var r = ViewTreeHostLayoutRootResponseParams.deserialize(
message.payload);
@@ -1141,6 +1308,14 @@ class _ViewTreeHostProxyCalls implements ViewTreeHost {
_ViewTreeHostProxyImpl _proxyImpl;
_ViewTreeHostProxyCalls(this._proxyImpl);
+ dynamic getToken([Function responseFactory = null]) {
+ var params = new _ViewTreeHostGetTokenParams();
+ return _proxyImpl.sendMessageWithRequestId(
+ params,
+ _ViewTreeHost_getTokenName,
+ -1,
+ bindings.MessageHeader.kMessageExpectsResponse);
+ }
void getServiceProvider(Object serviceProvider) {
if (!_proxyImpl.isBound) {
_proxyImpl.proxyError("The Proxy is closed.");
@@ -1158,22 +1333,23 @@ class _ViewTreeHostProxyCalls implements ViewTreeHost {
var params = new _ViewTreeHostRequestLayoutParams();
_proxyImpl.sendMessage(params, _ViewTreeHost_requestLayoutName);
}
- void setRoot(int rootKey, views_mojom.ViewToken rootViewToken) {
+ void setRoot(int rootKey, Object rootViewOwner) {
if (!_proxyImpl.isBound) {
_proxyImpl.proxyError("The Proxy is closed.");
return;
}
var params = new _ViewTreeHostSetRootParams();
params.rootKey = rootKey;
- params.rootViewToken = rootViewToken;
+ params.rootViewOwner = rootViewOwner;
_proxyImpl.sendMessage(params, _ViewTreeHost_setRootName);
}
- void resetRoot() {
+ void resetRoot(Object transferredViewOwner) {
if (!_proxyImpl.isBound) {
_proxyImpl.proxyError("The Proxy is closed.");
return;
}
var params = new _ViewTreeHostResetRootParams();
+ params.transferredViewOwner = transferredViewOwner;
_proxyImpl.sendMessage(params, _ViewTreeHost_resetRootName);
}
dynamic layoutRoot(layouts_mojom.ViewLayoutParams rootLayoutParams,[Function responseFactory = null]) {
@@ -1266,6 +1442,11 @@ class ViewTreeHostStub extends bindings.Stub {
}
+ ViewTreeHostGetTokenResponseParams _ViewTreeHostGetTokenResponseParamsFactory(ViewTreeToken token) {
+ var mojo_factory_result = new ViewTreeHostGetTokenResponseParams();
+ mojo_factory_result.token = token;
+ return mojo_factory_result;
+ }
ViewTreeHostLayoutRootResponseParams _ViewTreeHostLayoutRootResponseParamsFactory(layouts_mojom.ViewLayoutInfo info) {
var mojo_factory_result = new ViewTreeHostLayoutRootResponseParams();
mojo_factory_result.info = info;
@@ -1280,6 +1461,28 @@ class ViewTreeHostStub extends bindings.Stub {
}
assert(_impl != null);
switch (message.header.type) {
+ case _ViewTreeHost_getTokenName:
+ var params = _ViewTreeHostGetTokenParams.deserialize(
+ message.payload);
+ var response = _impl.getToken(_ViewTreeHostGetTokenResponseParamsFactory);
+ if (response is Future) {
+ return response.then((response) {
+ if (response != null) {
+ return buildResponseWithId(
+ response,
+ _ViewTreeHost_getTokenName,
+ message.header.requestId,
+ bindings.MessageHeader.kMessageIsResponse);
+ }
+ });
+ } else if (response != null) {
+ return buildResponseWithId(
+ response,
+ _ViewTreeHost_getTokenName,
+ message.header.requestId,
+ bindings.MessageHeader.kMessageIsResponse);
+ }
+ break;
case _ViewTreeHost_getServiceProviderName:
var params = _ViewTreeHostGetServiceProviderParams.deserialize(
message.payload);
@@ -1293,12 +1496,12 @@ class ViewTreeHostStub extends bindings.Stub {
case _ViewTreeHost_setRootName:
var params = _ViewTreeHostSetRootParams.deserialize(
message.payload);
- _impl.setRoot(params.rootKey, params.rootViewToken);
+ _impl.setRoot(params.rootKey, params.rootViewOwner);
break;
case _ViewTreeHost_resetRootName:
var params = _ViewTreeHostResetRootParams.deserialize(
message.payload);
- _impl.resetRoot();
+ _impl.resetRoot(params.transferredViewOwner);
break;
case _ViewTreeHost_layoutRootName:
var params = _ViewTreeHostLayoutRootParams.deserialize(

Powered by Google App Engine
This is Rietveld 408576698