1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.cts.verifier.p2p.testcase; 18 19 import java.util.ArrayList; 20 import java.util.List; 21 22 import android.net.wifi.p2p.WifiP2pDevice; 23 import android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener; 24 import android.util.Log; 25 26 /** 27 * The utility class for testing 28 * android.net.wifi.p2p.WifiP2pManager.DnsSdServiceResponseListener callback function. 29 */ 30 public class DnsSdResponseListenerTest extends ListenerTest 31 implements DnsSdServiceResponseListener { 32 33 private static final String TAG = "DnsSdResponseListenerTest"; 34 35 public static final List<ListenerArgument> NO_DNS_PTR 36 = new ArrayList<ListenerArgument>(); 37 38 public static final List<ListenerArgument> ALL_DNS_PTR 39 = new ArrayList<ListenerArgument>(); 40 41 public static final List<ListenerArgument> IPP_DNS_PTR 42 = new ArrayList<ListenerArgument>(); 43 44 public static final List<ListenerArgument> AFP_DNS_PTR 45 = new ArrayList<ListenerArgument>(); 46 47 /** 48 * The target device address. 49 */ 50 private String mTargetAddr; 51 52 static { initialize()53 initialize(); 54 } 55 DnsSdResponseListenerTest(String targetAddr)56 public DnsSdResponseListenerTest(String targetAddr) { 57 mTargetAddr = targetAddr; 58 } 59 60 @Override onDnsSdServiceAvailable(String instanceName, String registrationType, WifiP2pDevice srcDevice)61 public void onDnsSdServiceAvailable(String instanceName, 62 String registrationType, WifiP2pDevice srcDevice) { 63 Log.d(TAG, instanceName + " " + registrationType + 64 " received from " + srcDevice.deviceAddress); 65 66 /* 67 * Check only the response from the target device. 68 * The response from other devices are ignored. 69 */ 70 if (srcDevice.deviceAddress.equalsIgnoreCase(mTargetAddr)) { 71 receiveCallback(new Argument(instanceName, registrationType)); 72 } 73 } 74 initialize()75 private static void initialize() { 76 String ippInstanceName = "MyPrinter"; 77 String ippRegistrationType = "_ipp._tcp.local."; 78 String afpInstanceName = "Example"; 79 String afpRegistrationType = "_afpovertcp._tcp.local."; 80 81 IPP_DNS_PTR.add(new Argument(ippInstanceName, ippRegistrationType)); 82 AFP_DNS_PTR.add(new Argument(afpInstanceName, afpRegistrationType)); 83 ALL_DNS_PTR.add(new Argument(ippInstanceName, ippRegistrationType)); 84 ALL_DNS_PTR.add(new Argument(afpInstanceName, afpRegistrationType)); 85 } 86 87 /** 88 * The container of the argument of {@link #onDnsSdServiceAvailable}. 89 */ 90 static class Argument extends ListenerArgument { 91 92 private String mInstanceName; 93 private String mRegistrationType; 94 95 /** 96 * Set the argument of {@link #onDnsSdServiceAvailable}. 97 * 98 * @param instanceName instance name. 99 * @param registrationType registration type. 100 */ Argument(String instanceName, String registrationType)101 Argument(String instanceName, String registrationType) { 102 mInstanceName = instanceName; 103 mRegistrationType = registrationType; 104 } 105 106 @Override equals(Object obj)107 public boolean equals(Object obj) { 108 if (obj == null || !(obj instanceof Argument)) { 109 return false; 110 } 111 Argument arg = (Argument)obj; 112 return equals(mInstanceName, arg.mInstanceName) && 113 equals(mRegistrationType, arg.mRegistrationType); 114 } 115 equals(String s1, String s2)116 private boolean equals(String s1, String s2) { 117 if (s1 == null && s2 == null) { 118 return true; 119 } 120 if (s1 == null || s2 == null) { 121 return false; 122 } 123 return s1.equals(s2); 124 } 125 126 @Override toString()127 public String toString() { 128 StringBuilder sb = new StringBuilder(); 129 sb.append("[type=dns_ptr instant_name="); 130 sb.append(mInstanceName); 131 sb.append(" registration type="); 132 sb.append(mRegistrationType); 133 sb.append("\n"); 134 135 return "instanceName=" + mInstanceName + 136 " registrationType=" + mRegistrationType; 137 } 138 } 139 } 140