Fix getInterfaceVersion() inconsistency bug between backends
Java:
- Server
writeNoException(), and then writeInt(version)
- Client
As-is: just readInt() -> read exception code, not version
To-be: readException, and then readInt() -> consume exception code first
Cpp:
- Transaction code
As-is: getInterface's ID
To-be: FIRST_CALL_TRANSACTION + the ID
- Server & Client
As-is: No exception read/write before version code
To-be: Add exception value before version code
Bug: 133118233
Test: m
Test: atest CtsNdkBinderTestCases
Test: ./runtests.sh
Change-Id: I168a0b8ff7e1871afd95a0ab76b544bfe131a9ed
Merged-In: I168a0b8ff7e1871afd95a0ab76b544bfe131a9ed
diff --git a/generate_java_binder.cpp b/generate_java_binder.cpp
index f017d62..8ced119 100644
--- a/generate_java_binder.cpp
+++ b/generate_java_binder.cpp
@@ -828,6 +828,7 @@
<< " data.writeInterfaceToken(DESCRIPTOR);\n"
<< " mRemote.transact(Stub." << transactCodeName << ", "
<< "data, reply, 0);\n"
+ << " reply.readException();\n"
<< " mCachedVersion = reply.readInt();\n"
<< " } finally {\n"
<< " reply.recycle();\n"