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