package android.app.servertransaction;
import android.app.ClientTransactionHandler;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Trace;
import com.android.internal.content.ReferrerIntent;
import java.util.List;
import java.util.Objects;
public class NewIntentItem extends ClientTransactionItem {
private List<ReferrerIntent> mIntents;
private boolean mPause;
@Override
public void execute(ClientTransactionHandler client, IBinder token,
PendingTransactionActions pendingActions) {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityNewIntent");
client.handleNewIntent(token, mIntents, mPause);
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
}
private NewIntentItem() {}
public static NewIntentItem obtain(List<ReferrerIntent> intents, boolean pause) {
NewIntentItem instance = ObjectPool.obtain(NewIntentItem.class);
if (instance == null) {
instance = new NewIntentItem();
}
instance.mIntents = intents;
instance.mPause = pause;
return instance;
}
@Override
public void recycle() {
mIntents = null;
mPause = false;
ObjectPool.recycle(this);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeBoolean(mPause);
dest.writeTypedList(mIntents, flags);
}
private NewIntentItem(Parcel in) {
mPause = in.readBoolean();
mIntents = in.createTypedArrayList(ReferrerIntent.CREATOR);
}
public static final Parcelable.Creator<NewIntentItem> CREATOR =
new Parcelable.Creator<NewIntentItem>() {
public NewIntentItem createFromParcel(Parcel in) {
return new NewIntentItem(in);
}
public NewIntentItem[] newArray(int size) {
return new NewIntentItem[size];
}
};
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
final NewIntentItem other = (NewIntentItem) o;
return mPause == other.mPause && Objects.equals(mIntents, other.mIntents);
}
@Override
public int hashCode() {
int result = 17;
result = 31 * result + (mPause ? 1 : 0);
result = 31 * result + mIntents.hashCode();
return result;
}
@Override
public String toString() {
return "NewIntentItem{pause=" + mPause + ",intents=" + mIntents + "}";
}
}