Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30d68b97 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Fail if there are repeated fields in atoms.proto" into rvc-dev am: 19282c39

Change-Id: I98ce6aefbdd71d2f17973ae7710a6d360532c2c5
parents 74cf8f94 19282c39
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -237,6 +237,16 @@ int collate_atom(const Descriptor *atom, AtomDecl *atomDecl,
        errorCount++;
        continue;
    }

    if (field->is_repeated() &&
        !(javaType == JAVA_TYPE_ATTRIBUTION_CHAIN || javaType == JAVA_TYPE_KEY_VALUE_PAIR)) {
        print_error(field,
                    "Repeated fields are not supported in atoms. Please make field %s not "
                    "repeated.\n",
                    field->name().c_str());
        errorCount++;
        continue;
    }
  }

  // Check that if there's an attribution chain, it's at position 1.
+16 −15
Original line number Diff line number Diff line
@@ -41,21 +41,20 @@ enum AnEnum {

message AllTypesAtom {
  repeated android.os.statsd.AttributionNode attribution_chain = 1;
  optional double double_field = 2;
  optional float float_field = 3;
  optional int64 int64_field = 4;
  optional uint64 uint64_field = 5;
  optional int32 int32_field = 6;
  optional fixed64 fixed64_field = 7;
  optional fixed32 fixed32_field = 8;
  optional bool bool_field = 9;
  optional string string_field = 10;
  optional uint32 uint32_field = 11;
  optional AnEnum enum_field = 12;
  optional sfixed32 sfixed32_field = 13;
  optional sfixed64 sfixed64_field = 14;
  optional sint32 sint32_field = 15;
  optional sint64 sint64_field = 16;
  optional float float_field = 2;
  optional int64 int64_field = 3;
  optional uint64 uint64_field = 4;
  optional int32 int32_field = 5;
  optional fixed64 fixed64_field = 6;
  optional fixed32 fixed32_field = 7;
  optional bool bool_field = 8;
  optional string string_field = 9;
  optional uint32 uint32_field = 10;
  optional AnEnum enum_field = 11;
  optional sfixed32 sfixed32_field = 12;
  optional sfixed64 sfixed64_field = 13;
  optional sint32 sint32_field = 14;
  optional sint64 sint64_field = 15;
}

message Event {
@@ -70,6 +69,8 @@ message Event {
message BadTypesAtom {
    optional IntAtom bad_int_atom = 1;
    optional bytes bad_bytes = 2;
    repeated int32 repeated_field = 3;
    optional double double_field = 4;
}

message BadTypesEvent {
+2 −3
Original line number Diff line number Diff line
@@ -98,7 +98,6 @@ TEST(CollationTest, CollateStats) {
    EXPECT_SET_CONTAINS_SIGNATURE(
        atoms.signatures_to_modules,
        JAVA_TYPE_ATTRIBUTION_CHAIN, // AttributionChain
        JAVA_TYPE_DOUBLE,            // double
        JAVA_TYPE_FLOAT,             // float
        JAVA_TYPE_LONG,              // int64
        JAVA_TYPE_LONG,              // uint64
@@ -157,13 +156,13 @@ TEST(CollationTest, NonMessageTypeFails) {
}

/**
 * Test that atoms that have non-primitive types are rejected.
 * Test that atoms that have non-primitive types or repeated fields are rejected.
 */
TEST(CollationTest, FailOnBadTypes) {
    Atoms atoms;
    int errorCount = collate_atoms(BadTypesEvent::descriptor(), &atoms);

    EXPECT_EQ(2, errorCount);
    EXPECT_EQ(4, errorCount);
}

/**