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

Commit e9622a3d authored by Paul Duffin's avatar Paul Duffin
Browse files

Add serialization methods to whitelist not light greylist

Checked the contents of the hiddenapi lists before and after the change
and the methods were definitely moved from light greylist to the
whitelist.

Flashed the device and checked the log and did not see anything out of
the ordinary.

Test: frameworks/base/tools/hiddenapi/generate_hiddenapi_lists_test.py
Change-Id: I9b4b2426251e99495f65ae02a3c2c32ce6966625
parent 194170e7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -212,8 +212,8 @@ def main(argv):
    move_from_files(args.input_greylists, uncategorized, light_greylist)
    move_from_files(args.input_blacklists, uncategorized, blacklist)

    # Iterate over all uncategorized members and move serialization API to light greylist.
    move_serialization(uncategorized, light_greylist)
    # Iterate over all uncategorized members and move serialization API to whitelist.
    move_serialization(uncategorized, whitelist)

    # Extract package names of members from whitelist and light greylist, which
    # are assumed to have been finalized at this point. Assign all uncategorized
+18 −0
Original line number Diff line number Diff line
@@ -85,5 +85,23 @@ class TestHiddenapiListGeneration(unittest.TestCase):
        self.assertEqual(
            dst, set([ "Lfoo/bar/ClassA;->abc()J", "Lfoo/bar/ClassA;->def()J" ]))

    def test_move_serialization(self):
        # All the entries should be moved apart from the last one
        src = set([ "Lfoo/bar/ClassA;->readObject(Ljava/io/ObjectInputStream;)V",
                    "Lfoo/bar/ClassA;->readObjectNoData()V",
                    "Lfoo/bar/ClassA;->readResolve()Ljava/lang/Object;",
                    "Lfoo/bar/ClassA;->serialVersionUID:J",
                    "Lfoo/bar/ClassA;->serialPersistentFields:[Ljava/io/ObjectStreamField;",
                    "Lfoo/bar/ClassA;->writeObject(Ljava/io/ObjectOutputStream;)V",
                    "Lfoo/bar/ClassA;->writeReplace()Ljava/lang/Object;",
                    # Should not be moved as signature does not match
                    "Lfoo/bar/ClassA;->readObject(Ljava/io/ObjectInputStream;)I"])
        expectedToMove = len(src) - 1
        dst = set()
        packages = set([ "Lfoo/bar/" ])
        move_serialization(src, dst)
        self.assertEqual(len(src), 1)
        self.assertEqual(len(dst), expectedToMove)

if __name__ == '__main__':
    unittest.main()