Add dispatchRequestTranslation() in WebViewProvider.

This change doesn't introduce a new API, the change is just pushing
down an existing API from View that we are missing to add for the
webview. We should also provide this method to allow webview provider
to provide their implementation if needed.

Bug: 186617107
Test: manual
CTS-Coverage-Bug: 177960696

Change-Id: If75285b3aafdb1f2a3d7c307a90bb783edf029b5
This commit is contained in:
Joanne Chung
2021-04-28 19:18:55 +08:00
parent 0a35d1d6b4
commit b8e3112908
3 changed files with 24 additions and 0 deletions

View File

@@ -14919,6 +14919,7 @@ package android.webkit {
public static interface WebViewProvider.ViewDelegate {
method public default void autofill(android.util.SparseArray<android.view.autofill.AutofillValue>);
method public default void dispatchCreateViewTranslationRequest(@NonNull java.util.Map<android.view.autofill.AutofillId,long[]>, @NonNull int[], @Nullable android.view.translation.TranslationCapability, @NonNull java.util.List<android.view.translation.ViewTranslationRequest>);
method public boolean dispatchKeyEvent(android.view.KeyEvent);
method public android.view.View findFocus(android.view.View);
method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider();

View File

@@ -60,11 +60,13 @@ import android.view.WindowInsets;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeProvider;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillValue;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.inspector.InspectableProperty;
import android.view.textclassifier.TextClassifier;
import android.view.translation.TranslationCapability;
import android.view.translation.TranslationSpec.DataFormat;
import android.view.translation.ViewTranslationRequest;
import android.view.translation.ViewTranslationResponse;
@@ -2868,6 +2870,16 @@ public class WebView extends AbsoluteLayout
supportedFormats, requestsCollector);
}
@Override
public void dispatchCreateViewTranslationRequest(@NonNull Map<AutofillId, long[]> viewIds,
@NonNull @DataFormat int[] supportedFormats,
@Nullable TranslationCapability capability,
@NonNull List<ViewTranslationRequest> requests) {
super.dispatchCreateViewTranslationRequest(viewIds, supportedFormats, capability, requests);
mProvider.getViewDelegate().dispatchCreateViewTranslationRequest(viewIds, supportedFormats,
capability, requests);
}
@Override
public void onVirtualViewTranslationResponses(
@NonNull LongSparseArray<ViewTranslationResponse> response) {

View File

@@ -45,10 +45,12 @@ import android.view.WindowInsets;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeProvider;
import android.view.autofill.AutofillId;
import android.view.autofill.AutofillValue;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.view.textclassifier.TextClassifier;
import android.view.translation.TranslationCapability;
import android.view.translation.TranslationSpec.DataFormat;
import android.view.translation.ViewTranslationRequest;
import android.view.translation.ViewTranslationResponse;
@@ -59,6 +61,7 @@ import android.webkit.WebView.VisualStateCallback;
import java.io.BufferedWriter;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
@@ -377,6 +380,14 @@ public interface WebViewProvider {
LongSparseArray<ViewTranslationResponse> response) {
}
default void dispatchCreateViewTranslationRequest(
@NonNull @SuppressWarnings("unused") Map<AutofillId, long[]> viewIds,
@NonNull @SuppressWarnings("unused") @DataFormat int[] supportedFormats,
@Nullable @SuppressWarnings("unused") TranslationCapability capability,
@NonNull @SuppressWarnings("unused") List<ViewTranslationRequest> requests) {
}
public AccessibilityNodeProvider getAccessibilityNodeProvider();
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info);