From b8e31129085d87bebcbc699b38c2b0e8fd353acc Mon Sep 17 00:00:00 2001 From: Joanne Chung Date: Wed, 28 Apr 2021 19:18:55 +0800 Subject: [PATCH] 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 --- core/api/system-current.txt | 1 + core/java/android/webkit/WebView.java | 12 ++++++++++++ core/java/android/webkit/WebViewProvider.java | 11 +++++++++++ 3 files changed, 24 insertions(+) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 96a23b2a25ec3..d7c3aa4ea137b 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -14919,6 +14919,7 @@ package android.webkit { public static interface WebViewProvider.ViewDelegate { method public default void autofill(android.util.SparseArray); + method public default void dispatchCreateViewTranslationRequest(@NonNull java.util.Map, @NonNull int[], @Nullable android.view.translation.TranslationCapability, @NonNull java.util.List); method public boolean dispatchKeyEvent(android.view.KeyEvent); method public android.view.View findFocus(android.view.View); method public android.view.accessibility.AccessibilityNodeProvider getAccessibilityNodeProvider(); diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index a1d482264f4c0..0bbaac0fa9870 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -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 viewIds, + @NonNull @DataFormat int[] supportedFormats, + @Nullable TranslationCapability capability, + @NonNull List requests) { + super.dispatchCreateViewTranslationRequest(viewIds, supportedFormats, capability, requests); + mProvider.getViewDelegate().dispatchCreateViewTranslationRequest(viewIds, supportedFormats, + capability, requests); + } + @Override public void onVirtualViewTranslationResponses( @NonNull LongSparseArray response) { diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java index 8d996ee9f50a9..f9f823b70810c 100644 --- a/core/java/android/webkit/WebViewProvider.java +++ b/core/java/android/webkit/WebViewProvider.java @@ -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 response) { } + default void dispatchCreateViewTranslationRequest( + @NonNull @SuppressWarnings("unused") Map viewIds, + @NonNull @SuppressWarnings("unused") @DataFormat int[] supportedFormats, + @Nullable @SuppressWarnings("unused") TranslationCapability capability, + @NonNull @SuppressWarnings("unused") List requests) { + + } + public AccessibilityNodeProvider getAccessibilityNodeProvider(); public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info);