Fix error handling in StatsEvent

Bug: 143286399
Test: bit FrameworksCoreTests:android.util.StatsEventTest
Change-Id: I2159bf138a307e45c44102a8feb7a69d0c793843
diff --git a/core/java/android/util/StatsEvent.java b/core/java/android/util/StatsEvent.java
index d7ec30c..0a4069d 100644
--- a/core/java/android/util/StatsEvent.java
+++ b/core/java/android/util/StatsEvent.java
@@ -177,7 +177,7 @@
      * @hide
      **/
     @VisibleForTesting
-    public static final int ERROR_ATTRIBUTION_UIDS_TAGS_SIZES_NOT_EQUAL = 0x400;
+    public static final int ERROR_ATTRIBUTION_UIDS_TAGS_SIZES_NOT_EQUAL = 0x1000;
 
     // Size limits.
 
@@ -628,9 +628,9 @@
             if (0 == mErrorMask) {
                 mBuffer.putByte(POS_NUM_ELEMENTS, (byte) mNumElements);
             } else {
-                mBuffer.putByte(0, TYPE_ERRORS);
-                mBuffer.putByte(POS_NUM_ELEMENTS, (byte) 3);
+                mPos += mBuffer.putByte(mPos, TYPE_ERRORS);
                 mPos += mBuffer.putInt(mPos, mErrorMask);
+                mBuffer.putByte(POS_NUM_ELEMENTS, (byte) 3);
                 size = mPos;
             }
 
diff --git a/core/tests/coretests/src/android/util/StatsEventTest.java b/core/tests/coretests/src/android/util/StatsEventTest.java
index 93f11db..097bada 100644
--- a/core/tests/coretests/src/android/util/StatsEventTest.java
+++ b/core/tests/coretests/src/android/util/StatsEventTest.java
@@ -53,8 +53,8 @@
         final ByteBuffer buffer =
                 ByteBuffer.wrap(statsEvent.getBytes()).order(ByteOrder.LITTLE_ENDIAN);
 
-        assertWithMessage("Root element in buffer is not TYPE_ERRORS")
-                .that(buffer.get()).isEqualTo(StatsEvent.TYPE_ERRORS);
+        assertWithMessage("Root element in buffer is not TYPE_OBJECT")
+                .that(buffer.get()).isEqualTo(StatsEvent.TYPE_OBJECT);
 
         assertWithMessage("Incorrect number of elements in root object")
                 .that(buffer.get()).isEqualTo(3);
@@ -71,6 +71,9 @@
         assertWithMessage("Incorrect atom id")
                 .that(buffer.getInt()).isEqualTo(expectedAtomId);
 
+        assertWithMessage("Third element is not errors type")
+                .that(buffer.get()).isEqualTo(StatsEvent.TYPE_ERRORS);
+
         final int errorMask = buffer.getInt();
 
         assertWithMessage("ERROR_NO_ATOM_ID should be the only error in the error mask")