ShadowParcel.java revision 6ca1c54a32a83fcc3e347c141a0fc3ba653193b3
1cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampackage com.xtremelabs.robolectric.shadows; 2cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham 3cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport android.os.Parcel; 46ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkelimport android.os.Parcelable; 5cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.Robolectric; 6cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implementation; 7cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implements; 8cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham 9e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.ArrayList; 10e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.List; 11e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson 12cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham@Implements(Parcel.class) 136ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel@SuppressWarnings("unchecked") 14cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampublic class ShadowParcel { 157598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz private ArrayList parcelData = new ArrayList(); 167598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz private int index = 0; 177598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 187598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz @Implementation 197598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public static Parcel obtain() { 207598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz return Robolectric.newInstanceOf(Parcel.class); 217598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 227598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 237598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz @Implementation 247598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public void writeString(String str) { 257598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz if (str == null) { 267598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz return; 277598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 287598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz parcelData.add(str); 297598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 307598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 317598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz @Implementation 327598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public void writeInt(int i) { 337598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz parcelData.add(i); 347598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 357598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 367598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz @Implementation 37e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson public void writeLong(long i) { 38e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson parcelData.add(i); 39e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson } 40e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson 41e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson @Implementation 427598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public String readString() { 437598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz return index < parcelData.size() ? (String) parcelData.get(index++) : null; 447598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 457598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 467598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz @Implementation 477598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public int readInt() { 487598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz return index < parcelData.size() ? (Integer) parcelData.get(index++) : 0; 497598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 507598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 51e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson @Implementation 52e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson public long readLong() { 53e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson return index < parcelData.size() ? (Long) parcelData.get(index++) : 0; 54e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson } 55e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson 566ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel @Implementation 576ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel public void writeParcelable(Parcelable p, int flags) { 586ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel parcelData.add(p); 596ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel } 606ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel 616ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel @Implementation 626ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel public Parcelable readParcelable(ClassLoader cl) { 636ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel return index < parcelData.size() ? (Parcelable) parcelData.get(index++) : null; 646ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel } 656ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel 667598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public int getIndex() { 677598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz return index; 687598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 697598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz 707598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz public List getParcelData() { 717598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz return parcelData; 727598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz } 73cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham} 74