Mojo: Fix warnings when generating code for empty struct in java.
BUG=404873
R=ppi@chromium.org
Review URL: https://codereview.chromium.org/484983003
Cr-Commit-Position: refs/heads/master@{#290579}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290579 0039d316-1c4b-4281-b951-d872f2087c98
CrOS-Libchrome-Original-Commit: 3e38f1f9ee9225a78bf89f836de1340f2208340d
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
index d26955b..efb227c 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
@@ -20,6 +20,7 @@
import org.chromium.mojo.bindings.test.mojom.sample.Foo;
import org.chromium.mojo.bindings.test.mojom.sample.InterfaceConstants;
import org.chromium.mojo.bindings.test.mojom.sample.SampleServiceConstants;
+import org.chromium.mojo.bindings.test.mojom.test_structs.EmptyStruct;
import org.chromium.mojo.system.DataPipe.ConsumerHandle;
import org.chromium.mojo.system.DataPipe.ProducerHandle;
import org.chromium.mojo.system.MessagePipeHandle;
@@ -237,4 +238,15 @@
assertFooEquals(typicalFoo, deserializedFoo);
}
+ /**
+ * Testing serialization of the EmptyStruct class.
+ */
+ @SmallTest
+ public void testEmptyStructSerialization() {
+ // Checking serialization and deserialization of a EmptyStruct object.
+ Message serializedStruct = new EmptyStruct().serialize(null);
+ EmptyStruct emptyStruct = EmptyStruct.deserialize(serializedStruct);
+ assertNotNull(emptyStruct);
+ }
+
}
diff --git a/mojo/public/interfaces/bindings/tests/test_structs.mojom b/mojo/public/interfaces/bindings/tests/test_structs.mojom
index 8bc33b3..6c0c429 100644
--- a/mojo/public/interfaces/bindings/tests/test_structs.mojom
+++ b/mojo/public/interfaces/bindings/tests/test_structs.mojom
@@ -22,4 +22,7 @@
Rect? second;
};
+struct EmptyStruct {
+};
+
}
diff --git a/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl
index 623fa09..c878e02 100644
--- a/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/java_templates/struct_definition.tmpl
@@ -78,7 +78,11 @@
return null;
}
{{struct|name}} result = new {{struct|name}}();
+{% if not struct.bytes %}
+ decoder0.readDataHeader();
+{% else %}
DataHeader mainDataHeader = decoder0.readDataHeader();
+{% endif %}
{% for byte in struct.bytes %}
{% for packed_field in byte.packed_fields %}
if (mainDataHeader.numFields > {{packed_field.ordinal}}) {
@@ -91,7 +95,11 @@
@Override
protected final void encode(org.chromium.mojo.bindings.Encoder encoder) {
+{% if not struct.bytes %}
+ encoder.getEncoderAtDataOffset(DEFAULT_STRUCT_INFO);
+{% else %}
org.chromium.mojo.bindings.Encoder encoder0 = encoder.getEncoderAtDataOffset(DEFAULT_STRUCT_INFO);
+{% endif %}
{% for byte in struct.bytes %}
{% for packed_field in byte.packed_fields %}
{{encode(packed_field.field|name, packed_field.field.kind, 8+packed_field.offset, packed_field.bit)|indent(8)}}