15c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn/* 25c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * Copyright (C) 2011 The Android Open Source Project 35c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * 45c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 55c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * you may not use this file except in compliance with the License. 65c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * You may obtain a copy of the License at 75c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * 85c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 95c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * 105c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * Unless required by applicable law or agreed to in writing, software 115c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 125c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * See the License for the specific language governing permissions and 145c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn * limitations under the License. 155c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn */ 165c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 175c1637087453de15e31861f073eae5133c4e9f7bDianne Hackbornpackage android.support.v4.os; 185c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 195c1637087453de15e31861f073eae5133c4e9f7bDianne Hackbornimport android.os.Parcel; 205c1637087453de15e31861f073eae5133c4e9f7bDianne Hackbornimport android.os.Parcelable; 215c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov/** 230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link android.os.Parcelable} 240574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion. 250574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 265c1637087453de15e31861f073eae5133c4e9f7bDianne Hackbornpublic class ParcelableCompat { 270574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov 280574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 290574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Factory method for {@link Parcelable.Creator}. 300574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 310574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param callbacks Creator callbacks implementation. 320574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @return New creator. 330574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 345c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn public static <T> Parcelable.Creator<T> newCreator( 355c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn ParcelableCompatCreatorCallbacks<T> callbacks) { 365c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn if (android.os.Build.VERSION.SDK_INT >= 13) { 375c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn ParcelableCompatCreatorHoneycombMR2Stub.instantiate(callbacks); 385c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn } 395c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn return new CompatCreator<T>(callbacks); 405c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn } 415c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 425c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn static class CompatCreator<T> implements Parcelable.Creator<T> { 435c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn final ParcelableCompatCreatorCallbacks<T> mCallbacks; 445c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 455c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn public CompatCreator(ParcelableCompatCreatorCallbacks<T> callbacks) { 465c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn mCallbacks = callbacks; 475c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn } 485c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 495c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn @Override 505c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn public T createFromParcel(Parcel source) { 515c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn return mCallbacks.createFromParcel(source, null); 525c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn } 535c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn 545c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn @Override 555c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn public T[] newArray(int size) { 565c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn return mCallbacks.newArray(size); 575c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn } 585c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn } 595c1637087453de15e31861f073eae5133c4e9f7bDianne Hackborn} 60