blob: 52ec3e60a9c74b20311479ea1572c2f710a87106 [file] [log] [blame]
Andrii Kulian446e8242017-10-26 15:17:29 -07001/*
2 * Copyright 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.app.servertransaction;
18
Andrii Kulian446e8242017-10-26 15:17:29 -070019import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
20
Mathew Inwood98e9ad12018-08-30 13:11:50 +010021import android.annotation.UnsupportedAppUsage;
Andrii Kulian88e05cb2017-12-05 17:21:10 -080022import android.app.ClientTransactionHandler;
Andrii Kulian446e8242017-10-26 15:17:29 -070023import android.app.ResultInfo;
24import android.os.IBinder;
25import android.os.Parcel;
26import android.os.Parcelable;
27import android.os.Trace;
28
29import java.util.List;
Andrii Kulian9c5ea9c2017-12-07 09:31:01 -080030import java.util.Objects;
Andrii Kulian446e8242017-10-26 15:17:29 -070031
32/**
33 * Activity result delivery callback.
34 * @hide
35 */
36public class ActivityResultItem extends ClientTransactionItem {
37
Mathew Inwood98e9ad12018-08-30 13:11:50 +010038 @UnsupportedAppUsage
Andrii Kulian9c5ea9c2017-12-07 09:31:01 -080039 private List<ResultInfo> mResultInfoList;
Andrii Kulian446e8242017-10-26 15:17:29 -070040
Andrii Kuliane55b0092018-04-19 15:29:22 -070041 /* TODO(b/78294732)
Andrii Kulian446e8242017-10-26 15:17:29 -070042 @Override
Andrii Kulian9956d892018-02-14 13:48:56 -080043 public int getPostExecutionState() {
44 return ON_RESUME;
Andrii Kuliane55b0092018-04-19 15:29:22 -070045 }*/
Andrii Kulian446e8242017-10-26 15:17:29 -070046
47 @Override
Andrii Kulian88e05cb2017-12-05 17:21:10 -080048 public void execute(ClientTransactionHandler client, IBinder token,
49 PendingTransactionActions pendingActions) {
Andrii Kulian446e8242017-10-26 15:17:29 -070050 Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityDeliverResult");
Andrii Kuliane55b0092018-04-19 15:29:22 -070051 client.handleSendResult(token, mResultInfoList, "ACTIVITY_RESULT");
Andrii Kulian446e8242017-10-26 15:17:29 -070052 Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER);
53 }
54
55
Andrii Kulian9c5ea9c2017-12-07 09:31:01 -080056 // ObjectPoolItem implementation
57
58 private ActivityResultItem() {}
59
60 /** Obtain an instance initialized with provided params. */
61 public static ActivityResultItem obtain(List<ResultInfo> resultInfoList) {
62 ActivityResultItem instance = ObjectPool.obtain(ActivityResultItem.class);
63 if (instance == null) {
64 instance = new ActivityResultItem();
65 }
66 instance.mResultInfoList = resultInfoList;
67
68 return instance;
69 }
70
71 @Override
72 public void recycle() {
73 mResultInfoList = null;
74 ObjectPool.recycle(this);
75 }
76
77
Andrii Kulian446e8242017-10-26 15:17:29 -070078 // Parcelable implementation
79
80 /** Write to Parcel. */
81 @Override
82 public void writeToParcel(Parcel dest, int flags) {
83 dest.writeTypedList(mResultInfoList, flags);
84 }
85
86 /** Read from Parcel. */
87 private ActivityResultItem(Parcel in) {
88 mResultInfoList = in.createTypedArrayList(ResultInfo.CREATOR);
89 }
90
Jeff Sharkey9e8f83d2019-02-28 12:06:45 -070091 public static final @android.annotation.NonNull Parcelable.Creator<ActivityResultItem> CREATOR =
Andrii Kulian446e8242017-10-26 15:17:29 -070092 new Parcelable.Creator<ActivityResultItem>() {
93 public ActivityResultItem createFromParcel(Parcel in) {
94 return new ActivityResultItem(in);
95 }
96
97 public ActivityResultItem[] newArray(int size) {
98 return new ActivityResultItem[size];
99 }
100 };
Andrii Kulian6b9d3a12017-11-16 14:36:36 -0800101
102 @Override
103 public boolean equals(Object o) {
104 if (this == o) {
105 return true;
106 }
107 if (o == null || getClass() != o.getClass()) {
108 return false;
109 }
110 final ActivityResultItem other = (ActivityResultItem) o;
Andrii Kulian9c5ea9c2017-12-07 09:31:01 -0800111 return Objects.equals(mResultInfoList, other.mResultInfoList);
Andrii Kulian6b9d3a12017-11-16 14:36:36 -0800112 }
113
114 @Override
115 public int hashCode() {
116 return mResultInfoList.hashCode();
117 }
Andrii Kulian88e05cb2017-12-05 17:21:10 -0800118
119 @Override
120 public String toString() {
121 return "ActivityResultItem{resultInfoList=" + mResultInfoList + "}";
122 }
Andrii Kulian446e8242017-10-26 15:17:29 -0700123}