Merge "Fix NullPointerException on NsdService" into main
This commit is contained in:
@@ -1920,11 +1920,14 @@ public class NsdService extends INsdManager.Stub {
|
|||||||
@Override
|
@Override
|
||||||
public INsdServiceConnector connect(INsdManagerCallback cb, boolean useJavaBackend) {
|
public INsdServiceConnector connect(INsdManagerCallback cb, boolean useJavaBackend) {
|
||||||
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INTERNET, "NsdService");
|
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INTERNET, "NsdService");
|
||||||
|
final int uid = mDeps.getCallingUid();
|
||||||
|
if (cb == null) {
|
||||||
|
throw new IllegalArgumentException("Unknown client callback from uid=" + uid);
|
||||||
|
}
|
||||||
if (DBG) Log.d(TAG, "New client connect. useJavaBackend=" + useJavaBackend);
|
if (DBG) Log.d(TAG, "New client connect. useJavaBackend=" + useJavaBackend);
|
||||||
final INsdServiceConnector connector = new NsdServiceConnector();
|
final INsdServiceConnector connector = new NsdServiceConnector();
|
||||||
mNsdStateMachine.sendMessage(mNsdStateMachine.obtainMessage(NsdManager.REGISTER_CLIENT,
|
mNsdStateMachine.sendMessage(mNsdStateMachine.obtainMessage(NsdManager.REGISTER_CLIENT,
|
||||||
new ConnectorArgs((NsdServiceConnector) connector, cb, useJavaBackend,
|
new ConnectorArgs((NsdServiceConnector) connector, cb, useJavaBackend, uid)));
|
||||||
mDeps.getCallingUid())));
|
|
||||||
return connector;
|
return connector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1585,6 +1585,20 @@ public class NsdServiceTest {
|
|||||||
lockOrder.verify(mMulticastLock).release();
|
lockOrder.verify(mMulticastLock).release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNullINsdManagerCallback() {
|
||||||
|
final NsdService service = new NsdService(mContext, mHandler, CLEANUP_DELAY_MS, mDeps) {
|
||||||
|
@Override
|
||||||
|
public INsdServiceConnector connect(INsdManagerCallback baseCb,
|
||||||
|
boolean runNewMdnsBackend) {
|
||||||
|
// Pass null INsdManagerCallback
|
||||||
|
return super.connect(null /* cb */, runNewMdnsBackend);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> new NsdManager(mContext, service));
|
||||||
|
}
|
||||||
|
|
||||||
private void waitForIdle() {
|
private void waitForIdle() {
|
||||||
HandlerUtils.waitForIdle(mHandler, TIMEOUT_MS);
|
HandlerUtils.waitForIdle(mHandler, TIMEOUT_MS);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user