16a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpackage com.android.server.wifi.anqp;
26a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist
36a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.net.ProtocolException;
46a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.ByteBuffer;
56a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.nio.charset.StandardCharsets;
66a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.ArrayList;
76a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.Collections;
86a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistimport java.util.List;
96a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist
106a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist/**
116a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist * The Domain Name ANQP Element, IEEE802.11-2012 section 8.4.4.15
126a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist */
136a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvistpublic class DomainNameElement extends ANQPElement {
146a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    private final List<String> mDomains;
156a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist
166a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    public DomainNameElement(Constants.ANQPElementType infoID, ByteBuffer payload)
176a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist            throws ProtocolException {
186a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist        super(infoID);
1905d2f4e6f26834a94b53187e6121379a16749088Jan Nordqvist        mDomains = new ArrayList<>();
206a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist
216a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist        while (payload.hasRemaining()) {
226a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist            // Use latin-1 to decode for now - safe for ASCII and retains encoding
236a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist            mDomains.add(Constants.getPrefixedString(payload, 1, StandardCharsets.ISO_8859_1));
246a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist        }
256a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    }
266a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist
276a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    public List<String> getDomains() {
286a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist        return Collections.unmodifiableList(mDomains);
296a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    }
306a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist
316a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    @Override
326a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    public String toString() {
3377f2b82a2e80af8da52c22d69a76def6d4209757Jan Nordqvist        return "DomainName{" +
346a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist                "mDomains=" + mDomains +
356a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist                '}';
366a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist    }
376a3903fed590e369b576bddbe1ae2d788768ddfeJan Nordqvist}
38