summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Wang <weiwa@google.com>2016-04-12 22:25:00 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-04-12 22:25:00 +0000
commit604285d676078e9d0d5c7944770bdba36144363e (patch)
tree7e844f88f8e1bf23011292ee70e83a63e1c6e487
parentff90a6e25ba0e4388f14d87a0fbd8231d5f8a721 (diff)
parent87a0e55e7d75e305e0fb50a0748d2002cd44c984 (diff)
Merge "Send failure reason from RttService." into nyc-dev
-rw-r--r--service/java/com/android/server/wifi/RttService.java16
-rw-r--r--tests/wifitests/src/com/android/server/wifi/RttServiceTest.java23
2 files changed, 31 insertions, 8 deletions
diff --git a/service/java/com/android/server/wifi/RttService.java b/service/java/com/android/server/wifi/RttService.java
index 3e994468d..3eafc77f6 100644
--- a/service/java/com/android/server/wifi/RttService.java
+++ b/service/java/com/android/server/wifi/RttService.java
@@ -213,8 +213,8 @@ public final class RttService extends SystemService {
mChannel.sendMessage(RttManager.CMD_OP_ENALBE_RESPONDER_SUCCEEDED, 0, key, config);
}
- void reportResponderEnableFailed(int key) {
- mChannel.sendMessage(RttManager.CMD_OP_ENALBE_RESPONDER_FAILED, 0, key);
+ void reportResponderEnableFailed(int key, int reason) {
+ mChannel.sendMessage(RttManager.CMD_OP_ENALBE_RESPONDER_FAILED, reason, key);
mResponderRequests.remove(key);
}
@@ -305,8 +305,14 @@ public final class RttService extends SystemService {
case RttManager.CMD_OP_STOP_RANGING:
return HANDLED;
case RttManager.CMD_OP_ENABLE_RESPONDER:
- replyFailed(msg, RttManager.REASON_NOT_AVAILABLE,
- "Wifi not enabled");
+ ClientInfo client = mClients.get(msg.replyTo);
+ if (client == null) {
+ Log.e(TAG, "client not connected yet!");
+ break;
+ }
+ int key = msg.arg2;
+ client.reportResponderEnableFailed(key,
+ RttManager.REASON_NOT_AVAILABLE);
break;
case RttManager.CMD_OP_DISABLE_RESPONDER:
return HANDLED;
@@ -372,7 +378,7 @@ public final class RttService extends SystemService {
transitionTo(mResponderEnabledState);
} else {
Log.e(TAG, "enable responder failed");
- ci.reportResponderEnableFailed(key);
+ ci.reportResponderEnableFailed(key, RttManager.REASON_UNSPECIFIED);
}
break;
case RttManager.CMD_OP_DISABLE_RESPONDER:
diff --git a/tests/wifitests/src/com/android/server/wifi/RttServiceTest.java b/tests/wifitests/src/com/android/server/wifi/RttServiceTest.java
index 3c6f678e0..177705cb9 100644
--- a/tests/wifitests/src/com/android/server/wifi/RttServiceTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/RttServiceTest.java
@@ -124,6 +124,7 @@ public class RttServiceTest {
Handler handler, int clientKey) {
Message message = sendEnableResponder(channel, handler, clientKey,
createResponderConfig());
+ verify(mWifiNative).enableRttResponder(anyInt());
assertEquals("reponse status is not success",
RttManager.CMD_OP_ENALBE_RESPONDER_SUCCEEDED, message.what);
String actualMac = ((ResponderConfig) message.obj).macAddress;
@@ -132,10 +133,12 @@ public class RttServiceTest {
// Send enable responder message and verify failure.
private void sendEnableResponderFailed(BidirectionalAsyncChannel channel,
- Handler handler, int clientKey) {
+ Handler handler, int clientKey, int reason) {
Message message = sendEnableResponder(channel, handler, clientKey, null);
assertEquals("reponse status is not failure",
RttManager.CMD_OP_ENALBE_RESPONDER_FAILED, message.what);
+ assertEquals("failure reason is not " + reason,
+ reason, message.arg1);
}
private Message sendEnableResponder(BidirectionalAsyncChannel channel, Handler handler,
@@ -149,7 +152,6 @@ public class RttServiceTest {
mLooper.dispatchAll();
ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
verify(handler, atLeastOnce()).handleMessage(messageCaptor.capture());
- verify(mWifiNative).enableRttResponder(anyInt());
return messageCaptor.getValue();
}
@@ -209,6 +211,9 @@ public class RttServiceTest {
verify(mWifiNative).disableRttResponder();
}
+ /**
+ * Enable responder failed because of internal error.
+ */
@Test
public void testEnableResponderFailure() throws Exception {
startWifi();
@@ -216,7 +221,7 @@ public class RttServiceTest {
when(mWifiNative.enableRttResponder(anyInt())).thenReturn(null);
BidirectionalAsyncChannel channel = connectChannel(handler);
// Disable failed.
- sendEnableResponderFailed(channel, handler, CLIENT_KEY1);
+ sendEnableResponderFailed(channel, handler, CLIENT_KEY1, RttManager.REASON_UNSPECIFIED);
}
@Test
@@ -244,6 +249,18 @@ public class RttServiceTest {
}
/**
+ * Enable responder failed because wifi is not enabled.
+ */
+ @Test
+ public void testEnableResponderFailedWifiDisabled() throws Exception {
+ Handler handler = mock(Handler.class);
+ BidirectionalAsyncChannel channel = connectChannel(handler);
+ // Wifi is disabled as startWifi() is not invoked.
+ sendEnableResponderFailed(channel, handler, CLIENT_KEY1, RttManager.REASON_NOT_AVAILABLE);
+ verifyNoMoreInteractions(mWifiNative);
+ }
+
+ /**
* Test RTT ranging with empty RttParams.
*/
@Test