Revert "Don't allow std::make_shared/unique for ndk::SharedRefBase objects"
This reverts commit 21e09430ebd3044c88f680478e81f0131b58b470.
Reason for revert: Broke git_master/adt3-userdebug
Change-Id: Ia81059b38a679ba43183e669670f1ef6dcb61dac
diff --git a/libs/binder/ndk/include_cpp/android/binder_interface_utils.h b/libs/binder/ndk/include_cpp/android/binder_interface_utils.h
index c8e78fc..b3bc7f4 100644
--- a/libs/binder/ndk/include_cpp/android/binder_interface_utils.h
+++ b/libs/binder/ndk/include_cpp/android/binder_interface_utils.h
@@ -324,42 +324,4 @@
} // namespace ndk
-// Once minSdkVersion is 30, we are guaranteed to be building with the
-// Android 11 AIDL compiler which supports the SharedRefBase::make API.
-#if !defined(__ANDROID_API__) || __ANDROID_API__ >= 30 || defined(__ANDROID_APEX__)
-namespace ndk::internal {
-template <typename T, typename = void>
-struct is_complete_type : std::false_type {};
-
-template <typename T>
-struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_type {};
-} // namespace ndk::internal
-
-namespace std {
-
-// Define `SharedRefBase` specific versions of `std::make_shared` and
-// `std::make_unique` to block people from using them. Using them to allocate
-// `ndk::SharedRefBase` objects results in double ownership. Use
-// `ndk::SharedRefBase::make<T>(...)` instead.
-//
-// Note: We exclude incomplete types because `std::is_base_of` is undefined in
-// that case.
-
-template <typename T, typename... Args,
- std::enable_if_t<ndk::internal::is_complete_type<T>::value, bool> = true,
- std::enable_if_t<std::is_base_of<ndk::SharedRefBase, T>::value, bool> = true>
-shared_ptr<T> make_shared(Args...) { // SEE COMMENT ABOVE.
- static_assert(!std::is_base_of<ndk::SharedRefBase, T>::value);
-}
-
-template <typename T, typename... Args,
- std::enable_if_t<ndk::internal::is_complete_type<T>::value, bool> = true,
- std::enable_if_t<std::is_base_of<ndk::SharedRefBase, T>::value, bool> = true>
-unique_ptr<T> make_unique(Args...) { // SEE COMMENT ABOVE.
- static_assert(!std::is_base_of<ndk::SharedRefBase, T>::value);
-}
-
-} // namespace std
-#endif
-
/** @} */
diff --git a/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp b/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp
index 1b136dc..357b454 100644
--- a/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp
+++ b/libs/binder/ndk/tests/libbinder_ndk_unit_test.cpp
@@ -231,7 +231,8 @@
}
TEST(NdkBinder, DetectNoSharedRefBaseCreated) {
- EXPECT_DEATH(MyBinderNdkUnitTest(), "SharedRefBase: no ref created during lifetime");
+ EXPECT_DEATH(std::make_shared<MyBinderNdkUnitTest>(),
+ "SharedRefBase: no ref created during lifetime");
}
TEST(NdkBinder, GetServiceThatDoesntExist) {