12397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales/* 22397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * Copyright (C) 2015 The Android Open Source Project 32397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * 42397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * Licensed under the Apache License, Version 2.0 (the "License"); 52397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * you may not use this file except in compliance with the License. 62397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * You may obtain a copy of the License at 72397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * 82397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * http://www.apache.org/licenses/LICENSE-2.0 92397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * 102397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * Unless required by applicable law or agreed to in writing, software 112397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * distributed under the License is distributed on an "AS IS" BASIS, 122397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * See the License for the specific language governing permissions and 142397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * limitations under the License. 152397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales */ 162397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 172397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Moralespackage com.android.internal.widget; 182397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 192397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Moralesimport android.os.Parcel; 202397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Moralesimport android.os.Parcelable; 212397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 222397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales/** 232397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * Response object for a ILockSettings credential verification request. 242397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales * @hide 252397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales */ 262397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Moralespublic final class VerifyCredentialResponse implements Parcelable { 272397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 282397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public static final int RESPONSE_ERROR = -1; 292397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public static final int RESPONSE_OK = 0; 302397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public static final int RESPONSE_RETRY = 1; 312397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 322397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public static final VerifyCredentialResponse OK = new VerifyCredentialResponse(); 332397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public static final VerifyCredentialResponse ERROR 342397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales = new VerifyCredentialResponse(RESPONSE_ERROR, 0, null); 352397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 362397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales private int mResponseCode; 372397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales private byte[] mPayload; 382397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales private int mTimeout; 392397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 402397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public static final Parcelable.Creator<VerifyCredentialResponse> CREATOR 412397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales = new Parcelable.Creator<VerifyCredentialResponse>() { 422397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales @Override 432397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public VerifyCredentialResponse createFromParcel(Parcel source) { 442397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales int responseCode = source.readInt(); 452397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales VerifyCredentialResponse response = new VerifyCredentialResponse(responseCode, 0, null); 462397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales if (responseCode == RESPONSE_RETRY) { 472397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales response.setTimeout(source.readInt()); 482397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } else if (responseCode == RESPONSE_OK) { 492397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales int size = source.readInt(); 502397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales if (size > 0) { 512397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales byte[] payload = new byte[size]; 522397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales source.readByteArray(payload); 532397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales response.setPayload(payload); 542397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 552397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 562397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales return response; 572397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 582397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 592397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales @Override 602397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public VerifyCredentialResponse[] newArray(int size) { 612397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales return new VerifyCredentialResponse[size]; 622397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 632397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 642397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales }; 652397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 662397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public VerifyCredentialResponse() { 672397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mResponseCode = RESPONSE_OK; 682397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mPayload = null; 692397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 702397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 712397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 722397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public VerifyCredentialResponse(byte[] payload) { 732397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mPayload = payload; 742397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mResponseCode = RESPONSE_OK; 752397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 762397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 772397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public VerifyCredentialResponse(int timeout) { 782397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mTimeout = timeout; 792397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mResponseCode = RESPONSE_RETRY; 802397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mPayload = null; 812397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 822397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 832397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales private VerifyCredentialResponse(int responseCode, int timeout, byte[] payload) { 842397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mResponseCode = responseCode; 852397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mTimeout = timeout; 862397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mPayload = payload; 872397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 882397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 892397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales @Override 902397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public void writeToParcel(Parcel dest, int flags) { 912397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales dest.writeInt(mResponseCode); 922397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales if (mResponseCode == RESPONSE_RETRY) { 932397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales dest.writeInt(mTimeout); 942397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } else if (mResponseCode == RESPONSE_OK) { 952397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales if (mPayload != null) { 962397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales dest.writeInt(mPayload.length); 972397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales dest.writeByteArray(mPayload); 982397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 992397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1002397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1012397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 1022397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales @Override 1032397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public int describeContents() { 1042397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales return 0; 1052397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1062397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 1072397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public byte[] getPayload() { 1082397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales return mPayload; 1092397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1102397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 1112397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public int getTimeout() { 1122397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales return mTimeout; 1132397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1142397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 1152397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales public int getResponseCode() { 1162397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales return mResponseCode; 1172397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1182397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 1192397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales private void setTimeout(int timeout) { 1202397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mTimeout = timeout; 1212397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1222397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales 1232397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales private void setPayload(byte[] payload) { 1242397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales mPayload = payload; 1252397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales } 1262397427cb1a0bad8a42e6a342dcf29b31e40a234Andres Morales} 127