Delete the |complete_type_set| field from mojom_types.mojom
The |complete_type_set| field was deprecated and not being populated.
We also delete the code used to populate this field: The functions FindReachableTypes() in user_defined_types.go and ReferencedUserDefinedTypes() from the TypeRef interface in types.go.
We also delete the struct ServiceTypeInfo since it would now contain only a single string field and we replace
map<string, ServiceTypeInfo> services_by_name with map<string, string> services, moving the string field
from ServiceTypeInfo directly into the value of the map.
This work is in preparation for adding new code to analyze the type graph for the purpose of finding cycles. The code we are deleting also analyzed the type graph but in a different way. Since the older way of analyzing the type graph is now obsolete, it will reduce confusion to remove it before adding a newer way to analyze the type graph.
bug=#694
R=azani@chromium.org
Review URL: https://codereview.chromium.org/1916863003 .
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart
index 6c400f6..7a79c08 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/dart_to_cpp/dart_to_cpp.mojom.dart
@@ -1331,7 +1331,7 @@
// 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 = "H4sIAAAJbogC/9yaz2/bNhTHJdlubMdOnMTNvK3rPKDFsmKN0x8ojJ08dBmyrQejLYb25Koxa2uwZU+Sh2ynHHfcsX/K/oT9CTlmtx13KbBbR7aPDsuQNCVYplMBD7RixuL3w8enxyfVrLdHBdo9aPm/0zbPtXy/E2h3sGWx1eG8Be0zaI+hvYbtCrbHT9v7nR/2n37VdYOoE406h+Px7v3x+JHXRaTfdWyfyPp9gz9DR2W//cP+6OugF+Lvv8D22ax+D7wwgnEegB6iM4Otyeh+c756dm4Tndvvnv9544yLxXChx7/ceYs7p/NCr/sajgNLfKxjW8FGEX6MP29hk+A9N4+EYxHbQ2zfY2v0R0PUcH9zfa8xHP00aoTB4dsP5BcbE9+LIhRGYQMNn6NuFwUdcoqCBntB0n8o9ps640+Ec/PHB7nXp69y1t+vcjY23p92HOCSBS6XxHxPOS7kd1V8+X57Er4b2ArYHkVY32M09RNe1+fYnBQ51rnrnnLtLJ3Uj5oSnR+C1qnOmwH6eSLXS4+09Oatd9cVH4csLj7N8oc3PqbDCfezFf5QxVYi8QSP/lvP98I+6or43Ljg/nAFtLI6WZe46P5A4o0uJ0fDH9qe33uIwvHID5GIz833xB9Yne+TP9gx/CGj4Q8ktVD5w64hf2g78/UHVqdJf+D9oMXlUeR7MsH/WHqHDh/Wr/ijBHnMwBPz2AWGac+/Jcm/WD9lU+C4+bJq/dnMdReVD1dgLHSrQP1Uso04Ny+3DOXDVdhfUG4O832G+b9j6HSU07zPxfTnmXkwiu4PPOTL8sLbhuJay5lzHkx1Gs6Dly2u0f3mIewpRfNfNRDXapL9sG7dIWkcO+HziBicbY37B8m3RH53Z8Hr7IRrddeZTt58kfNIfv6dGHwcjfknt1wRl7uG5v8gM9/5J/pMzn8NOE7rn7Y8zloQa+cZZ2V8LmMrY/Mnw+/w8N3Iwxm2xA/KKfKJe7/JJ+CgioOrkP+4Qc+SrYPrBu83NN+kqbFuXVoVbxzmnF+HNF/eqc43X6ZDE+XLzLDP8S/A/TYt/i+xbWL7A673O6zPYwi0RxCPxlAf7sMCfQZ14icrsO8F0O0CtEVooZ7fLkFbhnYN/n8drguCX26o48OlBe8vQ+/eXdG8FGFeFxkXVPFx3nHhTP+d2yL9q4b0ZxXjjavf0dJ/655If8mQ/oxkvGsJ9Gc07guh1xTeF8opxyWZ/qIizsbVn9WY/4lk/a9BbF60/oJkvLUE+nNa+sXrf92Q/ryiXhpX/yUt/eL1XzGkf0VRN4irf0Vj/U8k63/DUPxzJOOtJ9Cf16jHvRiM3KjzizuQ1Kc2l4zDtQQcCtocPP+FhMPWknHYScChqM3Bd30Jh6ohDrZk3HsJOKwqOGzCPbg7mjwfoLOFwXO4bCg+yjg0E3Ao6XOYLgyew/aScWgl4FDW5zBdGDyHDwxwsBV1lIMEHNY08gXfHQqfe9VSfu5VkdTHWR6O4HkgPdoJeKxrPKcPo8Dzex03CNxfRVzo86C060s2jJmvC8n2DSy3rILblwm4VRTctmFvMURh6PZQp+/63QE6z+0jYLkIf7ITcHmSgMuGgssW5KRdN3KnUAT+RN7PvLogLs6MOiOJjX1JnfE/aP+aUe9vcXXGtka9n32FoA7XlL1mwPO7mvK+nn8eMLaX630SHx0Jn5N8Cp8XEafSfJ/E9PMGytmL0FD2vkbJAOdFPW/4PwAA//8HxRtDKDAAAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/9yaz2/bNhTHJdlObMdOnMTNvK3rPKDFsmKN0x8ojJ08dBkyrBiMtSjak6vGrK3Blj1JHrJbjjvu2D9lf8L+hByz2467FNitJdtHh6VJmRIs0YmAB1oxY/H74ePT45NqxvujAu0+tPzfaZvnWr7fKbS72LLY6nDegvY5tCfQXsd2FdvjZ+2Dzo8Hz77p2l7QCUado/F478F4/MjpItLvBrbPZP2+w5+hY2i/g6P+6Fuv5+Pvv8L2xbx+Dx0/gHEegh6iM4Otyeh+d752fm4SnTsfnv9185yLwXChx3/ceYs7p/NCr/sGjkNDfGxgW8VGEX6KP29jk+CdmUfCsYjtCbafsDX6oyFqeJPuaOi4yGsMR7+MGr539P4D+dXGxHWCAPmB30DDF6jbRV6HnOLO7EVJ/+Hs9eqMPxHOzScPc2/OXueMf17nTGy8P+1awCULXFbEfM84LuR3w/jy/fYlfDexFbA9CrC2x2jqJ7yuL7FZCXKsc9c949p5OqkfNSU6PwatU523PPTrRK6XHknpzRsfris+DhlcfJrnD+98TIUT7meG+EMVW4nEEzzy7x3X8fuoK+Jz84L7w1XQyupkXeKi+wOJN6qcLAV/aDtu72fkj0euj0R8bl0Sf2B1XiZ/MCP4Q0bBH0hqEeYPe5r8oW0t1h9YnTr9gfeDFpdHke/JBP9rqB0qfFi/4o8S5DEDR8xjDxgmPf+GJP9i/ZRNgaPmy2Hrz2Sum1Y+XIGx0K0C9VPJNmJmXm5ryoersL+g3Czm+wwzzhPodJxTvM9F9Oe5eTAKHgwc5Mrywjua4lrLWnAeTHVqzoOXLa7R/eYR7ClF81/VENdqkv2wat0hbhw75fOICJxNhfsHybdEfnc35XV2yrWq60wlb77IeSQ//1YEPpbC/JNbrojLPU3zf5hZ7PwTfTrnvwYcp/VPUx5nDYi1i4yzMj5XsJWxuZPhD3joduDgDFviB+UE+US93+RjcAiLg2uQ/9hez5Ctgxsa7zc036SpsWpdOizeWMw5vw5pvrxbXWy+TIcmypeZYc/wL8D9Nin+r/BvbmH7E673B6zPEwi0xxCPxlAf7sMCfQ514qersO8F0O0CtEVooZ7fLkFbhnYd/n8DrguCX22Gx4eVlPeXvnP/nmheijCvacaFsPi46Lhwrv/uHZH+NU36syHjjarfUtJ/+75If0mT/oxkvOsx9GcU7gu+0xTeF8oJxyWZ/mJInI2qP6sw/xPJ+l+H2Jy2/oJkvLUY+nNK+sXrf0OT/nxIvTSq/hUl/eL1X9GkfzWkbhBV/6rC+p9I1v+mpvhnScZbj6E/r1CPezkY2UHnN3sgqU9tLRmH6zE4FJQ5OO5LCYftJeOwG4NDUZmDa7sSDlVNHEzJuPdjcFgL4bAF9+DuaPJigM4XBs/hiqb4KOPQjMGhpM5hujB4DjtLxqEVg0NZncN0YfAcPtLAwQypoxzG4LCukC+49lD43KuW8HOviqQ+zvKwBM8D6dGOwWND4Tm9H3iO2+vYnmf/LuJCnwclXV8yYcx8XUi2b2C5ZUO4fR2DWyWE2w7sLYbI9+0e6vRttztAs9w+AZZp+JMZg8vTGFw2Q7hsQ07atQN7CkXgT+T9zGspcbHm1BlJbOxL6oz/Q/v3nHp/i6szthXq/ewrBHW4puw1A57ftYT39fzzgLG5XO+TuOhY+Jzkc/icRpxK8n0S3c8bKGcnQEMR5zr0SZtzWs8b3gYAAP//ZmL1wygwAAA=";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart
index 7079369..0adae93 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import.mojom.dart
@@ -542,7 +542,7 @@
// 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 = "H4sIAAAJbogC/8yYT1PTQBTAN0G0QME68qf8UYuiVh0bjh1PMNiRjgzDQMeBEy0l2jg0qU2YQT9BPwYfgaMfp0ePHr3ppnnbJC+7JdGudGfebJLdJPt++/bt25clXslAvQ41fs7qFKpxP6L43xmnkofH21C3oO5AfQn1MyoPqVSO9krH70tHb4xmy2o7+mlh07Scht4+aNRaOiGvaJ8n3H5luCibjt7+WKvrve8+orLA7b9nGaYzoN374QvatsptP9Kd8NB65RD0ziC93fsxl8u4f++i6qTC/K6mwvfde3zOP6HeIOGyjp7/hrJH+GWWSpoKVuUBlTkqgmmIjOc+6P2Byi4VrWE1da32rWYaWtP6bGl2u+5dtM5Pzoy6ZrBpsrUTwzw1zE+25ui2Y2t2rdk604+9Pxfcd5qE5IAf+28D7OxSDevN7C2jhMeXh/vJhNwOBdzcaZmgsl/aqmzuvtspwfPnYHNcbgW/N+bnzoMqkV/c9cXsdJLwuaYUPo+pa7gWY9rjDJXbVLbK+1su1DV6vSLkyXpF7XFuRHjG5ZceEr8M+ObKfrlnaGycfH6sV5Tf/IjwY9xySE/MUcRtG3GrCrgtwprm7yKEPKayFOQo6Ig5rsFaksUR/y8bsCcF2YUS2Lcx166Ai4grCXDlPSeBfcH1DW+tA6q406D6cDk9lWxvOcSni+o4erqlKNBzGXQN6Pm6rX85pyPix0lQZOmbEsx7Fq8jZAes/QfUv9RkfmlDwGca4gMv6vL8y0xwPUED5uTupXckrx81GN8qYX2LaDzjJF6Ju27ygvcnYN4uBHF2DuZOFpek+t/6C/2VGPp/Fei/Kln/QetG5fjbTEx/knS9sHg7sl6gAf9/SnIcnoe5Zv6iCuulA37iamxw3NjnpoSOi/98jhHF4zmYozA3PxDH/NKS96Hrzpss/lYE8TcRxI9qQrvbjhl/R86BKPDG/KZvmF9cXmND4oXjbTY+xKsfaGNeMyPKi/k/do4eFq80+I+dzYNKMG5CvFhzhNfdG+YlirexHeTB9wi+0zcIWXmdBWCFs1QRf4g64PEs/ue8zgXY23dBXieL9pGi4udPknCrJtxHXsIZUMStgF7AHJck223SPCXbZ2YT5nnmJOV5InkzzBc6Yq7LI8ZVlIfEZT4hx8OY+w8br5Cjn/Lh2unKiPH8EwAA///DmAf+oBgAAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/8yYzXLTMBCA5YRC2qYlQH/SH8CFAgGGuMcOp3ZKhmboMJk2h5RLfw0xU/9guzNw48gjcOQReASOfZQeOXIDuV7F9lpKbUiMNbOj2JIj7afVarVV4pcK1CtQ4/esLqEa9yNS8D8jVGrwehNqC+ovUH+D+iGVO1Tau63G3qvG7nNNt0zbVY/r64bpdlV7p3tgqYQ8pX3uc/s14UfTcFX77cGRevG/d6nMcvu3TM1w+7T7Az6mbUvc9l3VjU7tonRA7wrS23suUmmNBM8eqh8lxK8cfe7c5HP+BfUaiZYV9P43lBbhlykYEqtym8o0FcEyxOZzC/R+Q2WbitI1dVWxT49NXTNUW9HN96bi2Ef+D+v08EQ7UjS2VI5yqBnHmvHOUVzVcR3FOdCtE3XPH73ufaP748jAkY1vgb19L0T1Z3ZXlZB9w/NYSn4dAb8bVEY9nRsb7fXXL7ca8P4R2B6XXz3ojTl661HIgGPS/cbsdozw+VYkPpfxS/iuJrTPSSpXqWw0tzc8uMv096KQK+sVt8/pnHFNyrE8II4V8Nnt7eaF4bF58jmyXnGOMznjyPjJWF/EU8RvE/HbF/Cbg73OP2UIuUdlPsxT0BHzXIa9NWyeeNxqyL4kZCdS6HzHfM8FfER8SYgv7z0JnR+ez3hh7lAAbpfqxJ33g4zsT0aczlGdRF+vrAr0XQCdQ/o+s9UPp3RW/LgKyrD1LgnsoIrmUSJ8Tj/Z98V0fmtNwGkC4go/WvP9z2R4n0ED5uWdvdcy2leFcJwsRfVeRfMaIclK0v1UE3w/Cuv3URCny7CGw+aTlsOVv+AgJeDwScBhKSMO/fZTgeOXKwn9Tdp9xOL32D6CBjz+eEZxfQ3WnvmTLuyjrxDXnxX7x589u5Yi19B/vh+J4nsZ1irKLwjsMcdyRufWZfdZFs9Lgni+JIhDCyntcDNhPB+7Z6JAHnOcyAnHpNyKA+KG43c2P8StF7hjbpM558b8I7uvD4pbGfzK1vpOOxx3IW6sOcbtek64ieJ3bBc18E2C/+kZyLDySbPADGfHYv4SdcDzmftP+aTPYH9ngnySjM6bNSnI26Tht5/yvHkCd0wRvzr6APOcz8iO0+ZL2Xk0lTK/ND2k/FIsb4c5Q0fMdyGnfEX5UFxmUvLsJDyn2HyFPINUE9duF3PK9U8AAAD//48kgpk4GQAA";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart
index 94591fa..229d233 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/imported/sample_import2.mojom.dart
@@ -288,7 +288,7 @@
// 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 = "H4sIAAAJbogC/8xXzW7TQBBe54cGASXQQkv5CwekcIkRp4gTJURUagUVjYR6qlzH1ItiO4qNkHriyJHH4JE49sgjcINxdrayx17bjbLASp+mzv5+3+zOTDeZaG20T9HS36VtEUvHfUXbAdQT/XLdHbQPARuA0eH+8Gh3ePice9NgFjnj3iCYBDP2APpu5/Yf8FOnaP7I5f4J6+P+8lzdxDkNwJd6+vv7pXw+Z2hfsHSTfPpof2Oj42S7BmgCBDvBbRVAaGf2l/PeA94CTDfwHNM6tXxuesHHwAxntvhj+ul4wm2T+5Ez+2DZTmgec38MWoRm5IRRaIaWN504R2LHZ714kjffr5bYr2+k+UndmMEKW1V9dhTzr6C/3g1fzb+3ADcz+vRkd0anVeShS6ey+1pVL2NJesl78XJve7AL9h5gPauX7M7odf0f69Uh8eMn2l+15by3q4AGQEQLxm6hZiSMZHSJ79zKX3xvLSPNt0/O02TVmkovltArdT8V9+kzH0duji5rGPN16XJR/o0F+BsF/OP4EacA1+EnbpTlv66Zv8xDNK8ycl9U76a7stw8JbJoTp7CDqrPhuZ300WfS/5n+G6+YR7/0VC/o2ZCp/M6x9D7jkLXmubFl/j7hkadOuQ89N5k/HkgDqqO12KA6n7S9WNul+d5fDDafvN6b4i/PwE8Uq/fo+Or+rFr6IkH0o821muU7x3N8UDlx01FPVmWb6v6bw1rMVI+sMeA++r1z0eW+Y221gJ+qxX4rY1rTgLbinjgU55b/4nf9gNYuNBvYsRF9WwvoGe9QE9ZR4VYR1E972qO+2V60jqv7P/GojybzC9/AgAA///GPCwrGA8AAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/8yXzW7TQBCA101Cg4ASaKGl/IUDUrnEFaeIU0uIqNQKRSSXikOVOqZeFHsj2xUST8AjcOSxeIQe+wYwzs5Wzthru1FiutJo6uzvfDM7s91isjVQ76KmvytdJ5qO+4m6CVKJ9at1D1C/BNkEGRz3uieH3eN33J0IP7RHrY4YC5+9gL7Hqf19/sPOmj9wuHfG2ri/OtdO7JwGyK/K7PefW+n2XKDeY7NN2dNG/RcbHafaPZAaiLRO2rYGQsxO7K/mfQHpg5iOcG3TPx8Jl3u2b7rimzAD35J/TM5Px9wyuRfa/tehZQfmKfdGwCMwQzsIAzMYupOxfSJ3fduKJrlXdq/E9t0zZu1U/OoGy2xFOR1o5t9Bv33ufph+b4M8THBqqe4ErzW0Y9m88uK3KDdjQdxUnLw/2u8cgn4GspHkproT3O7fEG5Nklcu1Tkri7mHd0GqkY3TLMLYI2RH0kuCTxSDq//hHjaMWbvb5Fw1VqzpuLEYt3i86uLrOx+FTgqfdawJy+ZzXQ7VOTgYGRyi/BKVCsfmZ06Y5LBREgdVt2gdZiR+dPept7rYuiarbkpdww7KabOk+7SDMaA4XOB9+o355LKqv1+1eP5R/cZy71fgDCdp+Sf6flACryY5F42jhH/78sD6vC4H6OKVrh/ZeHta/zuD/U8fj7r4+xuQV/r1W3R8UX/uGsvJE8qfFr73qL1PSsoTOn9uad6lefW5qB/X8S1Hnh3sNchz/fpXI/P8R1t9Dv+tZPivgWuOhTUMufConds3zH89AYtn+k+OuC7XxhxcKxlc1fsrwPcX5fq0pLqQx5W+E/P+H82qx/H68y8AAP//Xq2n0nAPAAA=";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart
index 9efeec2..52913ba 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/math/math_calculator.mojom.dart
@@ -790,7 +790,7 @@
// 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 = "H4sIAAAJbogC/+xXS2/aQBDGppUM9EGfuDekXriU5Yh6oqqQKlWVOPRQTmgx2+DID+JHpOSXcuSYI/8gWcezsEy8wQeekkcaTbzZ1c73+ZvPwiylUYfagYrXRTVQxfu60rMm7WvC3r/DQX/0uz/87tJo2v5JHSt2aOQHJuxPzpWlcy3pvBxL9NxDzx20fg/xq5Qd73lWea47StcbPN/yRO0+wW3A+X88BzzJ1HcZobfUs4nrX/okDKz0j1k8dmyL2F7Egv/UYiEZ297E9i5CErEwCkly1chaXdVOTrn4PsHHR+CrBPzp0v/L0vvpvEjroJLN6xzqnZaPVxwtxfprni8TXh1Ggwy9VKDnffHWRDqdo7oNn9CNCvcnwPiI71vArmLeSwZOEfvCaSjmzkT3G+i9Y14W2m54+czzjcRLOPO9kB2eF8xHL8OnxOzkiV3NwzV1YqaYh8YB+ZD1oUl9qPxhqW/ytY0PDVLFRw186sdkkvk9qR7JH3Y1Bx8AI8cnuUMxB9vmoArf3WPPwb71kXy/X630IVyy0EcefXw9A5/Uc/KhQ6r4qEMvf2InsmfODeajduY+aQIWgU+YZTEHz89BDTzk1HxygX5P5NVHV8HDF57vNvWxNsvCL3PppHUCOnkIAAD//1LK0bZwEAAA";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xXTWvyQBA2+r4Q9f3w/WhNb0IvXup6lJ4sRSiUgodehILEZFtT8mHzUeg/6c/z2GOPvbWbZlbXaRYjKNqSgWGa7Q6Z5+GZJ6gVkqhBbUPF57yqqOJ7HeFZEe414O7loN8bnvcGx44ejlunum1Eth56vgb3476S0NcU+sV4Qc9d9NxG568QZ4X0+MuywnI+UXJeZ/mbJRr3A24V+q9ijCzJ2HMo8SPTcyyX+sTxbj0S+EbyxyQa2ZZBLDek/rVu0ICMLNe03JuAhDQIAxK/bmjMXteKu5w0vjkv/4G3AvBYFP5fEvr635L6WE7nd8r5VbLxi6MpOf/J8nvMr011PwVHGWbeNH8NpNspqstwch3J8O8B1necRz69i9g8KXh5bBqvKtlHDc2hIh1gfp6V9fCzz/KXwE8w8dyAbo8fzEs3xcf4TmWJde3JvW5HVLIn9S3wIupFEeaR+YdaWuRtGS8KpIyXKvjYiWmmfncqW/aPde3HP8DKcAruke9H1v2owPd6V/Zj03qJv/s/ZnrhbprrZRW9HH4iPy1m5KUIKeOlBrNcRHZoTewHzEv1i/ipBpg4Tm6q+X5k248qeMyu+ukT+r2SVS8dCR8HLP8s6mVuqrmvrqSb5g7p5i0AAP//5ns7IOgQAAA=";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
index 6a6c47e..2a132c8 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
@@ -162,7 +162,7 @@
class _EchoServiceDescription implements service_describer.ServiceDescription {
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["mojo::examples::Echo"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["mojo::examples::Echo"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
@@ -406,7 +406,7 @@
// 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 = "H4sIAAAJbogC/5JggAABKL0CSqOLWyDxGYGYA8qXAWIRIM7Nz8q3skqtSMwtyEkttrJyTc7Ix6Ye3VwDKK0MxNJAHBIZ4Brv7RppBTJQD2aeHsw4nOY44HAfseZKQPWB9DMj6deA0gowexghdASUZkCzHxZOM6D0Aij9Hwo2MGAH6O5WwOJPdiRxYSDmBuLg1KKyzORUv8TcVKLigweIWYAYxpcCYiGoeizBghHOnEDMBcSmQKwLxPoZ+bmp+olViXmZ+iAz9IuLkvVh5uinAs0BE3oguVwi3IduH4zPAw0fXOGFHk8HoPQGJuzxxICW/hiQ4gmbOAwIQf0Pcm9wSVFmXjr2cAKpYaIgnNDjH+afHYzE+wMELHD4AxbvCH/oFqUWlqYWl2D3DwyQ6x/0+HLAUa6cYCAOEBuPGjj08wIxKxCXJeaUpuKIP1EK/cuAlGZxlYMMSOUOAx3iXRpadqDEe3FBfl5x6mi8Q+NdYwDiHRAAAP//PLmGiogHAAA=";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKN0BpdHFLZD4jEDMAeXLALEIEOfmZ+VbWaVWJOYW5KQWW1m5JmfkY1OvDMTSQBwSGeAa7+0aaQXSqAfTpwfThmG/Aw77STGPEaqfGUm/BpRWgNIejBA6AUozoNkPC4cZUHoBlP4PBRsYsAN0dytgCWd2JHFhIOYG4uDUorLM5FS/xNxUosKbB4hZgBjGlwJiIah6LMGCEc6cQMwFxJZAbAjE+hn5uan6RaUp+bmZealF+iBz9IuLkvVhZumnAs0CE3oguVwi0wW6vTA+DzSccIUbenydgNFM2OMLBgzQ+KC4wiYOA0LQcAC5N7ikKDMvHXt4gdQwUSG80NMD3F+MxPsHBCxw+AeWDhD+0S1KLSxNLS7B7i8YoNRf6PHngKM8ucBAHCA2XjVw6OcFYlYgLkvMKU3FEZ+iVPI3A1JaRg8HCSQ3MSKpp3U6kIaWLSjpoLggP684dTQdoKUDjQFMB4AAAAD//1YHjLGYBwAA";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart
index 8b33867..a6111e7 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/rect.mojom.dart
@@ -139,7 +139,7 @@
// 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 = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgKJz4ikTh6IxYE4JDLANd7bNdIqNz8rX68ktbhELyg1uQRsDiMWfQpo9jyA0SwQ2oEBFRigueM/FKCrgwEeIAYZBXYEEIgBMR8QozkPw58g97EDsS8QuwKxfkZ+bqp+YlViXqY+SK9+cVEyhFFQmpSTmayfmVeSWpSWmJxarJ+UmZeSmZderA8yv1i/CGiBHkhpLtAcDah7YP4WYIQymCDUByZUf1uguYuVgTiAK9wYkMKNAeoebIATGk8VONIBJzSMqB0+pPqbhQx/MxLh70oc/uYaJP7mIMPfTHj8zQu1qzwzpSQDi7+5B4m/ecjwNzMef4PKAjYgzkjNTM/AUg7w0Mjf6OWgBFqahvEBAQAA//+v3Zl7wAUAAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgKJz4ikTh6IxYE4JDLANd7bNdIqNz8rX68ktbhELyg1uQRsDiMWfQpo9ryA2c8KoR0YUIEBmjv+QwG6OhjgAWIWIAY7AgjEgJgPiNGch+FPkPvYgTgQiD2BWD8jPzdVv6g0JT83My+1SB+kX7+4KBnCKChNyslM1s/MK0ktSktMTi3WT8rMS8nMSy/WB9lRrF8EtEQPpDQXar4G1F1w/zNC7WeC2s+M6n8LNPexMhAHcIUfA1L4wdyDDXBC46sCR3rghIYVrcKJVP+zkOF/RiL8X4nD/1yDzP8cZPifCY//eaF2lWemlGRg8T/3IPM/Dxn+Z8bjf1BZwQbEGamZ6RlYygkeGvsfvbyUQEvrMD4gAAD///PaA+DoBQAA";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart
index 1dea84f..c6c0948 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/serialization_test_structs.mojom.dart
@@ -588,7 +588,7 @@
// 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 = "H4sIAAAJbogC/+yYzW7TQBDHbbdV3NKqQQLJ5UMKLYccUNzmSxUnLpUqIQESHKg4hI3jkkWOE3kdCfXEI3DkEThy5FH6KNxgtx6L9eKJ3AR/IFhpNF5rbI//8/PuJJYWjTr4Q/Dq+dibilfjxnrkn3CrcTuG86/BfwD/Gfw38Jfgv4Pf53aH26uzFyeDpydnjyfT99NW6LKw9TIM5k54lDGunTGukzGumzGulzGuH8U94vZwUdzz82dzzyNDz2WxjjXQXUg+luog5l+N5NzcSM6/1JLz8VZy3txJzj/uRvOGUncN6m0Zv+ouj5inmIMfME619LEL7xUXeY8f3+SGlP83/ky43uH2hps9nk5cm1wQn9riHjYLnOhgNh961LGpH7rBOXFcZg+pP6L+O2aL5zCbuQElHr0gIZ36A3FuwK6ezVriBpOkvlry/Y+VvGpatoHpp0n6Cd9Ert+EfCiizybkWpY+lpSrLuWFcdXMhas2ylUb0W27glytS+tl3lzd4LYm1omRl6rPDrBVpD7yWJWzWS6cdVDOOgv22apxtlEgZ3XIJcp0cKTqI7TcKlCfRkp+ct3U/Spr37Iqr59y4bWL8tpFeL1VQV6NAnndhnV4REKSps9t0LMMXkXu8fdrKjz9Gzz3UJ57CM/Wf56veJ4RGqTpswfffBk8G9J+VHWe8+lb+yjPfYTnexXkWS+hb+WZpupz/y/tWy3g7HJ9sU6nCmdvEZ1irlL/bODjgNvdFO7USFXfRsH8NaDecR6HyP5S1d9RDwrub+vJZeva/b+5hD76Cv3/PmhY9P6j/+H95brrYn0JnY0V1sWDkjlctC6uSXX5GQAA//8ugrw+wBYAAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+yYzW7TQBDHbbdV3NKqQQLJ5UMKLYccUNzmSxUnLpUqIQESHOjJOInbLHLsyOtIiBOPwJFH4MiRR+mjcIPdeqyuF0/kxvgDwUqj8Vpje/yfn2c3MZRoNMEfgpfPx16XvBw3VSP/jFmD2TGcfwv+A/gv4L+DvwT/A/w+s3vM3py9OrGen5w9nfnv/U7o0LDzOgwW4/AoY1w3Y1wvY1w/Y9wgY9wwinvC7PGyuJfnLxaua49ch8Y6NkB3LvlUqAOff9OSc30jOf/aSM6nW8l5eyc5/7QbzVtS3RWot6Fd110cMU8xBz9hnCrpYxfeKy7yHju+zQwp/2/86XD9BTOLmTn1Z44ZLCb+jHhOYPL7mDQYRwfzxcglY5N4oROc22OHmiPiTYh3QU3+LGpSJyC2Sz7aIfE9i5+z6NXzaYffYHatr5J8/2Mpr4aSbWD6KYJ+3LeR6zchH4Loswm5VqWPIeSqCnlhXLUL4aqLctVFdNuuIVfrQr8smqtbzNZ4n5i4qfrsAFtl6iOOvJzNC+Gsh3LWW7LO1o2zjRI5a0IuUZbWkawP13KrRH1aKfmJdZPXq6z7lry8fi6E1z7Kax/h9U4NedVK5HUb+vDEDu00fe6CnlXwynOPv19d4unf4HmA8jxAeDb+83zF89wmQZo+e/DNV8GzJqxHdee5mH3rEOV5iPD8oIY8qxXsW1mWqfo8/Ev3rQZwdrm+XKdTibN3iE4xV6l/NrBxwOx+CndypKxvq2T+WlDvOI9DZH2p6++oRyXvb5vJtnXj/b++gj5qjv3/PmhY9vqj/uH15aZ9sbmCzlqOvnhQMYfL+uKa0A9/BQAA//9CnCj5wBYAAA==";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart
index 7ed5cbb..b6f3ca9 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_enums.mojom.dart
@@ -91,7 +91,7 @@
// 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 = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikThmIpYE4JDLANd7bNdIqNz8rX68ktbhELwRIuOaV5sLNY8RiH7o9L9DsY0BzvwWU/g8FHgzYgQDUDpgjpIBsISDG4TwMdzADMSsQBwOxNxDrZ+TnpuonViXmZeqDzNAvLkqGMApKk3Iyk/Uz80pSi9ISk1OL9ZMy81Iy89KL9UH2QMj4VKBNxXogDRALNYCYBYgVoPYlMELoBUwQ+gEzqr81YB5jRHWnBCOqvykNNx6ou0Jcg0NAfHkgFscabnpgJejhBtLLRMNwIza9CUDjED0cCIUjI5XCkRNqVhiULwPEItjDMQxb+mMdZOHISGI4MlEpHLmh9rv5+4P5ckAshj0cwUrQw5FtkIUjE4nhyEzlcHRyDCIUjmAl6OHIPsjCERYugAAAAP//ioRTgOgGAAA=";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikThmIpYE4JDLANd7bNdIqNz8rX68ktbhELwRIuOaV5sLNY8RiH7o9L9DsY0BzvwWU/g8FHgzYgQDUDpgjpIBsISDG4TwMdzADMSsQhwOxPxDrZ+TnpuoXlabk52bmpRbpg8zRLy5KhjAKSpNyMpP1M/NKUovSEpNTi/WTMvNSMvPSi/VBdkHI+FSgbcV6IA25DBpAM1mAWAFqXwIjhF7ABKEfMKP6WwPmMUZUd0owovqb0nDjgborxDU4BMSXB2JxrOGmB1aCHm4gvUw0DDdi05sANA7Rw4FQODJSKRw5oWaFQfkyQCyCPRzDsKU/1kEWjowkhiMTlcKRG2q/m78/mC8HxGLYwxGsBD0c2QZZODKRGI7MVA5HJ8cgQuEIVoIejuyDLBxh4QIIAAD//1XEaKPoBgAA";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart
index 7612746..edb6f59 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_included_unions.mojom.dart
@@ -104,7 +104,7 @@
// 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 = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikTgOIFYA4JDLANd7bNdIqNz8rX68ktbhEzzMvOac0JTUlNC8zP08Cqg+knwmPPT/Q7GNAcz9M/D8UBDBgB6JAzAvEKI4A8uWBWByIcTgTwz3sQMwGxLFAHArE+hn5uan6iVWJeZn6IDP0i4uSIYyC0qSczGT9zLyS1KK0xOTUYv2kzLyUzLz0Yn2QPRAyPhNqW3wpyLpiPZDWXBzhygANW2T3MKP5E1c4MSCFE7J56IATam8ijvjggIYBrf0PCAAA//+6lv0qsAIAAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/5JggAABKG0ApdHFYTQHGo2uzgGJz4ikTgOIFYA4JDLANd7bNdIqNz8rX68ktbhEzzMvOac0JTUlNC8zP08Cqg+knwmPPWBFSPYxoLkfJv4fCgIYsANRIOYFYhRHAPnyQCwOxDicieEediBmA+JEII4EYv2M/NxU/aLSlPzczLzUIn2QOfrFRckQRkFpUk5msn5mXklqUVpicmqxflJmXkpmXnqxPsguCBmfCbUxvhRkZbEeSGsunvBlgIYxsruY0fyLK7wYkMIL2Tx0wAm1NxFHvHBAw4Je4QAIAAD//8B6whbAAgAA";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
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 e0e0065..1d95d35 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
@@ -6234,7 +6234,7 @@
// 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);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart
index 5ef9721..e174de4 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/test_unions.mojom.dart
@@ -3441,7 +3441,7 @@
// 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);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart
index baac91b..9bdee8a 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/validation_test_interfaces.mojom.dart
@@ -3529,7 +3529,7 @@
class _BoundsCheckTestInterfaceServiceDescription implements service_describer.ServiceDescription {
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["this.is.the.service.name.for.BoundsCheckTestInterface"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["this.is.the.service.name.for.BoundsCheckTestInterface"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
@@ -4498,7 +4498,7 @@
// 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);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
index 88e1906..e58fa8c 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/test/versioning/versioning_test_client.mojom.dart
@@ -785,7 +785,7 @@
class _HumanResourceDatabaseServiceDescription implements service_describer.ServiceDescription {
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["mojo::test::versioning::HumanResourceDatabase"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["mojo::test::versioning::HumanResourceDatabase"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
@@ -1200,7 +1200,7 @@
// 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 = "H4sIAAAJbogC/+xaz4/bRBS2na02bCksbZcYClsvCIgKjSsQUpRedsUGFVFQYFFpT6nXmbJGGyfYzmrLiT+FY48cOXLkT8iRY4859gYzyRs8Gc/4R+LYqbQjPc3acTzzvnnvm+/NRldmbRv6MfT8/Q5zrWKrwvXn2G5j6w9+HrRaAfKDVusMeb4zcB33p1br3qhvud8jfzDybHRoBdax5SPBe/jx7kF/F9tn2H541Gl3v24/apGBGmScRjhMQzaK/P1/Q29gqzCf70N/Av0dbPXE8Q/R0PKCPnKDBn72w8Tn2/3h6eApQsv714T5U7/q3DpNKuE1+XNcFeMxfZjxX2H8Z+//C+2hIm5XsW1hCxGZ3f8I202Ikxj4IvO6jO0Sti62H7GZJ4M+Mq1fLdcxybtM37NnfwxHx6eObTpugLwnlo1889hxe/j1vknG881wwC650bVPHbJg5Mv96bgaM+5jdd5/iquuKrFNhl8zJX5XwN+jg/vtI8itD5Jxa9DnefxeBb9WjV/WPEmLq5oTrpch/g/bD6bXH2N7PwWu9Hke1ytriqvB8R0F8M+NbDh2JDhuA6dSBiOx+a4Mx5DmIviRfrMA/Hh+N2hea/N4NLn5bSnpmgxPhcFTdJ+2axCbCKDqOj1hvL2B7ZUC8BLhMd1HJPOvLoCHyuQ93whfkVB1rT4S4XC1IBy2JX6xuBCefhGTJ1lx0WLihO6rPW5f5fG5BtxURF6J/DUSdEBWPpPpRAXy2uD2EXr9DPJ8DL0mWcc/OD1I+W8Ss67sfAyBvtxk7tP8PkLemWOjbyGsF9bNhGt3iD6WfP4ptlsyPpbLyEgc1WD9Vh1Hi+KgS+JOB/6gW58GcVKH+/S5fy7Bur826//aEcfRc+jPK6vh/YNej9klo37pBekMPo6p3w+19P6S1pT4ewN8Zvy97aFfRngi4noEWhE8z+azjOcnOeuBeoK+onpAFA+1Evldl+jArHVvHK+rkrxm4/KFmk9cvoPteiQu/eHA9dG6x2WWtmxcvg77mj+ysSu+kKdulYCLLG5kPP77Rrq6kterMh7fAb313Qh5T2PqnbdL5vHHlXzyheqPOX8ZJi8rX/jzm2212PpOljdbMC8o64RxUSuprotrVcn5C/3+uSRPfltCN1eY8Wj98I3jPpj5NR9/Hgo8B52h7hPsL/K6Q89xAwm+ZgnxZyTwk85pVD1hvxvnlL+72N4U5C/d8dYlf4fqy6HHboB+KIrX1RXpMRHOZD321Xz54XzF/HAdzpA4WlBE63a34HUjGNDxN7n6blne4PVOE4B6thGef6gp10krgMffgjPNgyCw7JMvp6vVoYslWK/dkvQT5ZlmRv7dl+C3B75H/J6rhi90VFYdtQs5XYaO0mLOgRc9H5fVG2n5jeDxScHnBCJ+i6vX4nTPhH0oh7x7D7SgKO/Cav+i3k9b75P4+mKN6/07wFsdLfxfgZZy/6vkoFO0hP2vBhjfd/yAqrCvelGc90o+N3iu5FN33ASfOX//3/XKyrtqCp5SYtab4qPndE5uwLujOM1Yap35SSuwLqO/53Bwzoh4ew9+c1SWvt9KEVcsf/0XAAD//7WpjXKIJwAA";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaT4/bRBS3nS2bbqm69F8MhW0WBESFxgiEFKWXXbFBRRQUWFRRcQheZ0qM1nawnVV64yPwUXrkyLEfgSMfYY+90ZnNm3oynvGfxGsn0o705LXjzMz7zXu/+b3Z6MqsbcP1b7jyz/vMvYqtDvdfYruPzfF+97rdEAVht3uC/MD2XNv9rdt9OHFM90cUeBPfQgdmaB6ZARL08wDbF9h+etLvDb7tPemSDtukv3bUXVvWW3y+L+DaxFZjPt+D6wiun2FrpY57gMamHzrIDdv43Y9S3+8542PvGULL+9WB+VO/Wvw6bET3Z+9dFq9fXZ33X2H8Z5//D+1nRdyuY9vCFiEye/4xtrsQBwnwxeZ1BdslbBa2X7AZI89Bhj8Zeo7tIt8g/RmBb83+GE+Ojm3LsN0Q+U9NCwXGke0O8RCBQcYMjGjQAXkwsI5tsmjky85rXDRm/JE6jwPFt6kqiU2GYycjjlfB78P9R71DyKEP0/Fr0/d5HN8Ev8rCMW/eZMVXLQjfK5APB73HZ/efYPsgA770fR7fqyuOb5PjbZrv/27kw7MvwXMbuJoyG4nV92R4RvQXw5FcN0vEkef/FuVBbR6XDjfPLSVbk+GqMLiKntN2A2IVAWQDeyiMv7ewXS4RNxEuBLqXEj/qC+CiMnzAN8JnJHRd00EiPK6XjMe2xD8Wn0ssgQnyJy8+WkLc0H14yO3DPE43gLvKzDeR380U/ZCX73j9qDNj1pjxWtz4z2F9/oOrJlnP55yOpPx4msCP7HyaAh29yTyneX+I/BPbQt9DmC+spwkX38Im+/xzbPdkfC2Xn7F4asD6lRVPi+KhS+JPB16hqapBvLTgOX2v/gbEzzWof26L44nGw1+189kX9odDZjeN+6WXrEv4uKb+j7TsfpPWkfh9B3xn/L7voz8meDJC/2krcx9g81y2D7wsWD+0UnQZ1Q+i+GisAP/rEh2Zt55O4n1Vku9snNYLitN3sd2MxWkw9twArUuc5mnLxuk12P+CiYXdCYQ8dq9CfGRxJOP7fzay1au83pXx/S3QaT9MkP8soX56Z0X4florJo+obpnzm2H8qvOIPy/S1XLrRlk+bcG8oFwUxkmj4noxqdUl5z30+1NJ/vy5hP6uMePROuQ72308820+Hn0U+jY6QYOn2GfkD8a+7YYSnI0K47GZwl86p3X1lP3xtKC83sF2W5DXdIdctbyequuh5+6A7iib/9Vz0nMivMm6PFSL5Y3pOfPGTTiz4uhCEa3fg4rWj2BB57HJ1Y/L8gmvk/YAsBcb0TmLmnG9tBJ4/m04U90PQ9MafX22an26aIJ126lYd1H+6efk5z0JjruAQcz/uWr7Qn8tqr92INer1F9awnn0ouf1svolK/8RXD6t6DxCxH9JdWCSXqL5uK0Vk4/vg5YU5WN0qnBxrpD3XIHE21drcK7QgTz9VYv+h6Fl3C9rBegbLWW/bADWj+wgpOrtm2Ec790VOZ84VYqpY+6C75zfr3fJqvOxnoHHlIT1pzi1CjoXbULfcbxmLLYO/KWVWO/R36nYOJdE/L4Lv62qul7YyhBnLL+9CgAA///TF/PBWCgAAA==";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart
index 4e7a7e9..1a70d58 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/regression_tests/regression_tests.mojom.dart
@@ -3292,7 +3292,7 @@
// 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);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart
index 441c612..00efab6 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_factory.mojom.dart
@@ -1084,7 +1084,7 @@
class _NamedObjectServiceDescription implements service_describer.ServiceDescription {
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["sample::NamedObject"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["sample::NamedObject"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
@@ -1764,7 +1764,7 @@
// 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 = "H4sIAAAJbogC/+xazW7bRhDmj4SoP0mcGI3YNFHkJnEVFBXV9NDApwCtaxsFaqMuUPvkUvKqpmuJKkkXbk899hH6CH0EP0IfwUcfffTRt3Ypzkqr5S4pyvwTbAKDNWmKu/PNfDOzP5rkXwvQ/gMt+/wNdS9jqcD9R1gWsThGb3CEVla+M3pof7N9iDou9332uy1on8O3ftjdWt37dnV3xf9gk/2e6Dun0DawlLDUmXHvQDuA9hmWKqe/b4yOa9m/Tz0e0Xe+R78eI8cdjkPj/t8ZWH0HrcN4PT1UBmfv/qrG4N6YvJeaY70lSm9yXTD3b5n7FoPTf3Cx75HrPpY7WAhOj/Df90b2H8EXsM8Slnex/IhlE4t+YPWQbvxh9E29Zx1aumN3/D8Gx+0js6ObfRfZXaODHL1t9vfN/s+O7mJEHd3vaq/rd9X0ftQL9EfweIKlDH97eCmAa4nSv0y9r4GD/XTXb8/hg40qH+cz4l+l6XCWKJzp74lw/trado+73YB+H4MuaeFZZ3hG9FxXp9fPu1oC/aqgI+j3mQ18YfUkV5p+o1D97ciT+tF8LHP4JLqSsr8IF8/+DzOwv8T0qzHjI3EuKg7y8CyF4FmZAU85BM/3ob+BOUC8/OHh+XmKeC5QMUgOyYsS+KPGxJm0eKjBWMY89PPSLQ/H/VWGPOTj8hzqn7x4SMZH6omoeuOtoJ7LmocuOnF5PPTwfJEBDyVBPSvioSjvS+qY10ngQ+wJfHzN4vMip7x/KacSb16TxJ91vGHtHjc/JR1novKTZ/fljHihRPBCpsbF+ss5tFcx/eWNAJcPsTyY9Bc/kAnmgUXwGzkHvxHFU89vvixIPJU587O6YJ6qxMBHofAX+c9XNjJcxM7eg3i9zDi+Er23lHh8Ec3Pl0DngL6jGVZxeZNlXfcepG6rfSj0g6UM/EBh+iXPF2GMrMdOuy51XR7+pU6UN1PhrYbwkNSlMB/c6A0s20X7GwQ1Fv/lnHh4kBAPG6CzSN8i1z1F4uFyyvlLxMMWtS7wGIsJBmwGLOm/9ylwc8TLiB/MWl9dknXsmH66LsD/FcS5ED8tfL1VJH/9JOU6vej+GpVPSjHsUArJJ0+xfOCN3/gF8UbM2w+Y53zyEnTm6kvVdrf8DOen97svclivK2o+SdpPvdhXC/FTkkxu/TTcT18B52+qn7J55ADWk/6U+XYgdvybOcdA/PU0ZL2VHk+dU+fc4czLtpH9m9kZTrCnOgchms89hn08wTQu4BdPUt5Hj9JDC9mHUCg7svs5dTViHT2l/dNt5A5txI776Zyvo5P9c9Avt/3zoq6H9oGYPLs/mIP1UOIvF3Ky+0uEF2sCXtRy4sWZlCwv1nLmRWUK+0sheSetfbcxLvns889bvKiBTxUtXojq+H/L4bjEPedHzu8w5/zI4wBed+F3aeHFnu/UgB91KD62VLFfSdL4LGDafvUO2OtEsG52D2ycFk5x97NLGZ+3ug/PsjpvxcNDodZTkzj3onCek+sh1O09y0Z7HigO3y+89lkG+VeGMRO/qHDygDzDPHlhBtzUa8yTFyFGZ4FXUebJdPwT5YGKmkweYM+XkfqKOVYWsMujlPMAO7+syPMR96s3PO5rGcf9qPN95P3/AwAA///DG/RPCDMAAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xaSZPbRBTW4qmYJYknU8QiJDMekgyZohiZcMA1p1RBSFJUQQpzIMVhxkubaIgsIcmUuXHMT+DIkZ+QI8f8jBw55pgbtKzXdrvVrcXR5mBVdbWlkab7ff19771eNCm4GlA/hZp93qHuZVzqcP8BLju4uD3TfoKOj7/pmWj4bf8MDTzu+9fhm+8fPbx78vXdR8fBh0fsd2z7z6C+hUsNlxbTrx+gtqHew6XJaeer3sCznN8S90P0f75Dv0yQ6836oXH/7trW2EX3ob++HSqDo3//fG8ZV+1w+b6jL+yWKLvJ9ZK5v8Pctxmc/oWLfY9cF3E5hwvB6TL+fWE+vnP4QuOzj8vbuPyISxcX/bFlIt2ZDC3TGCNHN60zS3edQfDDnvSfGAPdGHvIGfUGyNX7xnhojH9ydQ+j6upBcyejoLkj/yOTywuCy1VctuC3j5sC+NYoHLao9x8CIf8+D/zZDurnTT7eL6Ce1pLhLVF40/9PhPeXVtebjEYh+z4EW/LGtcXonth7qia307/aAjubYCvY+YkD+mHtJVcRPFKodk/lZTtpnW5xdCa6suKDCB+fD5cK5IPEtK8x/SR+MM5P8nCtReBaXwFXOQLXd6E927ARz4/4uH5aAK4NykfJnPioUX1WqPu89alBXxb6DOLXRp9hHdRn+uTjcx3yobL1SfpJ8pC4POWOIM8rWp8emno8ffq43ihQn5Ig3xXpU5QvaOpC71ngRMYVdHqbxelGyfnCrPHs/dFtkjCU5Y9YHqSNZ1n7obh45vPgoGC9KDF6kan3Wf78Q/xKSv50BPi8j8v2Mn8CRyeY31aJR3IJPBL5XZ9Hn1fM78qc+V9LMB9WUuCkUOMg4tMXDup5iF0lCON2syQ/TOw/Takj0XrAPtgesns+g6u+norMD9+BdQerfybkxX6BvFCY9snzHegry+Sk62Kvq88/IS9SU+CuRuiT5Lcw33xg2pbjoeEDghw7Dgcl63OakT5vQRsiu9chb6qSPg8Kincifbap9YgruBgwoEehkQ3e+xg0O9drzAer5mevoP49JW/vC8bhEPxgBG/XJl+rEn8/Kijvrzp/4+JOLcV41CLizjVc3vP73/sZ8XrM2694E+LOTbCdazeVG250m0y3/neflbhuWNW4kzVvfd+4G8FbEnQ2vE3G20PwBf933rLxxoYF36cyfzzIeP4B9V8Mf59FrP/S/Wlx8qNznHleFzm/GoPZBD7RuQ3R/PAK7D8KpoUhflwt6FxAnD1axD6JQo0nu+/UUaPX9/Pa/+0ibzZWbL+vvSHr++Q8ANhZ+nmAqq7LjkGwPB5sr9G6LOHPKznb/TCil3sCveyWrJcXUrZ6uVcRvdQT8EGKiFN57Rcu8Cn3/MK6+ZNd4FhV/YloXvByKxqftOceyXkl5twjeRzC7Tx8lzdu7LnXFjjQNujnsSrmmSQtzkbmzbO3YNymgnW7CzDWeeOVdn++ltN5FtH+/EV4VvR5Mx4uCrW+m8U5H4XznFyXYD5gWg468cFx+Tzx670C47YMfSc8qXPihrzCfLyxAn7qa8zHd8CXF4lbVebjS/5REC9aajbxgj1fR/Iz5lhdaHwuFxQv2HlsQ16P+NDcxIc5LmXEh7jzjuT9/wIAAP//4cQFxDg0AAA=";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart
index a1ccd7b..a679592 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_interfaces.mojom.dart
@@ -2332,7 +2332,7 @@
// 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 = "H4sIAAAJbogC/+xb3XLbRBSWLKeYlgxuk4BD/9QyBd8kdsIMeLhyLjw4A5nJEOhQbjqKvcRiYslIClN4Gi77GDwKl73sG8Aq3lOvjnf1k8jSOnhndjb68+p8+s53ds9uGtq01FnbZi0+D20Ntfi+v1nbpLVKq8mOO6z9ibUT1j6gdZPWH14c915+23vxtW+NJ+dkt+dcjMPrn9P6WHD90AnIGfEOBgPi+6532U9DcN+x5/5uD4kn+52Tyyb8Ne8Xa0C0PnvvOnrv8NigdVSJHtc/jB6/3hXj8oa1XS1a2qiff1nB90H5gL0f4LNB6x1aEWxz/YfPrdH6M63f09oauWPSsv60HLs1dn91W743mP4xuTg9twctGyDxW6e2M7SdM78VED/wW9OuXs5u2A2fG8/60zl+tDk+XPJG12JLWnz6kufXmZ3PD777sUfbbVrvRvHZhWsinMLnKwXglMR7wMvEBjL8jAS8ugivYwleH9MaUhj70yN67qMZbvjyHG7h8e0CcBP1C8cVDqIGO4b7mreiPDSRX9Yq6XiocbiKzkO5x/D4hgQMO/H7bxfENxPh9SalLmmIRx2JvZ8wm2f27njktwv6YmK7oSza7pom1qUGeo+aFo/TX0Y+ON1nmh3ByZ+4jk9KxQn7S12P2ttB73VLS1fS+lEzId4NrcCS+c92AfiIcAjjTEcSz4BPFU38/CsBDjo3LsIF89cU6J/B9Qf6c2Q7z4nn264TxTP4Y0JkeH5RoB5pEj3H45ykeIn5awr8XBf0U2G1oYnjQ1ufD796hu/56prfU0/4nnD+JCHO3C85zuSlnxBnThSLM8uqnxCPVNVPo2D9NK6pnyGeO/8j/TQS9BPK2yvO87ox3zP8ljC/h3kMmvYL8xhlzFOaXL5jjcOzwjCscjiscfe/ZjeP1tmJDYZnI34+0zQWM5/pDUbuSeBRGMR23i05zsA8Lq84M7NXjTiDdUykq7rA3xYVX95n/VmanA+bBeESp/cyHVs0jyC+RnikwHxvGXn0VGEeyXS4X42k7VLhpMfoMOR7Z3zyhXjdK1mHm8ai/MePCLEq431TXw4/CnmxVYIfZcWldgVc9BS4nMbg8lgxfeHH1Yv2M5gfRP1sFqhWfpbdz3ZWfibE5SuF/QzHccCtY4jzuXE4VbjvgMtDpsOhvx0R37fOyLE9IX3LGZ4TAW4bJcVzsL+ecTwsm7c/Y7YL7eYiu8rj4qpCOrNRgs7o15hf5c2nz2h9FMMniGArPqXn06HCfML6/A/sKzLS7YvgcTJicIL8YsirMEeKcdosSY/B3m5G/5HNJxvMJrATJFhlf1lTyF822d/Llu+/bn6sn1N+DPZncfzjsmNq67ZqPHxwg3ko0/0aE/xqBpyrMTiHa0jvMT4eOsEczlsl6/5bPR/dh/UyZue7kbfK/qZxa2dl+9tWQbp/VZ3Omy/8OGHKl6lMr/iSni8PFeJL0v7iJFy6iDdJ+4vxPnu0vxhfnsPPLGnd3uTiq4HW7eG6wT3XZhfM2/HrQln5B/3K/DPk1/o7nI9IMHKHbYE9T7Wbsd8Y8mcRexXIH2XdbyzjRyfjuqEewxsZP/YEOD0pmR8NY3H82FOAH1n3CRYVv+4wHbOdPaEOPmHnytgnWOT6xQyHfSkOzwrMj+k5rROOcvIriNvYr8rOs6q6TgjzYfci2JPx6csS+JQ1n5G3n3G47MtwObhh+Yy4dUY8Lky7zgj/v5Al7u8L8P70Bo8L95dwXPhfAAAA//+HL5ihmD0AAA==";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xb3W7jRBS243QJu1Rkty2k7J930UJuWqdFgoir9CIiFVSqVKjYG1ZpMjRGjR1sBy1vw+U+Bo/C5V7uG8C4mbMZn8z4p3XsSelIo6n/Mj6fv/OdmTPThjYrdda2WIvPQ1tDLb7vb9Y2aa3SarLjNmt/Zu2EtY9o3aT1x5fH3Vffd19+6/fHkwuy23Wm4/D6l7Q+FVw/dAJyTryDwYD4vutd9tMQ3HfsuX/YQ+LJfufksgl/zfu1PyBaj713Hb13eGzQOqpEj+sfR4/f7IpxecvajhYtLdTPv6zg+6B8xN4P8Nmg9R6tCLaF/sPn1mj9hdZTWq2ROyaWNx26Y9shnjV2f3Mt3xvM/phMzy7sgWUDLL51ZjtD2zn3rYD4gW/Nuns1v2E3fG4860/n+NHi+HDJG12LLWnx6UmeX2d2nh788FOXttu03o/iswvXRDiFz1cKwCmJ94CXiQ1k+BkJeHUQXscSvD6lNaQw9qcn9Nwnc9zw5QXcwuO7BeAm6heOKxxEDXYM9zXvRHloIr+sVdLxUONwFZ2H8oDh8R0JGHZivm0XxDcT4fU2pS5piEdtib2fMZvn9u545PcpfSmx3VCWbXeN61cXxC0NxTMZTn8Z+eD0kGl2BCd/4jo+KRUn7C91PWpvG73XHS1dSetHzYR4N+wHfZn/bBeAjwiHMM60JfEM+FTRxDi+FuCgc+MiXDB/TYH+GVx/oD9HtnNKPN92nSiewZ8TIsPzqwL1SJPoOR7nJMVLzF9T4Oe6oJ8Kqw1NHB9a+mL41TN8z9fX/J56wveE8ycJceZhyXEmL/2EOHOiWJxZVf2EeKSqfhoF66dxTf0M8dz5H+mnkaCfUN5dcZ7Xifme4beE+T3MY9C0X5jHKGOe0uTyHWscnhWGYZXDYY27/w27ebTOTmwwPBvx85mmsZz5THcwck8Cj0Ig1tv7JccZmMflFWfm9qoRZ7COiXRVF/jbsuLLh6y/vibnw2ZBuMTpvUzHls0jiK8RHikw31tFHj1XmEcyHe5VI2m7VDjpMToM+d45n3whXg9K1uGmsSz/8SNCrMp439RXw49CXmyV4EdZcaldARc9BS5nMbg8VUxf+HH1sv0M5gdRP5sHqls/y+5nO7d+JsTlG4X9DMdxwK1tiPO5cThVuO+Ay2Omw6G/HRHf75+TY3tCen1neEEEuG2UFM/B/nrG8bBs3v6C2S60m4vsKo+LqwrpzEYJOqNfY36VN5++oPVJDJ8ggt3yKT2fDhXmE9bnf2BfkZFuXwSPkxGDE+QXQ16FOVKM02ZJegz2djL6j2w+2WA2gZ0gwSr7y5pC/rLJ/l61fP9182O9nPJjsD+L4x+XHVNbt1Xj4aMbzEOZ7teY4Fcz4FyNwTlcQ/qA8fHQCRZw3ipZ99/p+eg+rJcxO9+PvFX2N41bOyvb37YK0v2r6nTefOHHCTO+zGT6li/p+fJYIb4k7S9OwqWDeJO0vxjvs0f7i/HlBfzMktbtTS6+GmjdHq4bHM4tdsG8G78ulJV/0K/MP0N+rb/H+YgEI3fYEvDwuXYz9htD/ixirwL5o6z7jWX8aGdcN9RjeCPjx54Ap2cl86NhLI8fewrwI+s+waLi1z2mY7azJ4xfz9i5MvYJFrl+McdhX4rDiwLzY3pO64SjnPwK4jb2q7LzrKquE8J82J0GezI+fV0Cn7LmM/L2Mw6XfRkuBzcsnxG3zojHhWnXGeH/F7LE/X0B3p/f4HHh/gqOC/8LAAD//ycEy8+YPQAA";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart
index d13537d..f80f2ad 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/sample/sample_service.mojom.dart
@@ -2195,7 +2195,7 @@
// 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);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart
index 362d849..97ac94f 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/test/echo_service.mojom.dart
@@ -439,7 +439,7 @@
class _EchoServiceServiceDescription implements service_describer.ServiceDescription {
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["test::EchoService"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["test::EchoService"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
@@ -765,7 +765,7 @@
// 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 = "H4sIAAAJbogC/+xXzW/TMBR3mgFlHYhPKXwcBqdwYOY4VULqgZ6Q+NCQ0E7F6gwLapoQp2Pwl/AncOTP2ZHjjhy5gb08C/fVDi5aIzr1SW+v9uJn/37vw0lEKrkC9itYPL9tjAOpbRjfknpVaslF2e32h/vZDi8OkiF3PI/9PgJ7D3y92n3RHzzt73aVw61Zfy4/Pcd+vn4jWKfWh8b6GOwm2DdBZQ/BErS/5ukL4vMXyDdiF3zuTQvOC8b8dakdqYDiGUu5Vzz0OvyfCPbA9GCe1fnWpb6W+lwq3c9STtlnNk5omr3PqCiG1Y89VpSU5bnyKKj6O5AjQZNxyYu3bMgF5XKfgag22lKL0r+eH5/H5GkNfiseWxDHGOb1c4fnKvujU9njS/Y4f9f7hPY4E5S/xIizbV7LNeDvBFlZJON3dlwXAcOieMb5pfH+DPxxKtl24LwNWP/gfFjwDxN5OjteLYvCi+ur5+hrx8RPfPMgdqxXaadS8YCNJtwR/5sL5kPXSl2fJkZftPWl086bO9CjpvJG5NlY8FXeeOZN/B/mDe6vmq94bdqfDz+BwT8WfX884SP2ie/hNjvD13rDfVbjbofz1UvPgVe/38zgnW63jddNBLzq/aJgOepH5cPdBuvHxgeBM9qk/Q98BDV8XJZ6XmqajEaJsPPxoMH+avaPljF21dHJQ6dQR/fhncVWR8b1s7p/POrn8RLcP0cIV2sOflo1/GzA98bOR5bb8qXT8H1zhKxvnbi+X24ARoXPvGKarou2R/xJzXc8jn84Bz+hR/xfThIrLxtnJP4K3zLF/3cAAAD//6KdCaLoEgAA";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xYS28TMRDeR4HQBlReUngcAqdwoOZYRULKgUiVkFBRuVQcolViyKLsA3u3iBtHfgJHjhz5ST1y5B+AzY7BmdiRFzUsQRlpOvE2s/b3+ZvxbjpeZbsQP0DE1/e1sS+8BeObwq8ILygv+v3heJodUXYSj6nl+3ch5/nx4XD0ZHjcl4l7i3l4/sEZ3M+H/FDL70HsQpz6VXwP0UPzKx4+QvwM8TvYF89seN1dA84L2vVrwneEA4qnUUKd+FZ5+D8dmAPTg3mW69sW/kLOLZxMs4QSVk6yJE4pI0n2OiOcjasPk4gVJMpzeVdO5N+RGHESpwVlL6Mx5YSKuUa8mmxPJiVOOPC6dL624LPkM4D97MF19b1P56p40K7i4WXzfn9VOgjN+63sIRrLvTZdV3YVePyJrGBx+sqM6yJgWDXfWG8Kdytwxytt34L3FmD+jfcBo29KsUIzbmWrxo3rbmDpZ988N3PVRc+Sf0m4lOZJNCupRQ83/hIvqoZMPHW0NfuWOlyFjm5DD5vTEc+zlNONjmrqqPcP6wj3YcXbwdb8/Vx48rV9wKbOmcd0Fr2jE9yOF3jbbqgfK/zdsF4dDSy41XPRAu75ttxYPXWA5199xV+PupL6uNNAXZl48WCtJmv9AS/+El7k49N54Uk8m8XczMv9Bvqw3l8CbWyrr93gbOrrHjzzmOpLO64251WNunq0RufVKcIX1OApWMJTG95jjt5GuUk/Ow2dT6coutaP7f3oOmCVOPUjqal6aTnowVvyuwHWQ1iDp9BBD8/K2MhP+z/Tg8S5jnr4EQAA//+qos9XSBMAAA==";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
index f965f9c..e5339dd 100644
--- a/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
+++ b/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
@@ -681,7 +681,7 @@
class _PingPongServiceServiceDescription implements service_describer.ServiceDescription {
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["test::PingPongService"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["test::PingPongService"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
@@ -1231,7 +1231,7 @@
// 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 = "H4sIAAAJbogC/+xZz1LUThBOssBvf+DyR0FWQFgVLS4SqvRAcaJKKQ9a1ipYBeUBU+uIUXYTkywHTx59BB7BR+BRPHL0yNGbzpAeHSbT2YTKJsFiqto4s+xkvm+6++uZrWthG4fnN3jK46tCX6dWhf5NalPUAuIHa2tNu7PXdDp7m8Q7sFtE8ffyvCvwvAtzbe00N3afbuyssQmXo/Nh87jCuKGYf5HaHDr/o32bdII061gS3lOR1sP6XwbC/hKMNzSp6We769LHK9L4L2hNTd2uUxulJiOapWPXYH8UcCM8zlMbpvaa2iY1873TJqb12erYZtv54Ji+1wr/89byAtNyXTazb7J/d2nPN+1OQLx3Vov4pkvf59L37fohb8vsi23le3n/ikSN7D8yn8cIHxifmsCnOJ/c2DrYFjK6VOtdgP3vN08NiR+O96eeHCdrKwjOScDKcN73yKcuXZ8KL2/9xivv97oi/2jC571aUj/A+LkK8XC63ANrv0vU+WcB4i9vfupSShlH4sQFf/mK5B3O76GkA9x/jhB+5PU0FPn5P2Gc5aIRxlGI7LnVJol0ZJramJDf+Cdz4MNImo7sUzWn/NYLj7wucb+GhP00QE9YLhqEfRoS/PWoEj6/w5e2a7CvkzA+rfaHH32Klwlq/5/ubyCoTBTvcEH5k+PeNtLlz1UE7w3A/AevmERLnkeZP51knEcxPR0Fv22BU6j8YTZHf9Ck9zd61FFJ68fz5udjpDxMwruepI6x1XVM7V+rY+zLOia2jrHj65hayesYnr9X4XxlpODHiOFnCrAz/9myvD0SvHr5TMHPRMG6Va9ko1u8PjmDVwicouJGPr83dDx+9Bz1awTqsK63r4ybCahR84ibuPq9V16pnoOXOH2pQR3RcrqdAOHlTsH5xBD6WFyl1SEsruahhpDjyqfr9kn59UjLKZ54/e981NB4elBiHeJ55xB0qJKCl4rAO3ae+Os/wmFWwdNUQXrE8bsp9WgdwX0LsEdwl+Q8JeuSq5fjXDUG9yuwYqV/LJbgXIXd3yS9by+7zjGeH5ZY507EP8ogXm9Tm0HilWvdRTh/lUXvmP88vgB6x9tACl4GYvRuBs6mT0iguL1V/05UpN69yTh+orjPCt7l/WEynWP9ezn6hdEnncvq/nAwBe+DCe4PX3Rt5X3abMH3h8datveHDGcZ7g+ryO9rdaTO+R0AAP//6Z4S4sghAAA=";
+ var serializedRuntimeTypeInfo = "H4sIAAAJbogC/+xZT1PTThhOUuDXH1j+KEgFhKrocJEwoweGU2eU8aDjVMURTjVT1hptk5g/nD3yEfgIfgQ+iscePXL0prv0Xd1udtOESZPgsDOvcbeku8+z7/s+726rSr/NwvMYnvz4NtNXsZWhfxvbAjYfef7OTsO02g3bar9B7pHZQoK/vw/v7B00dpvPdw92yIub4ff4+R1mXRozvgXPdWwr0u990jGR5SeZf4OZp8Sth/S/jvX7GzBeU7imDnbr3Mdb3PgvaA1F3G5im8bGI1rGYzeAfwHcEI+r2CaxNbG9w6Z/tLtId4NDu2tayNW79idb99xW/z+HhuvrhuOQb/d08m8T9zzdtHzkfjBayNMdPKeD52x6fe42yYvd0Ly0f42jhvcPns+ehA8ZnwrDJ/t9fCPrIFtI6BLxtAb7P2qeahw/FO9PNT5O0rYkOOcBK8H50EVfArw2EV7aRo2X3++6IL8ozOfDWlw/kPFzHeLhfKlHRidA4vy3BvGXNT9VLqXMSuLEAX85luQdyu8JPL9x/nMq4YdfT02gD/8x4yQXTWGDTPrS6KJYOrGIbYbJb/STFfBhSZoO7VM5o/w2DA+/Lna/Jpj91EBPSC4ah32aYPz1tNR/foeX9iuwr/Mwvij2hx8jipc5bP+f76/PqEwY72RO+ZPi3teS5c9tCd5bgPkPXjaJFjyPEn86SzmPyvR0Gvy2BU4h8oflDP1B4eavDamj4taPF83PPUl5GId3NU4dY4rrmMq/VseYV3VMZB1jRtcxlYLXMTR/b8P5SkvAjxbBzwJgJ/6zZ7ht5L99/ULAz1zOulUtpaNbtD4ZwMsETl5xw5/fa6o8ftQM9WsK6rDA7QjjZg5q1CziJqp+H5ZXyhfgJUpfKlBHtOzA8iW83Ms5n2hMXxZXSXVIFlerUEPwceXhNXuo+HqkZBRPtP63PyvSeHpUYB2ieecEdKiUgJcSw7vsPPHXf5jDrICnhZz0iOJ3EupRXYL7DmAP4S7IeYrXJUctxrlqBu5XYLVC/1gvwLlKdn8T97696DpHeH5cYJ07Y/8ohXi9i21JEq9U6y7D+asoekf85+kl0DvaxhLwMhahd0twNn2GfMHtrSL8nShPvXufcvyEcQ8K3tX9YTydI/0HGfqFNiKdS+v+cDwB7+Mx7g9fBabwPm055/vDnpLu/SHBWYT7w7Lk97WqpM75HQAA///pZoNCqCEAAA==";
// Deserialize RuntimeTypeInfo
var bytes = BASE64.decode(serializedRuntimeTypeInfo);
diff --git a/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart b/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart
index 55064f2..6d7f815 100644
--- a/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart
+++ b/mojo/dart/packages/mojo/lib/mojo/bindings/types/mojom_types.mojom.dart
@@ -2609,112 +2609,11 @@
}
-class ServiceTypeInfo extends bindings.Struct {
- static const List<bindings.StructDataHeader> kVersions = const [
- const bindings.StructDataHeader(24, 0)
- ];
- String topLevelInterface = null;
- List<String> completeTypeSet = null;
-
- ServiceTypeInfo() : super(kVersions.last.size);
-
- static ServiceTypeInfo 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 ServiceTypeInfo decode(bindings.Decoder decoder0) {
- if (decoder0 == null) {
- return null;
- }
- ServiceTypeInfo result = new ServiceTypeInfo();
-
- 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) {
-
- result.topLevelInterface = decoder0.decodeString(8, false);
- }
- if (mainDataHeader.version >= 0) {
-
- var decoder1 = decoder0.decodePointer(16, false);
- {
- var si1 = decoder1.decodeDataHeaderForPointerArray(bindings.kUnspecifiedArrayLength);
- result.completeTypeSet = new List<String>(si1.numElements);
- for (int i1 = 0; i1 < si1.numElements; ++i1) {
-
- result.completeTypeSet[i1] = decoder1.decodeString(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, false);
- }
- }
- }
- return result;
- }
-
- void encode(bindings.Encoder encoder) {
- var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
- try {
- encoder0.encodeString(topLevelInterface, 8, false);
- } on bindings.MojoCodecError catch(e) {
- e.message = "Error encountered while encoding field "
- "topLevelInterface of struct ServiceTypeInfo: $e";
- rethrow;
- }
- try {
- if (completeTypeSet == null) {
- encoder0.encodeNullPointer(16, false);
- } else {
- var encoder1 = encoder0.encodePointerArray(completeTypeSet.length, 16, bindings.kUnspecifiedArrayLength);
- for (int i0 = 0; i0 < completeTypeSet.length; ++i0) {
- encoder1.encodeString(completeTypeSet[i0], bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0, false);
- }
- }
- } on bindings.MojoCodecError catch(e) {
- e.message = "Error encountered while encoding field "
- "completeTypeSet of struct ServiceTypeInfo: $e";
- rethrow;
- }
- }
-
- String toString() {
- return "ServiceTypeInfo("
- "topLevelInterface: $topLevelInterface" ", "
- "completeTypeSet: $completeTypeSet" ")";
- }
-
- Map toJson() {
- Map map = new Map();
- map["topLevelInterface"] = topLevelInterface;
- map["completeTypeSet"] = completeTypeSet;
- return map;
- }
-}
-
-
class RuntimeTypeInfo extends bindings.Struct {
static const List<bindings.StructDataHeader> kVersions = const [
const bindings.StructDataHeader(24, 0)
];
- Map<String, ServiceTypeInfo> servicesByName = null;
+ Map<String, String> services = null;
Map<String, UserDefinedType> typeMap = null;
RuntimeTypeInfo() : super(kVersions.last.size);
@@ -2758,7 +2657,7 @@
{
decoder1.decodeDataHeaderForMap();
List<String> keys0;
- List<ServiceTypeInfo> values0;
+ List<String> values0;
{
var decoder2 = decoder1.decodePointer(bindings.ArrayDataHeader.kHeaderSize, false);
@@ -2776,15 +2675,14 @@
var decoder2 = decoder1.decodePointer(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize, false);
{
var si2 = decoder2.decodeDataHeaderForPointerArray(keys0.length);
- values0 = new List<ServiceTypeInfo>(si2.numElements);
+ values0 = new List<String>(si2.numElements);
for (int i2 = 0; i2 < si2.numElements; ++i2) {
- var decoder3 = decoder2.decodePointer(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i2, false);
- values0[i2] = ServiceTypeInfo.decode(decoder3);
+ values0[i2] = decoder2.decodeString(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i2, false);
}
}
}
- result.servicesByName = new Map<String, ServiceTypeInfo>.fromIterables(
+ result.services = new Map<String, String>.fromIterables(
keys0, values0);
}
}
@@ -2833,12 +2731,12 @@
void encode(bindings.Encoder encoder) {
var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
try {
- if (servicesByName == null) {
+ if (services == null) {
encoder0.encodeNullPointer(8, false);
} else {
var encoder1 = encoder0.encoderForMap(8);
- var keys0 = servicesByName.keys.toList();
- var values0 = servicesByName.values.toList();
+ var keys0 = services.keys.toList();
+ var values0 = services.values.toList();
{
var encoder2 = encoder1.encodePointerArray(keys0.length, bindings.ArrayDataHeader.kHeaderSize, bindings.kUnspecifiedArrayLength);
@@ -2850,13 +2748,13 @@
{
var encoder2 = encoder1.encodePointerArray(values0.length, bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize, bindings.kUnspecifiedArrayLength);
for (int i1 = 0; i1 < values0.length; ++i1) {
- encoder2.encodeStruct(values0[i1], bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, false);
+ encoder2.encodeString(values0[i1], bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, false);
}
}
}
} on bindings.MojoCodecError catch(e) {
e.message = "Error encountered while encoding field "
- "servicesByName of struct RuntimeTypeInfo: $e";
+ "services of struct RuntimeTypeInfo: $e";
rethrow;
}
try {
@@ -2890,13 +2788,13 @@
String toString() {
return "RuntimeTypeInfo("
- "servicesByName: $servicesByName" ", "
+ "services: $services" ", "
"typeMap: $typeMap" ")";
}
Map toJson() {
Map map = new Map();
- map["servicesByName"] = servicesByName;
+ map["services"] = services;
map["typeMap"] = typeMap;
return map;
}
diff --git a/mojo/public/interfaces/bindings/mojom_types.mojom b/mojo/public/interfaces/bindings/mojom_types.mojom
index 4b61192..c9bc675 100644
--- a/mojo/public/interfaces/bindings/mojom_types.mojom
+++ b/mojo/public/interfaces/bindings/mojom_types.mojom
@@ -462,31 +462,9 @@
///////////////// Runtime Type Information //////////////////////
-// This structure is a component of RuntimeTypeInfo.
-// It contains the information necessary to extract the types corresponding
-// to a single service. See the comments on RuntimeTypeInfo for a fuller
-// explanation.
-struct ServiceTypeInfo {
- // The type_key of the top-level interface for the service. This is the
- // type_key of the interface that was annotated with the "ServiceName"
- // annotation.
- string top_level_interface;
-
- // All of the type_keys of the types in the complete type set of the serive.
- // Note that this set is not restricted to the types from a single .mojom
- // file.
- // Note(rudominer) Currently this array is not being populated by the Mojom
- // parser because it is expensive to do so and the value is not being used.
- // This field is deprecated and may be removed in the future.
- array<string> complete_type_set;
-};
-
// This structure contains the information necessary for an implementation of
// |ServiceDescription| (see service_describer.mojom), but restricted to a
-// single .mojom file and not restricted to a single service. At runtime an
-// implementation of |ServiceDescription| needs to merge the |RuntimeTypeInfo|
-// from all of the generated modules in the file graph and then filter on only
-// those types in the complete type set of a single service.
+// single .mojom file and not restricted to a single service.
//
// Note that this structure is not literally a component of a MojomFileGraph.
// Instead, at compile time an instance of this structure is created and
@@ -497,22 +475,22 @@
// is deserialized into an instance of RuntimeTypeInfo that may be used by
// an implementation of |ServiceDescription|.
struct RuntimeTypeInfo {
- // All of the services contained in a single .mojom file. A "service" is an
+ // Maps a service name to the type key of the associated interface for all of
+ // the services contained in a single .mojom file. A "service" is an
// interface that has been annoted with the "ServiceName" annotation.
// This indicates that it can be returned from
// ServiceProvider.ProvideService() and its description can be returned
- // from ServiceDescriber.DescribeService(). The keys are the service names
- // (as specified in the "ServiceName" annotation) and the values are instances
- // of |ServiceTypeInfo| for that service.
- //
- // Note that the |type_map| field below is scoped to a single .mojom file and
- // so some of the keys in the |complete_type_set| field of each
- // |ServiceTypeInfo| struct may not occur in |type_map|. At runtime the
- // |type_map|s from multiple files may need to be combined in order to
- // get all of the types listed in the |complete_type_set| of a single service.
- map<string, ServiceTypeInfo> services_by_name;
+ // from ServiceDescriber.DescribeService().
+ map<string, string> services;
// All of the resolved user-defined-types contained in a single .mojom File.
- // The keys are the |type_key|s.
+ // The keys are the |type_key|s. Note that the complete set of types
+ // referenced (recursively) from a single Mojom service is not necessarily
+ // restricted to a single .mojom file. Thus this map does not necessarily
+ // contain all of the types necessary to completely describe a service listed
+ // in the |services| map above. At runtime an implementation of
+ // |ServiceDescription| needs to merge the |RuntimeTypeInfo|
+ // from all of the generated modules in the file graph and then filter on only
+ // those types in the complete type set of a single service.
map<string, UserDefinedType> type_map;
};
diff --git a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
index 1c59772..31fc778 100644
--- a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
@@ -11,7 +11,7 @@
class _{{interface|name}}ServiceDescription implements {{descpkg}}ServiceDescription {
{%- if should_gen_mojom_types and interface.service_name %}
dynamic getTopLevelInterface([Function responseFactory]){
- var interfaceTypeKey = getRuntimeTypeInfo().servicesByName["{{interface.service_name}}"].topLevelInterface;
+ var interfaceTypeKey = getRuntimeTypeInfo().services["{{interface.service_name}}"];
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
return responseFactory(userDefinedType.interfaceType);
}
diff --git a/mojo/public/tools/bindings/generators/go_templates/interface.tmpl b/mojo/public/tools/bindings/generators/go_templates/interface.tmpl
index 1160fcf..f025715 100644
--- a/mojo/public/tools/bindings/generators/go_templates/interface.tmpl
+++ b/mojo/public/tools/bindings/generators/go_templates/interface.tmpl
@@ -199,7 +199,7 @@
{% if should_gen_mojom_types and interface.service_name-%}
func (sd *{{interface|name}}_ServiceDescription) GetTopLevelInterface() (outMojomInterface {{typepkg}}MojomInterface, err error) {
- interfaceTypeKey := getRuntimeTypeInfo().ServicesByName["{{interface.service_name}}"].TopLevelInterface
+ interfaceTypeKey := getRuntimeTypeInfo().Services["{{interface.service_name}}"]
userDefinedType := getRuntimeTypeInfo().TypeMap[interfaceTypeKey].(*{{typepkg}}UserDefinedTypeInterfaceType)
return userDefinedType.Value, nil
}
diff --git a/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1 b/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1
index c280431..fe49668 100644
--- a/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1
+++ b/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1
@@ -1 +1 @@
-6d45548eae878e24b49e8a5bc03f5b2dc309e343
\ No newline at end of file
+74937dec14c2f50951e4138cbc4e0ba61e99c8f6
\ No newline at end of file
diff --git a/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1 b/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1
index be15808..ab63c6d 100644
--- a/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1
+++ b/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1
@@ -1 +1 @@
-21aaa1698154a0b1293cba29ed1c9372f450cea5
\ No newline at end of file
+6333324072d2511f287458bd91f777fc042ea681
\ No newline at end of file
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py b/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py
index 62377d8..6e34baa 100644
--- a/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py
+++ b/mojo/public/tools/bindings/pylib/mojom/generate/generated/mojom_types_mojom.py
@@ -250,20 +250,11 @@
],
}
-class ServiceTypeInfo(object):
- __metaclass__ = _reflection.MojoStructType
- DESCRIPTOR = {
- 'fields': [
- _descriptor.SingleFieldGroup('top_level_interface', _descriptor.TYPE_STRING, 0, 0),
- _descriptor.SingleFieldGroup('complete_type_set', _descriptor.GenericArrayType(_descriptor.TYPE_STRING), 1, 0),
- ],
- }
-
class RuntimeTypeInfo(object):
__metaclass__ = _reflection.MojoStructType
DESCRIPTOR = {
'fields': [
- _descriptor.SingleFieldGroup('services_by_name', _descriptor.MapType(_descriptor.TYPE_STRING, _descriptor.StructType(lambda: ServiceTypeInfo)), 0, 0),
+ _descriptor.SingleFieldGroup('services', _descriptor.MapType(_descriptor.TYPE_STRING, _descriptor.TYPE_STRING), 0, 0),
_descriptor.SingleFieldGroup('type_map', _descriptor.MapType(_descriptor.TYPE_STRING, _descriptor.UnionType(lambda: UserDefinedType)), 1, 0),
],
}
diff --git a/mojom/mojom_tool/generated/mojom_types/mojom_types.mojom.go b/mojom/mojom_tool/generated/mojom_types/mojom_types.mojom.go
index 799e226..35f88fc 100644
--- a/mojom/mojom_tool/generated/mojom_types/mojom_types.mojom.go
+++ b/mojom/mojom_tool/generated/mojom_types/mojom_types.mojom.go
@@ -2421,120 +2421,8 @@
return nil
}
-type ServiceTypeInfo struct {
- TopLevelInterface string
- CompleteTypeSet []string
-}
-
-
-func (s *ServiceTypeInfo) Encode(encoder *bindings.Encoder) error {
- encoder.StartStruct(16, 0)
- if err := encoder.WritePointer(); err != nil {
- return err
- }
- if err := encoder.WriteString(s.TopLevelInterface); err != nil {
- return err
- }
- if err := encoder.WritePointer(); err != nil {
- return err
- }
- encoder.StartArray(uint32(len(s.CompleteTypeSet)), 64)
- for _, elem0 := range s.CompleteTypeSet {
- if err := encoder.WritePointer(); err != nil {
- return err
- }
- if err := encoder.WriteString(elem0); err != nil {
- return err
- }
- }
- if err := encoder.Finish(); err != nil {
- return err
- }
- if err := encoder.Finish(); err != nil {
- return err
- }
- return nil
-}
-
-var serviceTypeInfo_Versions []bindings.DataHeader = []bindings.DataHeader{
- bindings.DataHeader{24, 0},
-}
-
-func (s *ServiceTypeInfo) Decode(decoder *bindings.Decoder) error {
- header, err := decoder.StartStruct()
- if err != nil {
- return err
- }
- index := sort.Search(len(serviceTypeInfo_Versions), func(i int) bool {
- return serviceTypeInfo_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
- })
- if index < len(serviceTypeInfo_Versions) {
- if serviceTypeInfo_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
- index--
- }
- expectedSize := serviceTypeInfo_Versions[index].Size
- if expectedSize != header.Size {
- return &bindings.ValidationError{bindings.UnexpectedStructHeader,
- fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size),
- }
- }
- }
- if header.ElementsOrVersion >= 0 {
- pointer0, err := decoder.ReadPointer()
- if err != nil {
- return err
- }
- if pointer0 == 0 {
- return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
- } else {
- value0, err := decoder.ReadString()
- if err != nil {
- return err
- }
- s.TopLevelInterface = value0
- }
- }
- if header.ElementsOrVersion >= 0 {
- pointer0, err := decoder.ReadPointer()
- if err != nil {
- return err
- }
- if pointer0 == 0 {
- return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
- } else {
- len0, err := decoder.StartArray(64)
- if err != nil {
- return err
- }
- s.CompleteTypeSet = make([]string, len0)
- for i0 := uint32(0); i0 < len0; i0++ {
- pointer1, err := decoder.ReadPointer()
- if err != nil {
- return err
- }
- if pointer1 == 0 {
- return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
- } else {
- value1, err := decoder.ReadString()
- if err != nil {
- return err
- }
- s.CompleteTypeSet[i0] = value1
- }
- }
- if err := decoder.Finish(); err != nil {
- return err
- }
- }
- }
- if err := decoder.Finish(); err != nil {
- return err
- }
- return nil
-}
-
type RuntimeTypeInfo struct {
- ServicesByName map[string]ServiceTypeInfo
+ Services map[string]string
TypeMap map[string]UserDefinedType
}
@@ -2547,18 +2435,18 @@
encoder.StartMap()
{
var keys0 []string
- var values0 []ServiceTypeInfo
+ var values0 []string
if encoder.Deterministic() {
- for key0, _ := range s.ServicesByName {
+ for key0, _ := range s.Services {
keys0 = append(keys0, key0)
}
bindings.SortMapKeys(&keys0)
- values0 = make([]ServiceTypeInfo, len(keys0))
+ values0 = make([]string, len(keys0))
for i, key := range keys0 {
- values0[i] = s.ServicesByName[key]
+ values0[i] = s.Services[key]
}
} else {
- for key0, value0 := range s.ServicesByName {
+ for key0, value0 := range s.Services {
keys0 = append(keys0, key0)
values0 = append(values0, value0)
}
@@ -2586,7 +2474,7 @@
if err := encoder.WritePointer(); err != nil {
return err
}
- if err := elem1.Encode(encoder); err != nil {
+ if err := encoder.WriteString(elem1); err != nil {
return err
}
}
@@ -2727,7 +2615,7 @@
}
}
}
- var values0 []ServiceTypeInfo
+ var values0 []string
{
pointer1, err := decoder.ReadPointer()
if err != nil {
@@ -2740,7 +2628,7 @@
if err != nil {
return err
}
- values0 = make([]ServiceTypeInfo, len1)
+ values0 = make([]string, len1)
for i1 := uint32(0); i1 < len1; i1++ {
pointer2, err := decoder.ReadPointer()
if err != nil {
@@ -2749,9 +2637,11 @@
if pointer2 == 0 {
return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
} else {
- if err := values0[i1].Decode(decoder); err != nil {
+ value2, err := decoder.ReadString()
+ if err != nil {
return err
}
+ values0[i1] = value2
}
}
if err := decoder.Finish(); err != nil {
@@ -2768,11 +2658,11 @@
return err
}
len0 := len(keys0)
- map0 := make(map[string]ServiceTypeInfo)
+ map0 := make(map[string]string)
for i0 := 0; i0 < len0; i0++ {
map0[keys0[i0]] = values0[i0]
}
- s.ServicesByName = map0
+ s.Services = map0
}
}
if header.ElementsOrVersion >= 0 {
diff --git a/mojom/mojom_tool/integration_tests/resolution_test.go b/mojom/mojom_tool/integration_tests/resolution_test.go
index 5a6e46d..f1434e2 100644
--- a/mojom/mojom_tool/integration_tests/resolution_test.go
+++ b/mojom/mojom_tool/integration_tests/resolution_test.go
@@ -1084,313 +1084,3 @@
}
}
}
-
-////////////////////////////////////////////////
-/// TestFindReachableTypes
-////////////////////////////////////////////////
-
-// typeGraphTestCase stores the data for one test case.
-type typeGraphTestCase struct {
- mojomContents string
- typeToSearch string
- expectedReachableTypes []string
-}
-
-// typeGraphTest contains a series of test cases.
-type typeGraphTest struct {
- cases []typeGraphTestCase
-}
-
-// addTestCase() should be invoked at the start of a case in TestFindReachableTypes.
-func (test *typeGraphTest) addTestCase(contents, typeToSearch string, expectedReachableTypes []string) {
- test.cases = append(test.cases, typeGraphTestCase{contents, typeToSearch, expectedReachableTypes})
-}
-
-// TestFindReachableTypes() iterates through a series of test cases.
-// For each case we expect for parsing and resolution to succeed. Then we
-// invoke FindReachableTypes() on |typeToSearch| and compare the result
-// to |expectedReachableTypes|.
-func TestFindReachableTypes(t *testing.T) {
- test := typeGraphTest{}
-
- ////////////////////////////////////////////////////////////
- // Test Case
- ////////////////////////////////////////////////////////////
- {
- contents := `
- struct Struct1{
- };
-
- struct Struct2{
- Struct1 x;
- };
-
- struct Struct3{
- Struct2 x;
- };
-
- struct Struct4{
- Struct3 x;
- };
-
- union Union1 {
- Struct3 x;
- Struct2 y;
- };
-
- union Union2 {
- Struct2 x;
- };
- `
- test.addTestCase(contents,
- "Struct4",
- []string{"Struct1", "Struct2", "Struct3", "Struct4"},
- )
-
- test.addTestCase(contents,
- "Union1",
- []string{"Union1", "Struct1", "Struct2", "Struct3"},
- )
-
- test.addTestCase(contents,
- "Union2",
- []string{"Union2", "Struct1", "Struct2"},
- )
- }
-
- ////////////////////////////////////////////////////////////
- // Test Case
- ////////////////////////////////////////////////////////////
- {
- contents := `
- struct Struct1{
- Struct4 x;
- };
-
- struct Struct2{
- Struct1 x;
- };
-
- struct Struct3{
- Struct2 x;
- };
-
- struct Struct4{
- Struct3 x;
- };
-
- union Union1 {
- Struct2 x;
- };
- `
-
- test.addTestCase(contents,
- "Union1",
- []string{"Union1", "Struct1", "Struct2", "Struct3", "Struct4"},
- )
- }
-
- ////////////////////////////////////////////////////////////
- // Test Cases
- ////////////////////////////////////////////////////////////
- {
- contents := `
-
- enum Height {
- SHORT, TALL
- };
-
- struct Struct1{
- enum Color {
- RED, BLUE
- };
- };
-
- struct Struct2{
- const Struct1.Color FAVORITE = RED;
- };
- `
-
- test.addTestCase(contents,
- "Struct1",
- []string{"Struct1", "Struct1.Color"},
- )
-
- test.addTestCase(contents,
- "Struct2",
- []string{"Struct2", "Struct1.Color"},
- )
- }
-
- ////////////////////////////////////////////////////////////
- // Test Cases
- ////////////////////////////////////////////////////////////
- {
- contents := `
- enum Color {
- RED, BLUE
- };
-
- enum Height {
- SHORT, TALL
- };
-
- struct Struct1{};
- struct Struct2{};
-
- interface Interface1 {
- const Color FAVORITE_COLOR = RED;
-
- Foo(int32 x) => (string y);
- };
-
- interface Interface2 {
- Foo(int32 x) => (Struct1 y);
- Bar(string x);
- };
- `
-
- test.addTestCase(contents,
- "Interface1",
- []string{"Interface1", "Color"},
- )
-
- test.addTestCase(contents,
- "Interface2",
- []string{"Interface2", "Struct1"},
- )
- }
-
- ////////////////////////////////////////////////////////////
- // Test Cases
- ////////////////////////////////////////////////////////////
-
- {
- contents := `
- enum Color {
- RED, BLUE
- };
-
- enum Height {
- SHORT, TALL
- };
-
- struct Struct1{};
- struct Struct2{};
-
- interface Interface1 {
- const Color FAVORITE_COLOR = RED;
-
- Foo(map<Height, int8> x) => (string y);
- };
-
- interface Interface2 {
- Foo(int32 x) => (array<Struct1?> y);
- };
- `
-
- test.addTestCase(contents,
- "Interface1",
- []string{"Interface1", "Color", "Height"},
- )
-
- test.addTestCase(contents,
- "Interface2",
- []string{"Interface2", "Struct1"},
- )
- }
-
- ////////////////////////////////////////////////////////////
- // Test Cases
- ////////////////////////////////////////////////////////////
-
- {
- contents := `
- enum Color {
- RED, BLUE
- };
-
- enum Height {
- SHORT, TALL
- };
-
- struct Struct1{};
- struct Struct2{};
-
- interface Interface1 {
- const Color FAVORITE_COLOR = RED;
-
- Foo(int32 x) => (string y);
- Bar(map<string, Height> z) => ();
- };
-
- interface Interface2 {
- Foo(int32 x) => (map<Height, Struct1?> y);
- };
- `
-
- test.addTestCase(contents,
- "Interface1",
- []string{"Interface1", "Color", "Height"},
- )
-
- test.addTestCase(contents,
- "Interface2",
- []string{"Interface2", "Height", "Struct1"},
- )
- }
-
- ////////////////////////////////////////////////////////////
- // Execute all of the test cases.
- ////////////////////////////////////////////////////////////
- for i, c := range test.cases {
- // Parse and resolve the mojom input.
- descriptor := mojom.NewMojomDescriptor()
- fileName := fmt.Sprintf("file%d", i)
- parser := parser.MakeParser(fileName, fileName, c.mojomContents, descriptor, nil)
- parser.Parse()
- if !parser.OK() {
- t.Errorf("Parsing error for %s: %s", fileName, parser.GetError().Error())
- continue
- }
- err := descriptor.Resolve()
- if err != nil {
- t.Errorf("Resolution failed for test case %d: %s", i, err.Error())
- continue
- }
-
- userDefinedType := descriptor.TypesByKey[mojom.ComputeTypeKey(c.typeToSearch)]
- result := userDefinedType.FindReachableTypes()
- if err := compareTypeSets(descriptor, c.expectedReachableTypes, result); err != nil {
- t.Errorf("Case %d, unexpected typeset for %s: %s\n", i, c.typeToSearch, err.Error())
- continue
- }
- }
-}
-
-func compareTypeSets(descriptor *mojom.MojomDescriptor, expectedTypeNames, actualTypeKeys []string) error {
- expectedSet := userDefinedTypeSet(descriptor, expectedTypeNames, false)
- actualSet := userDefinedTypeSet(descriptor, actualTypeKeys, true)
- return expectedSet.Compare(&actualSet)
-}
-
-func userDefinedTypeSet(descriptor *mojom.MojomDescriptor, types []string, typesAreKeys bool) mojom.UserDefinedTypeSet {
- typeSet := mojom.MakeUserDefinedTypeSet()
- for _, t := range types {
- if t == "" {
- panic("Found empty type in types array.")
- }
- var typeKey string
- if typesAreKeys {
- typeKey = t
- } else {
- typeKey = mojom.ComputeTypeKey(t)
- }
- userDefinedType := descriptor.TypesByKey[typeKey]
- if userDefinedType == nil {
- panic(fmt.Sprintf("No type found for: %s", t))
- }
- typeSet.Add(userDefinedType)
- }
- return typeSet
-}
diff --git a/mojom/mojom_tool/mojom/types.go b/mojom/mojom_tool/mojom/types.go
index 190a3d9..3796978 100644
--- a/mojom/mojom_tool/mojom/types.go
+++ b/mojom/mojom_tool/mojom/types.go
@@ -114,16 +114,6 @@
// Otherwise it will return the identifier.
TypeName() string
- // ReferencedUserDefinedTypes() is invoked after the resolution and validation
- // phases during the serialization phase. It returns the set of UserDefinedTypes
- // referenced by this TypeRef. For SimpleType, StringType and HandleTypeRef
- // this method returns the empty set. For UserTypeRef this method returns
- // a singleton containing the UserDefinedType that the reference resolves to.
- // For ArrayTypeRef this method returns the set of UserDefinedTypes of the element
- // type and for MapTypes this method returns the union of the set of UserDefined
- // types of the key type and the value type.
- ReferencedUserDefinedTypes() UserDefinedTypeSet
-
// Returns true just in case this type reference is allowed as the type of
// a struct field in a non-zero version of a struct. We disallow
// pointer and handle types that are not nullable. This means we allow all primitive
@@ -213,11 +203,6 @@
return true
}
-// A SimpleType does not reference any UserDefinedTypes.
-func (SimpleType) ReferencedUserDefinedTypes() UserDefinedTypeSet {
- return MakeUserDefinedTypeSet()
-}
-
// From interface TypeRef:
// We allow users to assign integer literals to float or double variables as
@@ -482,11 +467,6 @@
return s.IsAssignmentCompatible(assignment.assignedValue)
}
-// A StringType does not reference any user defined types.
-func (StringType) ReferencedUserDefinedTypes() UserDefinedTypeSet {
- return MakeUserDefinedTypeSet()
-}
-
func (s StringType) String() string {
nullableSpecifier := ""
if s.nullable {
@@ -565,11 +545,6 @@
return false
}
-// A HandleTypeRef does not reference any UserDefinedTypes.
-func (HandleTypeRef) ReferencedUserDefinedTypes() UserDefinedTypeSet {
- return MakeUserDefinedTypeSet()
-}
-
func (h HandleTypeRef) String() string {
suffix := ""
switch h.kind {
@@ -713,14 +688,6 @@
return false
}
-// An ArrayTypeRef references the UserDefinedTypes that are referenced
-// by its element type.
-func (a ArrayTypeRef) ReferencedUserDefinedTypes() UserDefinedTypeSet {
- setOfTypes := MakeUserDefinedTypeSet()
- setOfTypes.AddAll(a.elementType.ReferencedUserDefinedTypes())
- return setOfTypes
-}
-
func (a ArrayTypeRef) ToString(debug bool) string {
fixedLengthSpecifier := ""
if a.fixedLength > 0 {
@@ -813,15 +780,6 @@
return false
}
-// An MapTypeRef references the UserDefinedTypes that are referenced
-// by its key and valuye types.
-func (m MapTypeRef) ReferencedUserDefinedTypes() UserDefinedTypeSet {
- setOfTypes := MakeUserDefinedTypeSet()
- setOfTypes.AddAll(m.keyType.ReferencedUserDefinedTypes())
- setOfTypes.AddAll(m.valueType.ReferencedUserDefinedTypes())
- return setOfTypes
-}
-
func (m MapTypeRef) ToString(debug bool) string {
nullableSpecifier := ""
if m.nullable {
@@ -971,16 +929,6 @@
}
}
-// A UserTypeRef references a single UserDefinedType.
-func (ref *UserTypeRef) ReferencedUserDefinedTypes() UserDefinedTypeSet {
- if ref.resolvedType == nil {
- panic("This method should only be invoked after successful resolution.")
- }
- singleton := MakeUserDefinedTypeSet()
- singleton.Add(ref.resolvedType)
- return singleton
-}
-
func (t *UserTypeRef) MarkTypeCompatible(assignment LiteralAssignment) bool {
// Just mark the assignment attempt and return true. We will validate it
// during the validation phase.
diff --git a/mojom/mojom_tool/mojom/user_defined_types.go b/mojom/mojom_tool/mojom/user_defined_types.go
index 92ae24f..0234bfe 100644
--- a/mojom/mojom_tool/mojom/user_defined_types.go
+++ b/mojom/mojom_tool/mojom/user_defined_types.go
@@ -76,11 +76,6 @@
TypeKey() string
IsAssignmentCompatibleWith(value LiteralValue) bool
- // FindReachableTypes returns the list of type keys of all UserDefinedTypes that are
- // reachable from this UserDefinedType. This method must only be invoked
- // after type resolution has succeeded.
- FindReachableTypes() []string
-
// ComputeFinalData() is invoked on each user-defined type in a MojomDescriptor
// after the resolution and type validation phases have completed successfully.
// The method computes information that is useful for the code generators in the
@@ -105,115 +100,6 @@
typeKey string
}
-// UserDefinedTypeSet is a set of UserDefinedTypes
-type UserDefinedTypeSet map[UserDefinedType]bool
-
-func MakeUserDefinedTypeSet() UserDefinedTypeSet {
- return make(map[UserDefinedType]bool)
-}
-
-func (s *UserDefinedTypeSet) Add(t UserDefinedType) {
- (*s)[t] = true
-}
-
-func (s *UserDefinedTypeSet) AddAll(s2 UserDefinedTypeSet) {
- for t, _ := range s2 {
- (*s)[t] = true
- }
-}
-
-func (s *UserDefinedTypeSet) Contains(t UserDefinedType) bool {
- _, ok := (*s)[t]
- return ok
-}
-
-// Compare is used in tests. It returns
-// a non-nil error in case expected is not equal to actual.
-func (expected *UserDefinedTypeSet) Compare(actual *UserDefinedTypeSet) error {
- for n, _ := range *expected {
- if n == nil {
- panic("expected contains a nil.")
- }
- if !actual.Contains(n) {
- return fmt.Errorf("%s is in expected but not actual", n.TypeKey())
- }
- }
- for n, _ := range *actual {
- if n == nil {
- panic("actual contains a nil.")
- }
- if !expected.Contains(n) {
- return fmt.Errorf("%s is in actual but not expected", n.TypeKey())
- }
- }
- return nil
-}
-
-// See UserDefinedType interface.
-func (b *UserDefinedTypeBase) FindReachableTypes() []string {
- reachableSet := MakeUserDefinedTypeSet()
- findReachableTypes(b.thisType, reachableSet)
- typeKeys := make([]string, len(reachableSet))
- i := 0
- for t, _ := range reachableSet {
- typeKeys[i] = t.TypeKey()
- if typeKeys[i] == "" {
- panic(fmt.Sprintf("Empty typeKey for %v", t))
- }
- i++
- }
- sort.Strings(typeKeys)
- return typeKeys
-}
-
-// findReachableTypes is a recursive helper function for FindReachableTypes.
-// It performs a depth-first search through the type graph while populating
-// |reachableSet| with the UserDefinedTypes encountered during the search.
-func findReachableTypes(udt UserDefinedType, reachableSet UserDefinedTypeSet) {
- if udt == nil {
- panic("udt is nil")
- }
- if reachableSet.Contains(udt) {
- return
- }
- // Synthetic request and response structs should not actually be added
- // to the reachable set.
- if strct, ok := udt.(*MojomStruct); !ok || strct.structType == StructTypeRegular {
- reachableSet.Add(udt)
- }
- for _, object := range udt.GetDeclaredObjects() {
- switch object := object.(type) {
- case *MojomEnum:
- // There is an edge in the type graph from this struct or interface
- // type to a contained Enum.
- findReachableTypes(object, reachableSet)
- case *UserDefinedConstant:
- // There is an edge in the type graph from this struct or interface
- // type to the type of a contained constant.
- for t, _ := range object.DeclaredType().ReferencedUserDefinedTypes() {
- findReachableTypes(t, reachableSet)
- }
- case *StructField:
- // There is an edge in the type graph from this struct type to the type of a field.
- for t, _ := range object.FieldType.ReferencedUserDefinedTypes() {
- findReachableTypes(t, reachableSet)
- }
- case *UnionField:
- // There is an edge in the type graph from this union type to the type of a field.
- for t, _ := range object.FieldType.ReferencedUserDefinedTypes() {
- findReachableTypes(t, reachableSet)
- }
- case *MojomMethod:
- // There is an edge in the type graph from this interface type to
- // the type of a request or response parameter.
- findReachableTypes(object.Parameters, reachableSet)
- if object.ResponseParameters != nil {
- findReachableTypes(object.ResponseParameters, reachableSet)
- }
- }
- }
-}
-
// This method is invoked from the constructors for the containing types:
// NewMojomInterface, NewMojomStruct, NewMojomEnum, NewMojomUnion
func (b *UserDefinedTypeBase) Init(declData DeclarationData, thisType UserDefinedType) {
diff --git a/mojom/mojom_tool/serialization/serialization.go b/mojom/mojom_tool/serialization/serialization.go
index bac56a6..cf25fb7 100644
--- a/mojom/mojom_tool/serialization/serialization.go
+++ b/mojom/mojom_tool/serialization/serialization.go
@@ -32,10 +32,6 @@
// runtime type info. This is useful in tests.
var emitSerializedRuntimeTypeInfo bool = true
-// By default we do not populate the complete type set of each top-level interface
-// because doing so is expensive and we are not currently using the the data.
-var populateCompleteTypeSet bool = false
-
// Serialize serializes the MojomDescriptor into a binary form that is passed to the
// backend of the compiler in order to invoke the code generators.
// To do this we use Mojo serialization.
@@ -43,18 +39,17 @@
// of the serialized mojom_types.FileGraph.
// This function is not thread safe.
func Serialize(d *mojom.MojomDescriptor, debug bool) (bytes []byte, debugString string, err error) {
- return serialize(d, debug, true, true, true, false)
+ return serialize(d, debug, true, true, true)
}
// serialize() is a package-private version of the public method Serialize().
// It is intended for use in tests because it allows setting of the variables
-// emitLineAndColumnNumbers, emitComputedPackingData, emitSerializedRuntimeTypeInfo
-// and populateCompleteTypeSet.
+// emitLineAndColumnNumbers, emitComputedPackingData and emitSerializedRuntimeTypeInfo.
// This function is not thread safe because it sets and accesses these global
// variables.
func serialize(d *mojom.MojomDescriptor, debug,
- emitLineAndColumnNumbersParam, emitComputedPackingDataParam, emitSerializedRuntimeTypeInfoParam,
- populateCompleteTypeSetParam bool) (bytes []byte, debugString string, err error) {
+ emitLineAndColumnNumbersParam, emitComputedPackingDataParam,
+ emitSerializedRuntimeTypeInfoParam bool) (bytes []byte, debugString string, err error) {
// Save the global state and then set it based on the parameters.
saveEmitLineAndColumnNumbers := emitLineAndColumnNumbers
@@ -63,8 +58,6 @@
emitComputedPackingData = emitComputedPackingDataParam
saveEmitSerializedRuntimeTypeInfo := emitSerializedRuntimeTypeInfo
emitSerializedRuntimeTypeInfo = emitSerializedRuntimeTypeInfoParam
- savePopulateCompleteTypeSet := populateCompleteTypeSet
- populateCompleteTypeSet = populateCompleteTypeSetParam
fileGraph := translateDescriptor(d)
if debug {
@@ -79,7 +72,6 @@
emitLineAndColumnNumbers = saveEmitLineAndColumnNumbers
emitComputedPackingData = saveEmitComputedPackingData
emitSerializedRuntimeTypeInfo = saveEmitSerializedRuntimeTypeInfo
- populateCompleteTypeSet = savePopulateCompleteTypeSet
return
}
@@ -153,7 +145,7 @@
// the serialized bytes will form the |serialized_runtime_type_info| field
// of the MojomFile.
typeInfo := mojom_types.RuntimeTypeInfo{}
- typeInfo.ServicesByName = make(map[string]mojom_types.ServiceTypeInfo)
+ typeInfo.Services = make(map[string]string)
typeInfo.TypeMap = make(map[string]mojom_types.UserDefinedType)
// We populate the declared_mojom_objects field
@@ -166,7 +158,7 @@
typeKey := intrfc.TypeKey()
*(file.DeclaredMojomObjects.Interfaces) = append(*(file.DeclaredMojomObjects.Interfaces), typeKey)
- addServiceTypeInfo(intrfc, &typeInfo)
+ addServiceName(intrfc, &typeInfo)
typeInfo.TypeMap[typeKey] = fileGraph.ResolvedTypes[typeKey]
if intrfc.Enums != nil {
// Add embedded enums to typeInfo.TypeMap.
@@ -254,18 +246,13 @@
return
}
-// addServiceTypeInfo will add a ServiceTypeInfo to the ServicesByName field of |typeInfo| corresponding
-// to |intrfc| if |intrfc| is a top-level interface, meaning that it has a non-nil service name. In that
+// addServiceName will add the service name of |intrfc| to the |Services| field of |typeInfo|
+// if |intrfc| is a top-level interface, meaning that it has a non-nil service name. In that
// case this method returns true. Otherwise this method will do nothing and return fals.
-func addServiceTypeInfo(intrfc *mojom.MojomInterface, typeInfo *mojom_types.RuntimeTypeInfo) (isTopLevel bool) {
+func addServiceName(intrfc *mojom.MojomInterface, typeInfo *mojom_types.RuntimeTypeInfo) (isTopLevel bool) {
isTopLevel = intrfc.ServiceName != nil
if isTopLevel {
- serviceTypeInfo := mojom_types.ServiceTypeInfo{}
- serviceTypeInfo.TopLevelInterface = intrfc.TypeKey()
- if populateCompleteTypeSet {
- serviceTypeInfo.CompleteTypeSet = intrfc.FindReachableTypes()
- }
- typeInfo.ServicesByName[*intrfc.ServiceName] = serviceTypeInfo
+ typeInfo.Services[*intrfc.ServiceName] = intrfc.TypeKey()
}
return
}
diff --git a/mojom/mojom_tool/serialization/serialization_test.go b/mojom/mojom_tool/serialization/serialization_test.go
index b9ceac0..fc43f75 100644
--- a/mojom/mojom_tool/serialization/serialization_test.go
+++ b/mojom/mojom_tool/serialization/serialization_test.go
@@ -1159,14 +1159,14 @@
}
// Serialize
- bytes, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false, false)
+ bytes, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false)
if err != nil {
t.Errorf("Serialization error for %s: %s", c.fileName, err.Error())
continue
}
// Serialize again and check for consistency.
- bytes2, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false, false)
+ bytes2, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false)
if err != nil {
t.Errorf("Serialization error for %s: %s", c.fileName, err.Error())
continue
@@ -2314,14 +2314,14 @@
}
// Serialize. Notice that the fourth argument is |true|.
- bytes, _, err := serialize(descriptor, false, false, true, false, false)
+ bytes, _, err := serialize(descriptor, false, false, true, false)
if err != nil {
t.Errorf("Serialization error for %s: %s", c.fileName, err.Error())
continue
}
// Serialize again and check for consistency.
- bytes2, _, err := serialize(descriptor, false, false, true, false, false)
+ bytes2, _, err := serialize(descriptor, false, false, true, false)
if err != nil {
t.Errorf("Serialization error for %s: %s", c.fileName, err.Error())
continue
@@ -2414,7 +2414,7 @@
}
// Serialize
- bytes, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false, false)
+ bytes, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false)
if err != nil {
t.Errorf("Serialization error for %s: %s", c.fileName, err.Error())
continue
@@ -2689,7 +2689,7 @@
}
// Serialize
- bytes, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false, false)
+ bytes, _, err := serialize(descriptor, false, false, c.lineAndcolumnNumbers, false)
if err != nil {
t.Errorf("Serialization error for case %d: %s", i, err.Error())
continue
@@ -2735,9 +2735,9 @@
func (test *runtimeTypeInfoTest) addTestCase(contentsA, contentsB string) {
test.cases = append(test.cases, runtimeTypeInfoTestCase{contentsA, contentsB, new(mojom_types.RuntimeTypeInfo), new(mojom_types.RuntimeTypeInfo)})
- test.expectedRuntimeTypeInfoA().ServicesByName = make(map[string]mojom_types.ServiceTypeInfo)
+ test.expectedRuntimeTypeInfoA().Services = make(map[string]string)
test.expectedRuntimeTypeInfoA().TypeMap = make(map[string]mojom_types.UserDefinedType)
- test.expectedRuntimeTypeInfoB().ServicesByName = make(map[string]mojom_types.ServiceTypeInfo)
+ test.expectedRuntimeTypeInfoB().Services = make(map[string]string)
test.expectedRuntimeTypeInfoB().TypeMap = make(map[string]mojom_types.UserDefinedType)
}
@@ -2922,11 +2922,8 @@
`
test.addTestCase(contentsA, contentsB)
- // ServicesByName for file A
- test.expectedRuntimeTypeInfoA().ServicesByName["AwesomeService"] = mojom_types.ServiceTypeInfo{
- TopLevelInterface: "TYPE_KEY:a.b.c.InterfaceA",
- CompleteTypeSet: []string{"TYPE_KEY:a.b.c.FooA", "TYPE_KEY:a.b.c.InterfaceA", "TYPE_KEY:b.c.d.FooB"},
- }
+ // Services for file A
+ test.expectedRuntimeTypeInfoA().Services["AwesomeService"] = "TYPE_KEY:a.b.c.InterfaceA"
// TypeMap for file A
@@ -3038,13 +3035,8 @@
`
test.addTestCase(contentsA, contentsB)
- // ServicesByName for file A
- test.expectedRuntimeTypeInfoA().ServicesByName["AwesomeService"] = mojom_types.ServiceTypeInfo{
- TopLevelInterface: "TYPE_KEY:a.b.c.InterfaceA",
- CompleteTypeSet: []string{"TYPE_KEY:a.b.c.FooA", "TYPE_KEY:a.b.c.InterfaceA", "TYPE_KEY:b.c.d.FooB"},
- }
-
- // TypeMap for file A
+ // Services for file A
+ test.expectedRuntimeTypeInfoA().Services["AwesomeService"] = "TYPE_KEY:a.b.c.InterfaceA"
// FooA
test.expectedRuntimeTypeInfoA().TypeMap["TYPE_KEY:a.b.c.FooA"] = &mojom_types.UserDefinedTypeStructType{mojom_types.MojomStruct{
@@ -3163,11 +3155,8 @@
`
test.addTestCase(contentsA, contentsB)
- // ServicesByName for file A
- test.expectedRuntimeTypeInfoA().ServicesByName["AwesomeService"] = mojom_types.ServiceTypeInfo{
- TopLevelInterface: "TYPE_KEY:a.b.c.InterfaceA",
- CompleteTypeSet: []string{"TYPE_KEY:a.b.c.FooA", "TYPE_KEY:a.b.c.InterfaceA", "TYPE_KEY:b.c.d.Enum1", "TYPE_KEY:b.c.d.FooB"},
- }
+ // Services for file A
+ test.expectedRuntimeTypeInfoA().Services["AwesomeService"] = "TYPE_KEY:a.b.c.InterfaceA"
// TypeMap for file A
@@ -3309,7 +3298,7 @@
}
// Serialize
- bytes, _, err := serialize(descriptor, false, false, false, true, true)
+ bytes, _, err := serialize(descriptor, false, false, false, true)
if err != nil {
t.Errorf("Serialization error for case %d: %s", i, err.Error())
continue
@@ -3335,28 +3324,6 @@
if err := compareTwoGoObjects(c.expectedRuntimeTypeInfoB, &runtimeTypeInfoB); err != nil {
t.Errorf("case %d B:\n%s", i, err.Error())
}
-
- // Test the parameter populateCompleteTypeSet. We set the final
- // parameter to false.
- bytes, _, err = serialize(descriptor, false, false, false, true, false)
- if err != nil {
- t.Errorf("Serialization error for case %d: %s", i, err.Error())
- continue
- }
-
- // Deserialize
- decoder = bindings.NewDecoder(bytes, nil)
- fileGraph = mojom_files.MojomFileGraph{}
- fileGraph.Decode(decoder)
- runtimeTypeInfoA = deserializeRuntimeTypeInfo(*fileGraph.Files[fileNameA].SerializedRuntimeTypeInfo)
-
- // Check that CompleteTypeSet has not been populated for any service.
- for name, service := range runtimeTypeInfoA.ServicesByName {
- length := len(service.CompleteTypeSet)
- if length != 0 {
- t.Errorf("len(CompleteTypeSet)=%d for service=%q", length, name)
- }
- }
}
}