summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Etan Cohen <etancohen@google.com> 2016-08-19 17:54:35 +0000
committer android-build-merger <android-build-merger@google.com> 2016-08-19 17:54:35 +0000
commit879bc353c08d18ec357d194b2fb91f233b72d6a5 (patch)
tree513998fe820f909b86a2f4436c4095e9cb20445d
parentff6c1bb5ce5d55726eefa4d55121dca3e1a2769e (diff)
parent907ce63ed1f8dd9e51354c35cc1172599a4d748d (diff)
Merge "[NAN] Update finalize to check and warn user if resources not freed" into mm-wireless-dev
am: 907ce63ed1 Change-Id: Id45d1727dcfdf234e6345f546144c26408ae5fe6
-rw-r--r--wifi/java/android/net/wifi/nan/WifiNanManager.java14
-rw-r--r--wifi/java/android/net/wifi/nan/WifiNanSession.java21
2 files changed, 27 insertions, 8 deletions
diff --git a/wifi/java/android/net/wifi/nan/WifiNanManager.java b/wifi/java/android/net/wifi/nan/WifiNanManager.java
index 2c87f1122a05..1e929d2d5ff2 100644
--- a/wifi/java/android/net/wifi/nan/WifiNanManager.java
+++ b/wifi/java/android/net/wifi/nan/WifiNanManager.java
@@ -38,6 +38,8 @@ import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
+import dalvik.system.CloseGuard;
+
import libcore.util.HexEncoding;
import org.json.JSONException;
@@ -221,6 +223,7 @@ public class WifiNanManager {
public static final int WIFI_NAN_DATA_PATH_ROLE_RESPONDER = 1;
private final IWifiNanManager mService;
+ private final CloseGuard mCloseGuard = CloseGuard.get();
private final Object mLock = new Object(); // lock access to the following vars
@@ -330,6 +333,8 @@ public class WifiNanManager {
throw e.rethrowFromSystemServer();
}
}
+
+ mCloseGuard.open("disconnect");
}
/**
@@ -359,6 +364,7 @@ public class WifiNanManager {
mClientId = INVALID_CLIENT_ID;
}
+ mCloseGuard.close();
try {
mService.disconnect(clientId, binder);
} catch (RemoteException e) {
@@ -368,8 +374,12 @@ public class WifiNanManager {
@Override
protected void finalize() throws Throwable {
- disconnect();
- super.finalize();
+ try {
+ mCloseGuard.warnIfOpen();
+ disconnect();
+ } finally {
+ super.finalize();
+ }
}
/**
diff --git a/wifi/java/android/net/wifi/nan/WifiNanSession.java b/wifi/java/android/net/wifi/nan/WifiNanSession.java
index c10cd521ff89..f0a83687f088 100644
--- a/wifi/java/android/net/wifi/nan/WifiNanSession.java
+++ b/wifi/java/android/net/wifi/nan/WifiNanSession.java
@@ -21,6 +21,8 @@ import android.annotation.SystemApi;
import android.net.wifi.RttManager;
import android.util.Log;
+import dalvik.system.CloseGuard;
+
import java.lang.ref.WeakReference;
/**
@@ -52,6 +54,8 @@ public class WifiNanSession {
*/
protected boolean mTerminated = false;
+ private final CloseGuard mCloseGuard = CloseGuard.get();
+
/**
* {@hide}
*/
@@ -60,6 +64,8 @@ public class WifiNanSession {
mMgr = new WeakReference<>(manager);
mSessionId = sessionId;
+
+ mCloseGuard.open("terminate");
}
/**
@@ -77,6 +83,7 @@ public class WifiNanSession {
mgr.terminateSession(mSessionId);
mTerminated = true;
mMgr.clear();
+ mCloseGuard.close();
}
/**
@@ -92,17 +99,19 @@ public class WifiNanSession {
}
mTerminated = true;
mMgr.clear();
+ mCloseGuard.close();
}
@Override
protected void finalize() throws Throwable {
- if (!mTerminated) {
- Log.w(TAG, "WifiNanSession mSessionId=" + mSessionId
- + " was not explicitly terminated. The session may use resources until "
- + "terminated so step should be done explicitly");
- terminate();
+ try {
+ if (!mTerminated) {
+ mCloseGuard.warnIfOpen();
+ terminate();
+ }
+ } finally {
+ super.finalize();
}
- super.finalize();
}
/**