Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9d5423f authored by Adam He's avatar Adam He Committed by Automerger Merge Worker
Browse files

Merge "Full refactor of Translation APIs." into sc-dev am: a47c1776

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13727643

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia33faa549640723499b3e0bb9d94e6b2ccb04529
parents a90d41ee a47c1776
Loading
Loading
Loading
Loading
+79 −9
Original line number Diff line number Diff line
@@ -52316,38 +52316,77 @@ package android.view.translation {
  }
  public final class TranslationRequest implements android.os.Parcelable {
    ctor public TranslationRequest(@Nullable CharSequence);
    method public int describeContents();
    method @Nullable public android.view.autofill.AutofillId getAutofillId();
    method @Nullable public CharSequence getTranslationText();
    method public int getFlags();
    method @NonNull public java.util.List<android.view.translation.TranslationRequestValue> getTranslationRequestValues();
    method @NonNull public java.util.List<android.view.translation.ViewTranslationRequest> getViewTranslationRequests();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.translation.TranslationRequest> CREATOR;
    field public static final int FLAG_DICTIONARY_RESULT = 2; // 0x2
    field public static final int FLAG_PARTIAL_RESPONSES = 8; // 0x8
    field public static final int FLAG_TRANSLATION_RESULT = 1; // 0x1
    field public static final int FLAG_TRANSLITERATION_RESULT = 4; // 0x4
  }
  public static final class TranslationRequest.Builder {
    ctor public TranslationRequest.Builder();
    method @NonNull public android.view.translation.TranslationRequest.Builder addTranslationRequestValue(@NonNull android.view.translation.TranslationRequestValue);
    method @NonNull public android.view.translation.TranslationRequest.Builder addViewTranslationRequest(@NonNull android.view.translation.ViewTranslationRequest);
    method @NonNull public android.view.translation.TranslationRequest build();
    method @NonNull public android.view.translation.TranslationRequest.Builder setAutofillId(@NonNull android.view.autofill.AutofillId);
    method @NonNull public android.view.translation.TranslationRequest.Builder setTranslationText(@NonNull CharSequence);
    method @NonNull public android.view.translation.TranslationRequest.Builder setFlags(int);
    method @NonNull public android.view.translation.TranslationRequest.Builder setTranslationRequestValues(@NonNull java.util.List<android.view.translation.TranslationRequestValue>);
    method @NonNull public android.view.translation.TranslationRequest.Builder setViewTranslationRequests(@NonNull java.util.List<android.view.translation.ViewTranslationRequest>);
  }
  public final class TranslationRequestValue implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public static android.view.translation.TranslationRequestValue forText(@NonNull CharSequence);
    method @NonNull public CharSequence getText();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.translation.TranslationRequestValue> CREATOR;
  }
  public final class TranslationResponse implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.util.SparseArray<android.view.translation.TranslationResponseValue> getTranslationResponseValues();
    method public int getTranslationStatus();
    method @NonNull public java.util.List<android.view.translation.TranslationRequest> getTranslations();
    method @NonNull public android.util.SparseArray<android.view.translation.ViewTranslationResponse> getViewTranslationResponses();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.translation.TranslationResponse> CREATOR;
    field public static final int TRANSLATION_STATUS_LANGUAGE_UNAVAILABLE = 2; // 0x2
    field public static final int TRANSLATION_STATUS_CONTEXT_UNSUPPORTED = 2; // 0x2
    field public static final int TRANSLATION_STATUS_SUCCESS = 0; // 0x0
    field public static final int TRANSLATION_STATUS_UNKNOWN_ERROR = 1; // 0x1
  }
  public static final class TranslationResponse.Builder {
    ctor public TranslationResponse.Builder(int);
    method @NonNull public android.view.translation.TranslationResponse.Builder addTranslations(@NonNull android.view.translation.TranslationRequest);
    method @NonNull public android.view.translation.TranslationResponse build();
    method @NonNull public android.view.translation.TranslationResponse.Builder setTranslationResponseValue(int, @NonNull android.view.translation.TranslationResponseValue);
    method @NonNull public android.view.translation.TranslationResponse.Builder setTranslationResponseValues(@NonNull android.util.SparseArray<android.view.translation.TranslationResponseValue>);
    method @NonNull public android.view.translation.TranslationResponse.Builder setTranslationStatus(int);
    method @NonNull public android.view.translation.TranslationResponse.Builder setTranslations(@NonNull java.util.List<android.view.translation.TranslationRequest>);
    method @NonNull public android.view.translation.TranslationResponse.Builder setViewTranslationResponse(int, @NonNull android.view.translation.ViewTranslationResponse);
    method @NonNull public android.view.translation.TranslationResponse.Builder setViewTranslationResponses(@NonNull android.util.SparseArray<android.view.translation.ViewTranslationResponse>);
  }
  public final class TranslationResponseValue implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public static android.view.translation.TranslationResponseValue forError();
    method @Nullable public CharSequence getDictionaryDescription();
    method public int getStatusCode();
    method @Nullable public CharSequence getText();
    method @Nullable public CharSequence getTransliteration();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.translation.TranslationResponseValue> CREATOR;
    field public static final int STATUS_ERROR = 1; // 0x1
    field public static final int STATUS_SUCCESS = 0; // 0x0
  }
  public static final class TranslationResponseValue.Builder {
    ctor public TranslationResponseValue.Builder(int);
    method @NonNull public android.view.translation.TranslationResponseValue build();
    method @NonNull public android.view.translation.TranslationResponseValue.Builder setDictionaryDescription(@NonNull CharSequence);
    method @NonNull public android.view.translation.TranslationResponseValue.Builder setText(@NonNull CharSequence);
    method @NonNull public android.view.translation.TranslationResponseValue.Builder setTransliteration(@NonNull CharSequence);
  }
  public final class TranslationSpec implements android.os.Parcelable {
@@ -52366,6 +52405,37 @@ package android.view.translation {
    method @Nullable @WorkerThread public android.view.translation.TranslationResponse translate(@NonNull android.view.translation.TranslationRequest);
  }
  public final class ViewTranslationRequest implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.view.autofill.AutofillId getAutofillId();
    method @NonNull public java.util.Set<java.lang.String> getKeys();
    method @NonNull public android.view.translation.TranslationRequestValue getValue(@NonNull String);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.translation.ViewTranslationRequest> CREATOR;
    field public static final String ID_TEXT = "text";
  }
  public static final class ViewTranslationRequest.Builder {
    ctor public ViewTranslationRequest.Builder(@NonNull android.view.autofill.AutofillId);
    method @NonNull public android.view.translation.ViewTranslationRequest build();
    method public android.view.translation.ViewTranslationRequest.Builder setValue(String, android.view.translation.TranslationRequestValue);
  }
  public final class ViewTranslationResponse implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.view.autofill.AutofillId getAutofillId();
    method @NonNull public java.util.Set<java.lang.String> getKeys();
    method @NonNull public android.view.translation.TranslationResponseValue getValue(@NonNull String);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.view.translation.ViewTranslationResponse> CREATOR;
  }
  public static final class ViewTranslationResponse.Builder {
    ctor public ViewTranslationResponse.Builder(@NonNull android.view.autofill.AutofillId);
    method @NonNull public android.view.translation.ViewTranslationResponse build();
    method public android.view.translation.ViewTranslationResponse.Builder setValue(String, android.view.translation.TranslationResponseValue);
  }
}
package android.webkit {
+1 −22
Original line number Diff line number Diff line
@@ -10102,27 +10102,6 @@ package android.service.timezone {
package android.service.translation {
  public final class TranslationRequest implements android.os.Parcelable {
    ctor public TranslationRequest(int, @NonNull android.view.translation.TranslationSpec, @NonNull android.view.translation.TranslationSpec, @NonNull java.util.List<android.view.translation.TranslationRequest>);
    method public int describeContents();
    method @NonNull public android.view.translation.TranslationSpec getDestSpec();
    method public int getRequestId();
    method @NonNull public android.view.translation.TranslationSpec getSourceSpec();
    method @NonNull public java.util.List<android.view.translation.TranslationRequest> getTranslationRequests();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.translation.TranslationRequest> CREATOR;
  }
  public static final class TranslationRequest.Builder {
    ctor public TranslationRequest.Builder(int, @NonNull android.view.translation.TranslationSpec, @NonNull android.view.translation.TranslationSpec, @NonNull java.util.List<android.view.translation.TranslationRequest>);
    method @NonNull public android.service.translation.TranslationRequest.Builder addTranslationRequests(@NonNull android.view.translation.TranslationRequest);
    method @NonNull public android.service.translation.TranslationRequest build();
    method @NonNull public android.service.translation.TranslationRequest.Builder setDestSpec(@NonNull android.view.translation.TranslationSpec);
    method @NonNull public android.service.translation.TranslationRequest.Builder setRequestId(int);
    method @NonNull public android.service.translation.TranslationRequest.Builder setSourceSpec(@NonNull android.view.translation.TranslationSpec);
    method @NonNull public android.service.translation.TranslationRequest.Builder setTranslationRequests(@NonNull java.util.List<android.view.translation.TranslationRequest>);
  }
  public abstract class TranslationService extends android.app.Service {
    ctor public TranslationService();
    method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent);
@@ -10130,7 +10109,7 @@ package android.service.translation {
    method public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationSpec, @NonNull android.view.translation.TranslationSpec, int);
    method public void onDisconnected();
    method public abstract void onFinishTranslationSession(int);
    method public abstract void onTranslationRequest(@NonNull android.service.translation.TranslationRequest, int, @NonNull android.os.CancellationSignal, @NonNull android.service.translation.TranslationService.OnTranslationResultCallback);
    method public abstract void onTranslationRequest(@NonNull android.view.translation.TranslationRequest, int, @NonNull android.os.CancellationSignal, @NonNull android.service.translation.TranslationService.OnTranslationResultCallback);
    field public static final String SERVICE_INTERFACE = "android.service.translation.TranslationService";
    field public static final String SERVICE_META_DATA = "android.translation_service";
  }
+0 −2
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package android.service.translation;

import android.service.translation.TranslationRequest;
import android.service.translation.ITranslationCallback;
import android.view.translation.TranslationSpec;
import com.android.internal.os.IResultReceiver;

+0 −281
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.service.translation;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.translation.TranslationSpec;

import com.android.internal.util.DataClass;

import java.util.ArrayList;
import java.util.List;

/**
 * Internal translation request sent to the {@link android.service.translation.TranslationService}
 * which contains the text to be translated.
 *
 * @hide
 */
@SystemApi
@DataClass(genConstructor = true, genBuilder = true, genToString = true)
public final class TranslationRequest implements Parcelable {

    private final int mRequestId;
    @NonNull
    private final TranslationSpec mSourceSpec;
    @NonNull
    private final TranslationSpec mDestSpec;
    @NonNull
    private final List<android.view.translation.TranslationRequest> mTranslationRequests;



    // Code below generated by codegen v1.0.22.
    //
    // DO NOT MODIFY!
    // CHECKSTYLE:OFF Generated code
    //
    // To regenerate run:
    // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/translation/TranslationRequest.java
    //
    // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
    //   Settings > Editor > Code Style > Formatter Control
    //@formatter:off


    @DataClass.Generated.Member
    public TranslationRequest(
            int requestId,
            @NonNull TranslationSpec sourceSpec,
            @NonNull TranslationSpec destSpec,
            @NonNull List<android.view.translation.TranslationRequest> translationRequests) {
        this.mRequestId = requestId;
        this.mSourceSpec = sourceSpec;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mSourceSpec);
        this.mDestSpec = destSpec;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mDestSpec);
        this.mTranslationRequests = translationRequests;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mTranslationRequests);

        // onConstructed(); // You can define this method to get a callback
    }

    @DataClass.Generated.Member
    public int getRequestId() {
        return mRequestId;
    }

    @DataClass.Generated.Member
    public @NonNull TranslationSpec getSourceSpec() {
        return mSourceSpec;
    }

    @DataClass.Generated.Member
    public @NonNull TranslationSpec getDestSpec() {
        return mDestSpec;
    }

    @DataClass.Generated.Member
    public @NonNull List<android.view.translation.TranslationRequest> getTranslationRequests() {
        return mTranslationRequests;
    }

    @Override
    @DataClass.Generated.Member
    public String toString() {
        // You can override field toString logic by defining methods like:
        // String fieldNameToString() { ... }

        return "TranslationRequest { " +
                "requestId = " + mRequestId + ", " +
                "sourceSpec = " + mSourceSpec + ", " +
                "destSpec = " + mDestSpec + ", " +
                "translationRequests = " + mTranslationRequests +
        " }";
    }

    @Override
    @DataClass.Generated.Member
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        // You can override field parcelling by defining methods like:
        // void parcelFieldName(Parcel dest, int flags) { ... }

        dest.writeInt(mRequestId);
        dest.writeTypedObject(mSourceSpec, flags);
        dest.writeTypedObject(mDestSpec, flags);
        dest.writeParcelableList(mTranslationRequests, flags);
    }

    @Override
    @DataClass.Generated.Member
    public int describeContents() { return 0; }

    /** @hide */
    @SuppressWarnings({"unchecked", "RedundantCast"})
    @DataClass.Generated.Member
    /* package-private */ TranslationRequest(@NonNull Parcel in) {
        // You can override field unparcelling by defining methods like:
        // static FieldType unparcelFieldName(Parcel in) { ... }

        int requestId = in.readInt();
        TranslationSpec sourceSpec = (TranslationSpec) in.readTypedObject(TranslationSpec.CREATOR);
        TranslationSpec destSpec = (TranslationSpec) in.readTypedObject(TranslationSpec.CREATOR);
        List<android.view.translation.TranslationRequest> translationRequests = new ArrayList<>();
        in.readParcelableList(translationRequests, android.view.translation.TranslationRequest.class.getClassLoader());

        this.mRequestId = requestId;
        this.mSourceSpec = sourceSpec;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mSourceSpec);
        this.mDestSpec = destSpec;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mDestSpec);
        this.mTranslationRequests = translationRequests;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mTranslationRequests);

        // onConstructed(); // You can define this method to get a callback
    }

    @DataClass.Generated.Member
    public static final @NonNull Parcelable.Creator<TranslationRequest> CREATOR
            = new Parcelable.Creator<TranslationRequest>() {
        @Override
        public TranslationRequest[] newArray(int size) {
            return new TranslationRequest[size];
        }

        @Override
        public TranslationRequest createFromParcel(@NonNull Parcel in) {
            return new TranslationRequest(in);
        }
    };

    /**
     * A builder for {@link TranslationRequest}
     */
    @SuppressWarnings("WeakerAccess")
    @DataClass.Generated.Member
    public static final class Builder {

        private int mRequestId;
        private @NonNull TranslationSpec mSourceSpec;
        private @NonNull TranslationSpec mDestSpec;
        private @NonNull List<android.view.translation.TranslationRequest> mTranslationRequests;

        private long mBuilderFieldsSet = 0L;

        public Builder(
                int requestId,
                @NonNull TranslationSpec sourceSpec,
                @NonNull TranslationSpec destSpec,
                @NonNull List<android.view.translation.TranslationRequest> translationRequests) {
            mRequestId = requestId;
            mSourceSpec = sourceSpec;
            com.android.internal.util.AnnotationValidations.validate(
                    NonNull.class, null, mSourceSpec);
            mDestSpec = destSpec;
            com.android.internal.util.AnnotationValidations.validate(
                    NonNull.class, null, mDestSpec);
            mTranslationRequests = translationRequests;
            com.android.internal.util.AnnotationValidations.validate(
                    NonNull.class, null, mTranslationRequests);
        }

        @DataClass.Generated.Member
        public @NonNull Builder setRequestId(int value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x1;
            mRequestId = value;
            return this;
        }

        @DataClass.Generated.Member
        public @NonNull Builder setSourceSpec(@NonNull TranslationSpec value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x2;
            mSourceSpec = value;
            return this;
        }

        @DataClass.Generated.Member
        public @NonNull Builder setDestSpec(@NonNull TranslationSpec value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x4;
            mDestSpec = value;
            return this;
        }

        @DataClass.Generated.Member
        public @NonNull Builder setTranslationRequests(@NonNull List<android.view.translation.TranslationRequest> value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x8;
            mTranslationRequests = value;
            return this;
        }

        /** @see #setTranslationRequests */
        @DataClass.Generated.Member
        public @NonNull Builder addTranslationRequests(@NonNull android.view.translation.TranslationRequest value) {
            // You can refine this method's name by providing item's singular name, e.g.:
            // @DataClass.PluralOf("item")) mItems = ...

            if (mTranslationRequests == null) setTranslationRequests(new ArrayList<>());
            mTranslationRequests.add(value);
            return this;
        }

        /** Builds the instance. This builder should not be touched after calling this! */
        public @NonNull TranslationRequest build() {
            checkNotUsed();
            mBuilderFieldsSet |= 0x10; // Mark builder used

            TranslationRequest o = new TranslationRequest(
                    mRequestId,
                    mSourceSpec,
                    mDestSpec,
                    mTranslationRequests);
            return o;
        }

        private void checkNotUsed() {
            if ((mBuilderFieldsSet & 0x10) != 0) {
                throw new IllegalStateException(
                        "This Builder should not be reused. Use a new Builder instance instead");
            }
        }
    }

    @DataClass.Generated(
            time = 1609966181888L,
            codegenVersion = "1.0.22",
            sourceFile = "frameworks/base/core/java/android/service/translation/TranslationRequest.java",
            inputSignatures = "private final  int mRequestId\nprivate final @android.annotation.NonNull android.view.translation.TranslationSpec mSourceSpec\nprivate final @android.annotation.NonNull android.view.translation.TranslationSpec mDestSpec\nprivate final @android.annotation.NonNull java.util.List<android.view.translation.TranslationRequest> mTranslationRequests\nclass TranslationRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=true, genBuilder=true, genToString=true)")
    @Deprecated
    private void __metadata() {}


    //@formatter:on
    // End of generated code

}
+1 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.os.RemoteException;
import android.util.Log;
import android.view.translation.ITranslationDirectManager;
import android.view.translation.TranslationManager;
import android.view.translation.TranslationRequest;
import android.view.translation.TranslationResponse;
import android.view.translation.TranslationSpec;

Loading