Revert "RpcSession attaches/detaches JVM for Java thread"

Revert submission 1751551-rpc_binder_java_threads

Reason for revert: breaks build
Reverted Changes:
Ifedd34a8c:AndroidRuntime: Expose javaAttachThread / javaDeta...
I23f171dd1:RpcSession attaches/detaches JVM for Java thread

Change-Id: I60fe305224f0341578af40078c7725c32152144b
diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp
index 928f772..da570f3 100644
--- a/libs/binder/Android.bp
+++ b/libs/binder/Android.bp
@@ -192,7 +192,6 @@
 
     header_libs: [
         "libbinder_headers",
-        "libandroid_runtime_threads_headers",
     ],
 
     export_header_lib_headers: [
diff --git a/libs/binder/RpcSession.cpp b/libs/binder/RpcSession.cpp
index bdf1bbe..ee5e8bb 100644
--- a/libs/binder/RpcSession.cpp
+++ b/libs/binder/RpcSession.cpp
@@ -18,16 +18,13 @@
 
 #include <binder/RpcSession.h>
 
-#include <dlfcn.h>
 #include <inttypes.h>
 #include <poll.h>
-#include <pthread.h>
 #include <unistd.h>
 
 #include <string_view>
 
 #include <android-base/macros.h>
-#include <android_runtime/threads.h>
 #include <binder/Parcel.h>
 #include <binder/RpcServer.h>
 #include <binder/Stability.h>
@@ -277,53 +274,10 @@
     };
 }
 
-namespace {
-// RAII object for attaching / detaching current thread to JVM if Android Runtime exists. If
-// Android Runtime doesn't exist, no-op.
-class JavaThreadAttacher {
-public:
-    JavaThreadAttacher() {
-        // Use dlsym to find androidJavaAttachThread because libandroid_runtime is loaded after
-        // libbinder.
-        static auto attachFn = reinterpret_cast<decltype(&androidJavaAttachThread)>(
-                dlsym(RTLD_DEFAULT, "androidJavaAttachThread"));
-        if (attachFn == nullptr) return;
-
-        char buf[16];
-        const char* threadName = "UnknownRpcSessionThread"; // default thread name
-        if (0 == pthread_getname_np(pthread_self(), buf, sizeof(buf))) {
-            threadName = buf;
-        }
-        LOG_RPC_DETAIL("Attaching current thread %s to JVM", threadName);
-        LOG_ALWAYS_FATAL_IF(!attachFn(threadName), "Cannot attach thread %s to JVM", threadName);
-        mAttached = true;
-    }
-    ~JavaThreadAttacher() {
-        if (!mAttached) return;
-        static auto detachFn = reinterpret_cast<decltype(&androidJavaDetachThread)>(
-                dlsym(RTLD_DEFAULT, "androidJavaDetachThread"));
-        LOG_ALWAYS_FATAL_IF(detachFn == nullptr,
-                            "androidJavaAttachThread exists but androidJavaDetachThread doesn't");
-
-        LOG_RPC_DETAIL("Detaching current thread from JVM");
-        if (detachFn()) {
-            mAttached = false;
-        } else {
-            ALOGW("Unable to detach current thread from JVM");
-        }
-    }
-
-private:
-    DISALLOW_COPY_AND_ASSIGN(JavaThreadAttacher);
-    bool mAttached = false;
-};
-} // namespace
-
 void RpcSession::join(sp<RpcSession>&& session, PreJoinSetupResult&& setupResult) {
     sp<RpcConnection>& connection = setupResult.connection;
 
     if (setupResult.status == OK) {
-        JavaThreadAttacher javaThreadAttacher;
         while (true) {
             status_t status = session->state()->getAndExecuteCommand(connection, session,
                                                                      RpcState::CommandType::ANY);
diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp
index 29bde34..e452678 100644
--- a/libs/binder/tests/binderRpcTest.cpp
+++ b/libs/binder/tests/binderRpcTest.cpp
@@ -1208,43 +1208,6 @@
             << "After server->shutdown() returns true, join() did not stop after 2s";
 }
 
-TEST(BinderRpc, Java) {
-#if !defined(__ANDROID__)
-    GTEST_SKIP() << "This test is only run on Android. Though it can technically run on host on"
-                    "createRpcDelegateServiceManager() with a device attached, such test belongs "
-                    "to binderHostDeviceTest. Hence, just disable this test on host.";
-#endif // !__ANDROID__
-    sp<IServiceManager> sm = defaultServiceManager();
-    ASSERT_NE(nullptr, sm);
-    // Any Java service with non-empty getInterfaceDescriptor() would do.
-    // Let's pick batteryproperties.
-    auto binder = sm->checkService(String16("batteryproperties"));
-    ASSERT_NE(nullptr, binder);
-    auto descriptor = binder->getInterfaceDescriptor();
-    ASSERT_GE(descriptor.size(), 0);
-    ASSERT_EQ(OK, binder->pingBinder());
-
-    auto rpcServer = RpcServer::make();
-    rpcServer->iUnderstandThisCodeIsExperimentalAndIWillNotUseItInProduction();
-    unsigned int port;
-    ASSERT_TRUE(rpcServer->setupInetServer(0, &port));
-    auto socket = rpcServer->releaseServer();
-
-    auto keepAlive = sp<BBinder>::make();
-    ASSERT_EQ(OK, binder->setRpcClientDebug(std::move(socket), keepAlive));
-
-    auto rpcSession = RpcSession::make();
-    ASSERT_TRUE(rpcSession->setupInetClient("127.0.0.1", port));
-    auto rpcBinder = rpcSession->getRootObject();
-    ASSERT_NE(nullptr, rpcBinder);
-
-    ASSERT_EQ(OK, rpcBinder->pingBinder());
-
-    ASSERT_EQ(descriptor, rpcBinder->getInterfaceDescriptor())
-            << "getInterfaceDescriptor should not crash system_server";
-    ASSERT_EQ(OK, rpcBinder->pingBinder());
-}
-
 } // namespace android
 
 int main(int argc, char** argv) {