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

Commit bdb4dd81 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Use CloseGuard to catch UiccPort resource leaks

Bug: 378009798
Test: atest FrameworksTelephonyTests
Flag: EXEMPT this shouldn't affect apps outside of StrictMode
Change-Id: I82cc9ba8edef55fc93f52b442db3e7a986df89ee
parent d4dbb28c
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.flags.FeatureFlagsImpl;
import com.android.telephony.Rlog;

import dalvik.system.CloseGuard;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -46,6 +48,7 @@ public class UiccPort {
    // The lock object is created by UiccSlot that owns this UiccCard - this is to share the lock
    // between UiccSlot, UiccCard, EuiccCard, UiccPort, EuiccPort and UiccProfile for now.
    protected final Object mLock;
    private final CloseGuard mCloseGuard = CloseGuard.get();

    private String mIccid;
    protected String mCardId;
@@ -68,6 +71,7 @@ public class UiccPort {
        if (DBG) log("Creating");
        mPhoneId = phoneId;
        mLock = lock;
        mCloseGuard.open("cleanup");
        update(c, ci, ics, uiccCard);
    }

@@ -97,6 +101,7 @@ public class UiccPort {
    public void dispose() {
        synchronized (mLock) {
            if (DBG) log("Disposing Port");
            mCloseGuard.close();
            if (mUiccProfile != null) {
                mUiccProfile.dispose();
            }
@@ -106,9 +111,14 @@ public class UiccPort {
    }

    @Override
    protected void finalize() {
    protected void finalize() throws Throwable {
        if (DBG) log("UiccPort finalized");
        try {
            if (mCloseGuard != null) mCloseGuard.warnIfOpen();
            cleanupOpenLogicalChannelRecordsIfNeeded();
        } finally {
            super.finalize();
        }
    }

    /**