diff options
author | Jeongik Cha <jeongik@google.com> | 2021-04-30 06:21:46 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-04-30 06:21:46 +0000 |
commit | 3bf1fe89a276069a4ba4477a035235bfe034c76c (patch) | |
tree | 4c73a7a0454d89bfff814b3c653a615fe53046eb | |
parent | 93be2b37eeed5eb32f7e83d0cda5ff223c705b64 (diff) | |
parent | 3aeb84c9ec4b1f969db799a1bb932980675b4aeb (diff) | |
download | aidl-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.cpp | 9 | ||||
-rw-r--r-- | aidl_unittest.cpp | 15 |
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"; |