• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2024 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 
17 package android.app.appsearch.aidl;
18 
19 import android.annotation.ElapsedRealtimeLong;
20 import android.annotation.NonNull;
21 import android.app.appsearch.InternalVisibilityConfig;
22 import android.app.appsearch.safeparcel.AbstractSafeParcelable;
23 import android.app.appsearch.safeparcel.SafeParcelable;
24 import android.os.Parcel;
25 import android.os.Parcelable;
26 import android.os.UserHandle;
27 
28 import java.util.Collections;
29 import java.util.List;
30 import java.util.Objects;
31 
32 /**
33  * Encapsulates a request to make a binder call to set visibility configs to all blob namespaces in
34  * a database to AppSearch
35  *
36  * @hide
37  */
38 @SafeParcelable.Class(creator = "SetBlobVisibilityAidlRequestCreator")
39 public final class SetBlobVisibilityAidlRequest extends AbstractSafeParcelable {
40     @NonNull
41     public static final Parcelable.Creator<SetBlobVisibilityAidlRequest> CREATOR =
42             new SetBlobVisibilityAidlRequestCreator();
43 
44     @NonNull
45     @Field(id = 1, getter = "getCallerAttributionSource")
46     private final AppSearchAttributionSource mCallerAttributionSource;
47 
48     @NonNull
49     @Field(id = 2, getter = "getCallingDatabaseName")
50     private final String mCallingDatabaseName;
51 
52     @NonNull
53     @Field(id = 3, getter = "getVisibilityConfigs")
54     private final List<InternalVisibilityConfig> mVisibilityConfigs;
55 
56     @NonNull
57     @Field(id = 4, getter = "getUserHandle")
58     private final UserHandle mUserHandle;
59 
60     @Field(id = 5, getter = "getBinderCallStartTimeMillis")
61     private final long mBinderCallStartTimeMillis;
62 
63     /**
64      * Sets visibility configs to all blob namespaces in a database to AppSearch
65      *
66      * @param callerAttributionSource The permission identity of the package that is getting this
67      *     document.
68      * @param callingDatabaseName The database name of these blob namespaces stored in.
69      * @param visibilityConfigs List of {@link InternalVisibilityConfig} objects defining the
70      *     visibility for the blob namespaces.
71      * @param userHandle Handle of the calling user.
72      * @param binderCallStartTimeMillis start timestamp of binder call in Millis.
73      */
74     @Constructor
SetBlobVisibilityAidlRequest( @aramid = 1) @onNull AppSearchAttributionSource callerAttributionSource, @Param(id = 2) @NonNull String callingDatabaseName, @Param(id = 3) @NonNull List<InternalVisibilityConfig> visibilityConfigs, @Param(id = 4) @NonNull UserHandle userHandle, @Param(id = 5) long binderCallStartTimeMillis)75     public SetBlobVisibilityAidlRequest(
76             @Param(id = 1) @NonNull AppSearchAttributionSource callerAttributionSource,
77             @Param(id = 2) @NonNull String callingDatabaseName,
78             @Param(id = 3) @NonNull List<InternalVisibilityConfig> visibilityConfigs,
79             @Param(id = 4) @NonNull UserHandle userHandle,
80             @Param(id = 5) long binderCallStartTimeMillis) {
81         mCallerAttributionSource = Objects.requireNonNull(callerAttributionSource);
82         mCallingDatabaseName = Objects.requireNonNull(callingDatabaseName);
83         mVisibilityConfigs = Objects.requireNonNull(visibilityConfigs);
84         mUserHandle = Objects.requireNonNull(userHandle);
85         mBinderCallStartTimeMillis = binderCallStartTimeMillis;
86     }
87 
88     @NonNull
getCallerAttributionSource()89     public AppSearchAttributionSource getCallerAttributionSource() {
90         return mCallerAttributionSource;
91     }
92 
93     @NonNull
getCallingDatabaseName()94     public String getCallingDatabaseName() {
95         return mCallingDatabaseName;
96     }
97 
98     /**
99      * Gets the {@code list} of {@link InternalVisibilityConfig} contains visibility settings for
100      * blob namespaces.
101      */
102     @NonNull
getVisibilityConfigs()103     public List<InternalVisibilityConfig> getVisibilityConfigs() {
104         return Collections.unmodifiableList(mVisibilityConfigs);
105     }
106 
107     @NonNull
getUserHandle()108     public UserHandle getUserHandle() {
109         return mUserHandle;
110     }
111 
112     @ElapsedRealtimeLong
getBinderCallStartTimeMillis()113     public long getBinderCallStartTimeMillis() {
114         return mBinderCallStartTimeMillis;
115     }
116 
117     @Override
writeToParcel(@onNull Parcel dest, int flags)118     public void writeToParcel(@NonNull Parcel dest, int flags) {
119         SetBlobVisibilityAidlRequestCreator.writeToParcel(this, dest, flags);
120     }
121 }
122