Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa5a61c8 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Don't throw exception for SafeCloseable objects

* SafeCloseable objects will have their close() method
called when SandboxContext is destroyed, so we can leave
them out of the allowList.
* Long term we may want to remove the allowList altogether
and just rely on safeCloseable

Test: Locally passes
Flag: not needed
Bug: 280463854
Change-Id: I317a9d6639b25a522fe9dbcf2655b55ec68fded6
parent f68f1fa3
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -136,16 +136,19 @@ public class MainThreadInitializedObject<T> {
                if (mDestroyed) {
                    Log.e(TAG, "Static object access with a destroyed context");
                }
                if (!mAllowedObjects.contains(object)) {
                    throw new IllegalStateException(
                            "Leaking unknown objects " + object + "  " + provider);
                }

                T t = (T) mObjectMap.get(object);
                if (t != null) {
                    return t;
                }
                if (Looper.myLooper() == Looper.getMainLooper()) {
                    t = createObject(provider);
                    // Check if we've explicitly allowed the object or if it's a SafeCloseable,
                    // it will get destroyed in onDestroy()
                    if (!mAllowedObjects.contains(object) && !(t instanceof SafeCloseable)) {
                        throw new IllegalStateException(
                                "Leaking unknown objects " + object + "  " + provider + " " + t);
                    }
                    mObjectMap.put(object, t);
                    mOrderedObjects.add(t);
                    return t;