Fix args can be null

This commit is contained in:
Mygod
2020-05-31 02:57:20 +08:00
parent e8fb62a0b3
commit 3327242c2e
2 changed files with 20 additions and 19 deletions

View File

@@ -263,13 +263,13 @@ object TetheringManager {
@Suppress("NAME_SHADOWING") val callback = reference.get() @Suppress("NAME_SHADOWING") val callback = reference.get()
when (val name = method.name) { when (val name = method.name) {
"onTetheringStarted" -> { "onTetheringStarted" -> {
if (args.isNotEmpty()) Timber.w("Unexpected args for $name: $args") if (!args.isNullOrEmpty()) Timber.w("Unexpected args for $name: $args")
callback?.onTetheringStarted() callback?.onTetheringStarted()
null null
} }
"onTetheringFailed" -> { "onTetheringFailed" -> {
if (args.size != 1) Timber.w("Unexpected args for $name: $args") if (args?.size != 1) Timber.w("Unexpected args for $name: $args")
callback?.onTetheringFailed(args.getOrNull(0) as? Int?) callback?.onTetheringFailed(args?.getOrNull(0) as? Int?)
null null
} }
else -> { else -> {
@@ -457,42 +457,43 @@ object TetheringManager {
Proxy.newProxyInstance(interfaceTetheringEventCallback.classLoader, Proxy.newProxyInstance(interfaceTetheringEventCallback.classLoader,
arrayOf(interfaceTetheringEventCallback), object : InvocationHandler { arrayOf(interfaceTetheringEventCallback), object : InvocationHandler {
private var regexpsSent = false private var regexpsSent = false
override fun invoke(proxy: Any, method: Method, args: Array<out Any?>): Any? { override fun invoke(proxy: Any, method: Method, args: Array<out Any?>?): Any? {
@Suppress("NAME_SHADOWING") val callback = reference.get() @Suppress("NAME_SHADOWING") val callback = reference.get()
val noArgs = args?.size ?: 0
when (val name = method.name) { when (val name = method.name) {
"onTetheringSupported" -> { "onTetheringSupported" -> {
if (args.size > 1) Timber.w("Unexpected args for $name: $args") if (noArgs != 1) Timber.w("Unexpected args for $name: $args")
callback?.onTetheringSupported(args[0] as Boolean) callback?.onTetheringSupported(args!![0] as Boolean)
} }
"onUpstreamChanged" -> { "onUpstreamChanged" -> {
if (args.size > 1) Timber.w("Unexpected args for $name: $args") if (noArgs != 1) Timber.w("Unexpected args for $name: $args")
callback?.onUpstreamChanged(args[0] as Network?) callback?.onUpstreamChanged(args!![0] as Network?)
} }
"onTetherableInterfaceRegexpsChanged" -> { "onTetherableInterfaceRegexpsChanged" -> {
if (regexpsSent) callback?.onTetherableInterfaceRegexpsChanged() if (regexpsSent) callback?.onTetherableInterfaceRegexpsChanged()
regexpsSent = true regexpsSent = true
} }
"onTetherableInterfacesChanged" -> { "onTetherableInterfacesChanged" -> {
if (args.size > 1) Timber.w("Unexpected args for $name: $args") if (noArgs != 1) Timber.w("Unexpected args for $name: $args")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
callback?.onTetherableInterfacesChanged(args[0] as List<String?>) callback?.onTetherableInterfacesChanged(args!![0] as List<String?>)
} }
"onTetheredInterfacesChanged" -> { "onTetheredInterfacesChanged" -> {
if (args.size > 1) Timber.w("Unexpected args for $name: $args") if (noArgs != 1) Timber.w("Unexpected args for $name: $args")
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
callback?.onTetheredInterfacesChanged(args[0] as List<String?>) callback?.onTetheredInterfacesChanged(args!![0] as List<String?>)
} }
"onError" -> { "onError" -> {
if (args.size > 2) Timber.w("Unexpected args for $name: $args") if (noArgs != 2) Timber.w("Unexpected args for $name: $args")
callback?.onError(args[0] as String, args[1] as Int) callback?.onError(args!![0] as String, args[1] as Int)
} }
"onClientsChanged" -> { "onClientsChanged" -> {
if (args.size > 1) Timber.w("Unexpected args for $name: $args") if (noArgs != 1) Timber.w("Unexpected args for $name: $args")
callback?.onClientsChanged(args[0] as Iterable<*>) callback?.onClientsChanged(args!![0] as Iterable<*>)
} }
"onOffloadStatusChanged" -> { "onOffloadStatusChanged" -> {
if (args.size > 1) Timber.w("Unexpected args for $name: $args") if (noArgs != 1) Timber.w("Unexpected args for $name: $args")
callback?.onOffloadStatusChanged(args[0] as Int) callback?.onOffloadStatusChanged(args!![0] as Int)
} }
else -> { else -> {
Timber.w("Unexpected method, calling super: $method") Timber.w("Unexpected method, calling super: $method")

View File

@@ -92,7 +92,7 @@ object WifiP2pManagerHelper {
val proxy = Proxy.newProxyInstance(interfacePersistentGroupInfoListener.classLoader, val proxy = Proxy.newProxyInstance(interfacePersistentGroupInfoListener.classLoader,
arrayOf(interfacePersistentGroupInfoListener)) { proxy, method, args -> arrayOf(interfacePersistentGroupInfoListener)) { proxy, method, args ->
if (method.name == "onPersistentGroupInfoAvailable") { if (method.name == "onPersistentGroupInfoAvailable") {
if (args.size != 1) Timber.w(IllegalArgumentException("Unexpected args: $args")) if (args?.size != 1) Timber.w(IllegalArgumentException("Unexpected args: $args"))
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
listener(getGroupList.invoke(args[0]) as Collection<WifiP2pGroup>) listener(getGroupList.invoke(args[0]) as Collection<WifiP2pGroup>)
null null