1823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/* 2823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Copyright 2014, The Android Open Source Project 3823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * 4823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 5823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * you may not use this file except in compliance with the License. 6823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * You may obtain a copy of the License at 7823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * 8823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * http://www.apache.org/licenses/LICENSE-2.0 9823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * 10823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Unless required by applicable law or agreed to in writing, software 11823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 12823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * See the License for the specific language governing permissions and 14823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * limitations under the License. 15823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */ 16823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom; 18823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 196b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordonimport android.os.Bundle; 20823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcel; 21823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcelable; 22823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 23823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.ArrayList; 24823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.List; 25823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 2607366813cdf3768dcd69a1f744023747564d654aRekha Kumarimport com.android.internal.telecom.IVideoProvider; 2707366813cdf3768dcd69a1f744023747564d654aRekha Kumar 28823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/** 29823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * A parcelable representation of a conference connection. 30823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * @hide 31823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */ 32823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonpublic final class ParcelableConference implements Parcelable { 33823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 34823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon private PhoneAccountHandle mPhoneAccount; 35823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon private int mState; 365c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad private int mConnectionCapabilities; 37720c664401081ca00e56c7eef12641ae792da530Tyler Gunn private int mConnectionProperties; 38823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon private List<String> mConnectionIds; 39edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED; 4007366813cdf3768dcd69a1f744023747564d654aRekha Kumar private final IVideoProvider mVideoProvider; 4107366813cdf3768dcd69a1f744023747564d654aRekha Kumar private final int mVideoState; 42edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee private StatusHints mStatusHints; 436b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon private Bundle mExtras; 44823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 45823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public ParcelableConference( 46823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon PhoneAccountHandle phoneAccount, 47823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon int state, 485c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad int connectionCapabilities, 49720c664401081ca00e56c7eef12641ae792da530Tyler Gunn int connectionProperties, 5007366813cdf3768dcd69a1f744023747564d654aRekha Kumar List<String> connectionIds, 5107366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider videoProvider, 520f51da328d11f8709d99890a61d6b4021a2207a5Andrew Lee int videoState, 53edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee long connectTimeMillis, 546b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon StatusHints statusHints, 556b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon Bundle extras) { 56823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon mPhoneAccount = phoneAccount; 57823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon mState = state; 585c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad mConnectionCapabilities = connectionCapabilities; 59720c664401081ca00e56c7eef12641ae792da530Tyler Gunn mConnectionProperties = connectionProperties; 60823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon mConnectionIds = connectionIds; 61cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED; 6207366813cdf3768dcd69a1f744023747564d654aRekha Kumar mVideoProvider = videoProvider; 6307366813cdf3768dcd69a1f744023747564d654aRekha Kumar mVideoState = videoState; 64cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn mConnectTimeMillis = connectTimeMillis; 65edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee mStatusHints = statusHints; 666b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon mExtras = extras; 67823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 68823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 69823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 70823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public String toString() { 71823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return (new StringBuffer()) 72823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append("account: ") 73823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(mPhoneAccount) 74823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(", state: ") 75823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(Connection.stateToString(mState)) 76823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(", capabilities: ") 775c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad .append(Connection.capabilitiesToString(mConnectionCapabilities)) 78720c664401081ca00e56c7eef12641ae792da530Tyler Gunn .append(", properties: ") 79720c664401081ca00e56c7eef12641ae792da530Tyler Gunn .append(Connection.propertiesToString(mConnectionProperties)) 80cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn .append(", connectTime: ") 81cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn .append(mConnectTimeMillis) 82823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(", children: ") 83823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .append(mConnectionIds) 8407366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(", VideoState: ") 8507366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(mVideoState) 8607366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(", VideoProvider: ") 8707366813cdf3768dcd69a1f744023747564d654aRekha Kumar .append(mVideoProvider) 88823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon .toString(); 89823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 90823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 91823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public PhoneAccountHandle getPhoneAccount() { 92823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return mPhoneAccount; 93823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 94823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 95823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public int getState() { 96823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return mState; 97823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 98823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 995c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad public int getConnectionCapabilities() { 1005c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad return mConnectionCapabilities; 101823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 102823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 103720c664401081ca00e56c7eef12641ae792da530Tyler Gunn public int getConnectionProperties() { 104720c664401081ca00e56c7eef12641ae792da530Tyler Gunn return mConnectionProperties; 105720c664401081ca00e56c7eef12641ae792da530Tyler Gunn } 106720c664401081ca00e56c7eef12641ae792da530Tyler Gunn 107823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public List<String> getConnectionIds() { 108823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return mConnectionIds; 109823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 110823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 111cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn public long getConnectTimeMillis() { 112cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn return mConnectTimeMillis; 113cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn } 11407366813cdf3768dcd69a1f744023747564d654aRekha Kumar public IVideoProvider getVideoProvider() { 11507366813cdf3768dcd69a1f744023747564d654aRekha Kumar return mVideoProvider; 11607366813cdf3768dcd69a1f744023747564d654aRekha Kumar } 11707366813cdf3768dcd69a1f744023747564d654aRekha Kumar 11807366813cdf3768dcd69a1f744023747564d654aRekha Kumar public int getVideoState() { 11907366813cdf3768dcd69a1f744023747564d654aRekha Kumar return mVideoState; 12007366813cdf3768dcd69a1f744023747564d654aRekha Kumar } 121cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn 122edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee public StatusHints getStatusHints() { 123edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee return mStatusHints; 124edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee } 125edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee 1266b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon public Bundle getExtras() { 1276b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon return mExtras; 1286b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon } 1296b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon 130823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public static final Parcelable.Creator<ParcelableConference> CREATOR = 131823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon new Parcelable.Creator<ParcelableConference> () { 132823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 133823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public ParcelableConference createFromParcel(Parcel source) { 134823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon ClassLoader classLoader = ParcelableConference.class.getClassLoader(); 135823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon PhoneAccountHandle phoneAccount = source.readParcelable(classLoader); 136823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon int state = source.readInt(); 137823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon int capabilities = source.readInt(); 138823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon List<String> connectionIds = new ArrayList<>(2); 139823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon source.readList(connectionIds, classLoader); 140cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn long connectTimeMillis = source.readLong(); 14107366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider videoCallProvider = 14207366813cdf3768dcd69a1f744023747564d654aRekha Kumar IVideoProvider.Stub.asInterface(source.readStrongBinder()); 14307366813cdf3768dcd69a1f744023747564d654aRekha Kumar int videoState = source.readInt(); 144d7017c42be527ac7cbf5de6bc0ba56c676543e52Tyler Gunn StatusHints statusHints = source.readParcelable(classLoader); 1456b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon Bundle extras = source.readBundle(classLoader); 146720c664401081ca00e56c7eef12641ae792da530Tyler Gunn int properties = source.readInt(); 14707366813cdf3768dcd69a1f744023747564d654aRekha Kumar 148720c664401081ca00e56c7eef12641ae792da530Tyler Gunn return new ParcelableConference(phoneAccount, state, capabilities, properties, 149720c664401081ca00e56c7eef12641ae792da530Tyler Gunn connectionIds, videoCallProvider, videoState, connectTimeMillis, statusHints, 150720c664401081ca00e56c7eef12641ae792da530Tyler Gunn extras); 151823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 152823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 153823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 154823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public ParcelableConference[] newArray(int size) { 155823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return new ParcelableConference[size]; 156823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 157823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon }; 158823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 159823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon /** {@inheritDoc} */ 160823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 161823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public int describeContents() { 162823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon return 0; 163823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 164823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon 165823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon /** Writes ParcelableConference object into a Parcel. */ 166823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon @Override 167823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon public void writeToParcel(Parcel destination, int flags) { 168823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon destination.writeParcelable(mPhoneAccount, 0); 169823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon destination.writeInt(mState); 1705c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad destination.writeInt(mConnectionCapabilities); 171823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon destination.writeList(mConnectionIds); 172cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn destination.writeLong(mConnectTimeMillis); 17307366813cdf3768dcd69a1f744023747564d654aRekha Kumar destination.writeStrongBinder( 17407366813cdf3768dcd69a1f744023747564d654aRekha Kumar mVideoProvider != null ? mVideoProvider.asBinder() : null); 17507366813cdf3768dcd69a1f744023747564d654aRekha Kumar destination.writeInt(mVideoState); 176edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee destination.writeParcelable(mStatusHints, 0); 1776b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon destination.writeBundle(mExtras); 178720c664401081ca00e56c7eef12641ae792da530Tyler Gunn destination.writeInt(mConnectionProperties); 179823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon } 180823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon} 181