Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 66ffe5bc6f05344ffb99942f90de5c275049c8cf https://github.com/WebKit/WebKit/commit/66ffe5bc6f05344ffb99942f90de5c275049c8cf Author: Žan Doberšek <zdober...@igalia.com> Date: 2022-12-08 (Thu, 08 Dec 2022)
Changed paths: M Tools/TestWebKitAPI/Tests/IPC/ArgumentCoderTests.cpp Log Message: ----------- [WK2] Add test cases testing move occurrences during IPC decoding https://bugs.webkit.org/show_bug.cgi?id=248887 Reviewed by Kimmo Kinnunen. Add test cases that check the amount of moves an object of a given type goes through during IPC decoding. The test cases use a move-only DecodingMoveCounter struct that increases the move counter whenever constructed through a move operation. This is used to assess the amount of moves a given object went through during the IPC decoding process. A fixture class is provided, internally establishing an IPC::Encoder object into which the test case can encode the desired object. The encoder's buffer is then used for the IPC::Decoder from which decoding is then done. In each test, a certain amount of moves is expected and appropriately validated. The actual amount of moves depends on the way the decoding is done and on any container or wrapping object used. The test cases show that one move can be immediately avoided if the IPC::Decoder::decode<T>() method is used instead of constructing an empty std::optional<T> and using the stream extraction operator with that optional object as the destination. Avoiding and replacing the use of the stream extraction operator should be considered. Testing the decoding of containers and wrapper objects also shows an abundance of moves occurring for the wrapped object. I think probably in all cases this could be reduced down to a single move of a DecodingMoveCounter object. * Tools/TestWebKitAPI/Tests/IPC/ArgumentCoderTests.cpp: (TestWebKitAPI::DecodingMoveCounter::DecodingMoveCounter): (TestWebKitAPI::DecodingMoveCounter::operator=): (TestWebKitAPI::DecodingMoveCounter::encode): (TestWebKitAPI::DecodingMoveCounter::decode): (TestWebKitAPI::DecodingMoveCounterTest::name): (TestWebKitAPI::ArgumentCoderDecodingMoveCounterTest::encoder const): (TestWebKitAPI::ArgumentCoderDecodingMoveCounterTest::createDecoder const): (TestWebKitAPI::TEST_F): Canonical link: https://commits.webkit.org/257562@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes