• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 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.view.translation;
18 
19 import android.annotation.IntDef;
20 import android.annotation.NonNull;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 import android.util.SparseArray;
24 
25 import com.android.internal.util.DataClass;
26 
27 import java.lang.annotation.Retention;
28 import java.lang.annotation.RetentionPolicy;
29 import java.util.Objects;
30 
31 /**
32  * Response from the translation service, which contains the translated result.
33  */
34 @DataClass(genBuilder = true, genToString = true, genHiddenConstDefs = true)
35 public final class TranslationResponse implements Parcelable {
36 
37     /**
38      * The translation service was successful in translating.
39      */
40     public static final int TRANSLATION_STATUS_SUCCESS = 0;
41     /**
42      * The translation service returned unknown translation result.
43      */
44     public static final int TRANSLATION_STATUS_UNKNOWN_ERROR = 1;
45     /**
46      * The languages of the request is not available to be translated.
47      */
48     public static final int TRANSLATION_STATUS_CONTEXT_UNSUPPORTED = 2;
49 
50     /**
51      * The translation result status code.
52      */
53     private final @TranslationStatus int mTranslationStatus;
54 
55     /**
56      * List of translated {@link TranslationResponseValue}s. The key of entries in this list
57      * will be their respective index in {@link TranslationRequest#getTranslationRequestValues()}.
58      */
59     @NonNull
60     private final SparseArray<TranslationResponseValue> mTranslationResponseValues;
61 
62     /**
63      * List of translated {@link ViewTranslationResponse}s. The key of entries in this list
64      * will be their respective index in {@link TranslationRequest#getViewTranslationRequests()}.
65      */
66     @NonNull
67     private final SparseArray<ViewTranslationResponse> mViewTranslationResponses;
68 
69     /**
70      * Whether this response contains complete translated values, or is the final response in a
71      * series of partial responses.
72      *
73      * <p>This is {@code true} by default.</p>
74      */
75     private final boolean mFinalResponse;
76 
77     abstract static class BaseBuilder {
78 
79         /**
80          * @removed Use {@link Builder#Builder(int)}.
81          * @hide
82          */
83         @Deprecated
setTranslationStatus(@ranslationStatus int value)84         public abstract Builder setTranslationStatus(@TranslationStatus int value);
85 
86         /**
87          * Adds {@link TranslationResponseValue} to be translated. The input
88          * TranslationResponseValue format should match those provided by the
89          * {@link android.view.translation.Translator}'s targetSpec.
90          *
91          * @param value the translated value.
92          * @return this Builder.
93          */
94         @NonNull
95         @SuppressWarnings("MissingGetterMatchingBuilder")
setTranslationResponseValue(int index, @NonNull TranslationResponseValue value)96         public Builder setTranslationResponseValue(int index,
97                 @NonNull TranslationResponseValue value) {
98             Objects.requireNonNull(value, "value should not be null");
99             final Builder builder = (Builder) this;
100 
101             if (builder.mTranslationResponseValues == null) {
102                 builder.setTranslationResponseValues(new SparseArray<>());
103             }
104             builder.mTranslationResponseValues.put(index, value);
105             return builder;
106         }
107 
108         /**
109          * Sets the list of {@link ViewTranslationResponse} to be translated. The input
110          * ViewTranslationResponse contains {@link TranslationResponseValue}s whose  format should
111          * match those provided by the {@link android.view.translation.Translator}'s targetSpec.
112          *
113          * @param response the translated response.
114          * @return this Builder.
115          */
116         @NonNull
117         @SuppressWarnings("MissingGetterMatchingBuilder")
setViewTranslationResponse(int index, @NonNull ViewTranslationResponse response)118         public Builder setViewTranslationResponse(int index,
119                 @NonNull ViewTranslationResponse response) {
120             Objects.requireNonNull(response, "value should not be null");
121             final Builder builder = (Builder) this;
122 
123             if (builder.mViewTranslationResponses == null) {
124                 builder.setViewTranslationResponses(new SparseArray<>());
125             }
126             builder.mViewTranslationResponses.put(index, response);
127             return builder;
128         }
129     }
130 
defaultTranslationResponseValues()131     private static SparseArray<TranslationResponseValue> defaultTranslationResponseValues() {
132         return new SparseArray<>();
133     }
134 
defaultViewTranslationResponses()135     private static SparseArray<ViewTranslationResponse> defaultViewTranslationResponses() {
136         return new SparseArray<>();
137     }
138 
defaultFinalResponse()139     private static boolean defaultFinalResponse() {
140         return true;
141     }
142 
143 
144 
145 
146     // Code below generated by codegen v1.0.23.
147     //
148     // DO NOT MODIFY!
149     // CHECKSTYLE:OFF Generated code
150     //
151     // To regenerate run:
152     // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/view/translation/TranslationResponse.java
153     //
154     // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
155     //   Settings > Editor > Code Style > Formatter Control
156     //@formatter:off
157 
158 
159     /** @hide */
160     @IntDef(prefix = "TRANSLATION_STATUS_", value = {
161         TRANSLATION_STATUS_SUCCESS,
162         TRANSLATION_STATUS_UNKNOWN_ERROR,
163         TRANSLATION_STATUS_CONTEXT_UNSUPPORTED
164     })
165     @Retention(RetentionPolicy.SOURCE)
166     @DataClass.Generated.Member
167     public @interface TranslationStatus {}
168 
169     /** @hide */
170     @DataClass.Generated.Member
translationStatusToString(@ranslationStatus int value)171     public static String translationStatusToString(@TranslationStatus int value) {
172         switch (value) {
173             case TRANSLATION_STATUS_SUCCESS:
174                     return "TRANSLATION_STATUS_SUCCESS";
175             case TRANSLATION_STATUS_UNKNOWN_ERROR:
176                     return "TRANSLATION_STATUS_UNKNOWN_ERROR";
177             case TRANSLATION_STATUS_CONTEXT_UNSUPPORTED:
178                     return "TRANSLATION_STATUS_CONTEXT_UNSUPPORTED";
179             default: return Integer.toHexString(value);
180         }
181     }
182 
183     @DataClass.Generated.Member
TranslationResponse( @ranslationStatus int translationStatus, @NonNull SparseArray<TranslationResponseValue> translationResponseValues, @NonNull SparseArray<ViewTranslationResponse> viewTranslationResponses, boolean finalResponse)184     /* package-private */ TranslationResponse(
185             @TranslationStatus int translationStatus,
186             @NonNull SparseArray<TranslationResponseValue> translationResponseValues,
187             @NonNull SparseArray<ViewTranslationResponse> viewTranslationResponses,
188             boolean finalResponse) {
189         this.mTranslationStatus = translationStatus;
190 
191         if (!(mTranslationStatus == TRANSLATION_STATUS_SUCCESS)
192                 && !(mTranslationStatus == TRANSLATION_STATUS_UNKNOWN_ERROR)
193                 && !(mTranslationStatus == TRANSLATION_STATUS_CONTEXT_UNSUPPORTED)) {
194             throw new java.lang.IllegalArgumentException(
195                     "translationStatus was " + mTranslationStatus + " but must be one of: "
196                             + "TRANSLATION_STATUS_SUCCESS(" + TRANSLATION_STATUS_SUCCESS + "), "
197                             + "TRANSLATION_STATUS_UNKNOWN_ERROR(" + TRANSLATION_STATUS_UNKNOWN_ERROR + "), "
198                             + "TRANSLATION_STATUS_CONTEXT_UNSUPPORTED(" + TRANSLATION_STATUS_CONTEXT_UNSUPPORTED + ")");
199         }
200 
201         this.mTranslationResponseValues = translationResponseValues;
202         com.android.internal.util.AnnotationValidations.validate(
203                 NonNull.class, null, mTranslationResponseValues);
204         this.mViewTranslationResponses = viewTranslationResponses;
205         com.android.internal.util.AnnotationValidations.validate(
206                 NonNull.class, null, mViewTranslationResponses);
207         this.mFinalResponse = finalResponse;
208 
209         // onConstructed(); // You can define this method to get a callback
210     }
211 
212     /**
213      * The translation result status code.
214      */
215     @DataClass.Generated.Member
getTranslationStatus()216     public @TranslationStatus int getTranslationStatus() {
217         return mTranslationStatus;
218     }
219 
220     /**
221      * List of translated {@link TranslationResponseValue}s. The key of entries in this list
222      * will be their respective index in {@link TranslationRequest#getTranslationRequestValues()}.
223      */
224     @DataClass.Generated.Member
getTranslationResponseValues()225     public @NonNull SparseArray<TranslationResponseValue> getTranslationResponseValues() {
226         return mTranslationResponseValues;
227     }
228 
229     /**
230      * List of translated {@link ViewTranslationResponse}s. The key of entries in this list
231      * will be their respective index in {@link TranslationRequest#getViewTranslationRequests()}.
232      */
233     @DataClass.Generated.Member
getViewTranslationResponses()234     public @NonNull SparseArray<ViewTranslationResponse> getViewTranslationResponses() {
235         return mViewTranslationResponses;
236     }
237 
238     /**
239      * Whether this response contains complete translated values, or is the final response in a
240      * series of partial responses.
241      *
242      * <p>This is {@code true} by default.</p>
243      */
244     @DataClass.Generated.Member
isFinalResponse()245     public boolean isFinalResponse() {
246         return mFinalResponse;
247     }
248 
249     @Override
250     @DataClass.Generated.Member
toString()251     public String toString() {
252         // You can override field toString logic by defining methods like:
253         // String fieldNameToString() { ... }
254 
255         return "TranslationResponse { " +
256                 "translationStatus = " + translationStatusToString(mTranslationStatus) + ", " +
257                 "translationResponseValues = " + mTranslationResponseValues + ", " +
258                 "viewTranslationResponses = " + mViewTranslationResponses + ", " +
259                 "finalResponse = " + mFinalResponse +
260         " }";
261     }
262 
263     @Override
264     @DataClass.Generated.Member
writeToParcel(@onNull Parcel dest, int flags)265     public void writeToParcel(@NonNull Parcel dest, int flags) {
266         // You can override field parcelling by defining methods like:
267         // void parcelFieldName(Parcel dest, int flags) { ... }
268 
269         byte flg = 0;
270         if (mFinalResponse) flg |= 0x8;
271         dest.writeByte(flg);
272         dest.writeInt(mTranslationStatus);
273         dest.writeSparseArray(mTranslationResponseValues);
274         dest.writeSparseArray(mViewTranslationResponses);
275     }
276 
277     @Override
278     @DataClass.Generated.Member
describeContents()279     public int describeContents() { return 0; }
280 
281     /** @hide */
282     @SuppressWarnings({"unchecked", "RedundantCast"})
283     @DataClass.Generated.Member
TranslationResponse(@onNull Parcel in)284     /* package-private */ TranslationResponse(@NonNull Parcel in) {
285         // You can override field unparcelling by defining methods like:
286         // static FieldType unparcelFieldName(Parcel in) { ... }
287 
288         byte flg = in.readByte();
289         boolean finalResponse = (flg & 0x8) != 0;
290         int translationStatus = in.readInt();
291         SparseArray<TranslationResponseValue> translationResponseValues = (SparseArray) in.readSparseArray(TranslationResponseValue.class.getClassLoader());
292         SparseArray<ViewTranslationResponse> viewTranslationResponses = (SparseArray) in.readSparseArray(ViewTranslationResponse.class.getClassLoader());
293 
294         this.mTranslationStatus = translationStatus;
295 
296         if (!(mTranslationStatus == TRANSLATION_STATUS_SUCCESS)
297                 && !(mTranslationStatus == TRANSLATION_STATUS_UNKNOWN_ERROR)
298                 && !(mTranslationStatus == TRANSLATION_STATUS_CONTEXT_UNSUPPORTED)) {
299             throw new java.lang.IllegalArgumentException(
300                     "translationStatus was " + mTranslationStatus + " but must be one of: "
301                             + "TRANSLATION_STATUS_SUCCESS(" + TRANSLATION_STATUS_SUCCESS + "), "
302                             + "TRANSLATION_STATUS_UNKNOWN_ERROR(" + TRANSLATION_STATUS_UNKNOWN_ERROR + "), "
303                             + "TRANSLATION_STATUS_CONTEXT_UNSUPPORTED(" + TRANSLATION_STATUS_CONTEXT_UNSUPPORTED + ")");
304         }
305 
306         this.mTranslationResponseValues = translationResponseValues;
307         com.android.internal.util.AnnotationValidations.validate(
308                 NonNull.class, null, mTranslationResponseValues);
309         this.mViewTranslationResponses = viewTranslationResponses;
310         com.android.internal.util.AnnotationValidations.validate(
311                 NonNull.class, null, mViewTranslationResponses);
312         this.mFinalResponse = finalResponse;
313 
314         // onConstructed(); // You can define this method to get a callback
315     }
316 
317     @DataClass.Generated.Member
318     public static final @NonNull Parcelable.Creator<TranslationResponse> CREATOR
319             = new Parcelable.Creator<TranslationResponse>() {
320         @Override
321         public TranslationResponse[] newArray(int size) {
322             return new TranslationResponse[size];
323         }
324 
325         @Override
326         public TranslationResponse createFromParcel(@NonNull Parcel in) {
327             return new TranslationResponse(in);
328         }
329     };
330 
331     /**
332      * A builder for {@link TranslationResponse}
333      */
334     @SuppressWarnings("WeakerAccess")
335     @DataClass.Generated.Member
336     public static final class Builder extends BaseBuilder {
337 
338         private @TranslationStatus int mTranslationStatus;
339         private @NonNull SparseArray<TranslationResponseValue> mTranslationResponseValues;
340         private @NonNull SparseArray<ViewTranslationResponse> mViewTranslationResponses;
341         private boolean mFinalResponse;
342 
343         private long mBuilderFieldsSet = 0L;
344 
345         /**
346          * Creates a new Builder.
347          *
348          * @param translationStatus
349          *   The translation result status code.
350          */
Builder( @ranslationStatus int translationStatus)351         public Builder(
352                 @TranslationStatus int translationStatus) {
353             mTranslationStatus = translationStatus;
354 
355             if (!(mTranslationStatus == TRANSLATION_STATUS_SUCCESS)
356                     && !(mTranslationStatus == TRANSLATION_STATUS_UNKNOWN_ERROR)
357                     && !(mTranslationStatus == TRANSLATION_STATUS_CONTEXT_UNSUPPORTED)) {
358                 throw new java.lang.IllegalArgumentException(
359                         "translationStatus was " + mTranslationStatus + " but must be one of: "
360                                 + "TRANSLATION_STATUS_SUCCESS(" + TRANSLATION_STATUS_SUCCESS + "), "
361                                 + "TRANSLATION_STATUS_UNKNOWN_ERROR(" + TRANSLATION_STATUS_UNKNOWN_ERROR + "), "
362                                 + "TRANSLATION_STATUS_CONTEXT_UNSUPPORTED(" + TRANSLATION_STATUS_CONTEXT_UNSUPPORTED + ")");
363             }
364 
365         }
366 
367         /**
368          * The translation result status code.
369          * @removed
370          */
371         @DataClass.Generated.Member
372         @Override
373         @Deprecated
setTranslationStatus(@ranslationStatus int value)374         public @NonNull Builder setTranslationStatus(@TranslationStatus int value) {
375             checkNotUsed();
376             mBuilderFieldsSet |= 0x1;
377             mTranslationStatus = value;
378             return this;
379         }
380 
381         /**
382          * List of translated {@link TranslationResponseValue}s. The key of entries in this list
383          * will be their respective index in {@link TranslationRequest#getTranslationRequestValues()}.
384          */
385         @DataClass.Generated.Member
setTranslationResponseValues(@onNull SparseArray<TranslationResponseValue> value)386         public @NonNull Builder setTranslationResponseValues(@NonNull SparseArray<TranslationResponseValue> value) {
387             checkNotUsed();
388             mBuilderFieldsSet |= 0x2;
389             mTranslationResponseValues = value;
390             return this;
391         }
392 
393         /**
394          * List of translated {@link ViewTranslationResponse}s. The key of entries in this list
395          * will be their respective index in {@link TranslationRequest#getViewTranslationRequests()}.
396          */
397         @DataClass.Generated.Member
setViewTranslationResponses(@onNull SparseArray<ViewTranslationResponse> value)398         public @NonNull Builder setViewTranslationResponses(@NonNull SparseArray<ViewTranslationResponse> value) {
399             checkNotUsed();
400             mBuilderFieldsSet |= 0x4;
401             mViewTranslationResponses = value;
402             return this;
403         }
404 
405         /**
406          * Whether this response contains complete translated values, or is the final response in a
407          * series of partial responses.
408          *
409          * <p>This is {@code true} by default.</p>
410          */
411         @DataClass.Generated.Member
setFinalResponse(boolean value)412         public @NonNull Builder setFinalResponse(boolean value) {
413             checkNotUsed();
414             mBuilderFieldsSet |= 0x8;
415             mFinalResponse = value;
416             return this;
417         }
418 
419         /** Builds the instance. This builder should not be touched after calling this! */
build()420         public @NonNull TranslationResponse build() {
421             checkNotUsed();
422             mBuilderFieldsSet |= 0x10; // Mark builder used
423 
424             if ((mBuilderFieldsSet & 0x2) == 0) {
425                 mTranslationResponseValues = defaultTranslationResponseValues();
426             }
427             if ((mBuilderFieldsSet & 0x4) == 0) {
428                 mViewTranslationResponses = defaultViewTranslationResponses();
429             }
430             if ((mBuilderFieldsSet & 0x8) == 0) {
431                 mFinalResponse = defaultFinalResponse();
432             }
433             TranslationResponse o = new TranslationResponse(
434                     mTranslationStatus,
435                     mTranslationResponseValues,
436                     mViewTranslationResponses,
437                     mFinalResponse);
438             return o;
439         }
440 
checkNotUsed()441         private void checkNotUsed() {
442             if ((mBuilderFieldsSet & 0x10) != 0) {
443                 throw new IllegalStateException(
444                         "This Builder should not be reused. Use a new Builder instance instead");
445             }
446         }
447     }
448 
449     @DataClass.Generated(
450             time = 1621972659130L,
451             codegenVersion = "1.0.23",
452             sourceFile = "frameworks/base/core/java/android/view/translation/TranslationResponse.java",
453             inputSignatures = "public static final  int TRANSLATION_STATUS_SUCCESS\npublic static final  int TRANSLATION_STATUS_UNKNOWN_ERROR\npublic static final  int TRANSLATION_STATUS_CONTEXT_UNSUPPORTED\nprivate final @android.view.translation.TranslationResponse.TranslationStatus int mTranslationStatus\nprivate final @android.annotation.NonNull android.util.SparseArray<android.view.translation.TranslationResponseValue> mTranslationResponseValues\nprivate final @android.annotation.NonNull android.util.SparseArray<android.view.translation.ViewTranslationResponse> mViewTranslationResponses\nprivate final  boolean mFinalResponse\nprivate static  android.util.SparseArray<android.view.translation.TranslationResponseValue> defaultTranslationResponseValues()\nprivate static  android.util.SparseArray<android.view.translation.ViewTranslationResponse> defaultViewTranslationResponses()\nprivate static  boolean defaultFinalResponse()\nclass TranslationResponse extends java.lang.Object implements [android.os.Parcelable]\npublic abstract @java.lang.Deprecated android.view.translation.TranslationResponse.Builder setTranslationStatus(int)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setTranslationResponseValue(int,android.view.translation.TranslationResponseValue)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setViewTranslationResponse(int,android.view.translation.ViewTranslationResponse)\nclass BaseBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true, genToString=true, genHiddenConstDefs=true)\npublic abstract @java.lang.Deprecated android.view.translation.TranslationResponse.Builder setTranslationStatus(int)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setTranslationResponseValue(int,android.view.translation.TranslationResponseValue)\npublic @android.annotation.NonNull @java.lang.SuppressWarnings android.view.translation.TranslationResponse.Builder setViewTranslationResponse(int,android.view.translation.ViewTranslationResponse)\nclass BaseBuilder extends java.lang.Object implements []")
454     @Deprecated
__metadata()455     private void __metadata() {}
456 
457 
458     //@formatter:on
459     // End of generated code
460 
461 }
462