aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeongik Cha <jeongik@google.com>2021-04-30 06:21:46 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-04-30 06:21:46 +0000
commit3bf1fe89a276069a4ba4477a035235bfe034c76c (patch)
tree4c73a7a0454d89bfff814b3c653a615fe53046eb
parent93be2b37eeed5eb32f7e83d0cda5ff223c705b64 (diff)
parent3aeb84c9ec4b1f969db799a1bb932980675b4aeb (diff)
downloadaidl-3bf1fe89a276069a4ba4477a035235bfe034c76c.tar.gz
Make UidRangeParcel frozen am: 68d18e7920 am: 45e33b25a6 am: 3aeb84c9ec
Original change: https://android-review.googlesource.com/c/platform/system/tools/aidl/+/1690508 Change-Id: I5ce301c156bd861b3d450eba62aa4989f617ea0c
-rw-r--r--aidl_checkapi.cpp9
-rw-r--r--aidl_unittest.cpp15
2 files changed, 24 insertions, 0 deletions
diff --git a/aidl_checkapi.cpp b/aidl_checkapi.cpp
index 08d1798e..47733c1b 100644
--- a/aidl_checkapi.cpp
+++ b/aidl_checkapi.cpp
@@ -262,6 +262,15 @@ static bool are_compatible_parcelables(const AidlDefinedType& older, const AidlT
return false;
}
+ // android.net.UidRangeParcel should be frozen to prevent breakage in legacy (b/186720556)
+ if (older.GetCanonicalName() == "android.net.UidRangeParcel" &&
+ old_fields.size() != new_fields.size()) {
+ AIDL_ERROR(newer) << "Number of fields in " << older.GetCanonicalName() << " is changed from "
+ << old_fields.size() << " to " << new_fields.size()
+ << ". But it is forbidden because of legacy support.";
+ return false;
+ }
+
bool compatible = true;
for (size_t i = 0; i < old_fields.size(); i++) {
const auto& old_field = old_fields.at(i);
diff --git a/aidl_unittest.cpp b/aidl_unittest.cpp
index 0e3a2354..1e81de74 100644
--- a/aidl_unittest.cpp
+++ b/aidl_unittest.cpp
@@ -2691,6 +2691,21 @@ TEST_F(AidlTestIncompatibleChanges, FixedSizeAddedField) {
EXPECT_EQ(expected_stderr, GetCapturedStderr());
}
+TEST_F(AidlTestIncompatibleChanges, UidRangeParcelAddedField) {
+ const string expected_stderr =
+ "ERROR: new/android/net/UidRangeParcel.aidl:1.32-47: Number of fields in "
+ "android.net.UidRangeParcel is changed from 1 to 2. "
+ "But it is forbidden because of legacy support.\n";
+ io_delegate_.SetFileContents("old/android/net/UidRangeParcel.aidl",
+ "package android.net; parcelable UidRangeParcel { int A = 1; }");
+ io_delegate_.SetFileContents(
+ "new/android/net/UidRangeParcel.aidl",
+ "package android.net; parcelable UidRangeParcel { int A = 1; int B = 2; }");
+ CaptureStderr();
+ EXPECT_FALSE(::android::aidl::check_api(options_, io_delegate_));
+ EXPECT_EQ(expected_stderr, GetCapturedStderr());
+}
+
TEST_F(AidlTestIncompatibleChanges, FixedSizeRemovedField) {
const string expected_stderr =
"ERROR: new/p/Foo.aidl:1.33-37: Number of fields in p.Foo is reduced from 2 to 1.\n";