libbinder_ndk: avoid BpRefBase

This is OBJECT_LIFETIME_WEAK which makes things
complicated. The goal of this is to be able to
support this kind of thing:

    sp<IFoo> foo = ... // get service;
    wp<IFoo> wFoo = foo;
    foo = nullptr;

    sp<IFoo> foo2 = ... // get service again;
    EXPECT_EQ(wFoo.promote(), foo2);

However, because ABpBinder onLastStrongRef expunged
the wp binder reference, this did not work in the
NDK backend of binder before. This works for BpBinder
because BpBinder does not call expungeHandle until
~BpBinder. However, because we need the reference
from our BpBinder to the BpRefBase, it becomes
circular. I'm not sure, with the current
implementation of RefBase, it would be possible
to get this behavior. In the future, if we wanted
it, we could make all BpBinder objects also be
ABpBinder objects. This would avoid the extra
allocation and avoid the need for the proxy object.

Bug: 220141324
Test: CtsNdkBinderTestCases

Change-Id: I934a12baec625da1c3a0d5052d446523dc4c1f89
2 files changed