diff options
author | Wei Wang <weiwa@google.com> | 2016-04-12 22:25:00 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-04-12 22:25:00 +0000 |
commit | 604285d676078e9d0d5c7944770bdba36144363e (patch) | |
tree | 7e844f88f8e1bf23011292ee70e83a63e1c6e487 | |
parent | ff90a6e25ba0e4388f14d87a0fbd8231d5f8a721 (diff) | |
parent | 87a0e55e7d75e305e0fb50a0748d2002cd44c984 (diff) |
Merge "Send failure reason from RttService." into nyc-dev
-rw-r--r-- | service/java/com/android/server/wifi/RttService.java | 16 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/RttServiceTest.java | 23 |
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 |