From eb667e66eba8768acce71d4ab80f791bfa10b9bb Mon Sep 17 00:00:00 2001 From: Nate Fischer Date: Tue, 4 Dec 2018 17:32:12 -0800 Subject: [PATCH] WebView: remove unused Token Binding system APIs These APIs never really launched, and the Token Binding protocol is no longer supported by the chromium team (which means these APIs have been broken for some time). This removes most of the TokenBinding API surface, keeping (and deprecating) just enough to allow us to still compile and run WebView APKs. Bug: 119576150 Test: make update-api Change-Id: Ia5a4258aac5ed21691ea36a428b4aa7195ff21ca --- api/system-current.txt | 18 +--- .../android/webkit/TokenBindingService.java | 86 +------------------ .../webkit/WebViewFactoryProvider.java | 3 +- 3 files changed, 6 insertions(+), 101 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 580a7601ca814..fbd7db50ba429 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6763,22 +6763,8 @@ package android.webkit { ctor public SslErrorHandler(); } - public abstract class TokenBindingService { + public abstract deprecated class TokenBindingService { ctor public TokenBindingService(); - method public abstract void deleteAllKeys(android.webkit.ValueCallback); - method public abstract void deleteKey(android.net.Uri, android.webkit.ValueCallback); - method public abstract void enableTokenBinding(); - method public static android.webkit.TokenBindingService getInstance(); - method public abstract void getKey(android.net.Uri, java.lang.String[], android.webkit.ValueCallback); - field public static final java.lang.String KEY_ALGORITHM_ECDSAP256 = "ECDSAP256"; - field public static final java.lang.String KEY_ALGORITHM_RSA2048_PKCS_1_5 = "RSA2048_PKCS_1.5"; - field public static final java.lang.String KEY_ALGORITHM_RSA2048_PSS = "RSA2048PSS"; - } - - public static abstract class TokenBindingService.TokenBindingKey { - ctor public TokenBindingService.TokenBindingKey(); - method public abstract java.lang.String getAlgorithm(); - method public abstract java.security.KeyPair getKeyPair(); } public class WebChromeClient { @@ -6908,7 +6894,7 @@ package android.webkit { method public abstract android.webkit.GeolocationPermissions getGeolocationPermissions(); method public abstract android.webkit.ServiceWorkerController getServiceWorkerController(); method public abstract android.webkit.WebViewFactoryProvider.Statics getStatics(); - method public abstract android.webkit.TokenBindingService getTokenBindingService(); + method public abstract deprecated android.webkit.TokenBindingService getTokenBindingService(); method public abstract android.webkit.TracingController getTracingController(); method public abstract android.webkit.WebIconDatabase getWebIconDatabase(); method public abstract android.webkit.WebStorage getWebStorage(); diff --git a/core/java/android/webkit/TokenBindingService.java b/core/java/android/webkit/TokenBindingService.java index b37e1b8962c5e..4d2c046635791 100644 --- a/core/java/android/webkit/TokenBindingService.java +++ b/core/java/android/webkit/TokenBindingService.java @@ -16,12 +16,7 @@ package android.webkit; -import android.annotation.NonNull; -import android.annotation.Nullable; import android.annotation.SystemApi; -import android.net.Uri; - -import java.security.KeyPair; /** * Enables the token binding procotol, and provides access to the keys. See @@ -30,86 +25,9 @@ import java.security.KeyPair; * All methods are required to be called on the UI thread where WebView is * attached to the View hierarchy. * @hide + * @deprecated this is no longer supported. */ @SystemApi +@Deprecated public abstract class TokenBindingService { - - public static final String KEY_ALGORITHM_RSA2048_PKCS_1_5 = "RSA2048_PKCS_1.5"; - public static final String KEY_ALGORITHM_RSA2048_PSS = "RSA2048PSS"; - public static final String KEY_ALGORITHM_ECDSAP256 = "ECDSAP256"; - - /** - * Provides the KeyPair information. - */ - public static abstract class TokenBindingKey { - /** - * The public, private key pair. - */ - public abstract KeyPair getKeyPair(); - - /** - * The algorithm that is used to generate the key pair. - */ - public abstract String getAlgorithm(); - } - - /** - * Returns the default TokenBinding service instance. At present there is - * only one token binding service instance for all WebView instances, - * however this restriction may be relaxed in the future. - * - * @return The default TokenBindingService instance. - */ - public static TokenBindingService getInstance() { - return WebViewFactory.getProvider().getTokenBindingService(); - } - - /** - * Enables the token binding protocol. The token binding protocol - * has to be enabled before creating any WebViews. - * - * @throws IllegalStateException if a WebView was already created. - */ - public abstract void enableTokenBinding(); - - /** - * Retrieves the key pair for a given origin from the internal - * TokenBinding key store asynchronously. - * - * The user can provide a list of acceptable algorithms for the retrieved - * key pair. If a key pair exists and it is in the list of algorithms, then - * the key is returned. If it is not in the list, no key is returned. - * - * If no key pair exists, WebView chooses an algorithm from the list, in - * the order given, to generate a key. - * - * The user can pass {@code null} if any algorithm is acceptable. - * - * @param origin The origin for the server. - * @param algorithm The list of algorithms. An IllegalArgumentException is thrown if array is - * empty. - * @param callback The callback that will be called when key is available. - */ - public abstract void getKey(Uri origin, - @Nullable String[] algorithm, - @NonNull ValueCallback callback); - /** - * Deletes specified key (for use when associated cookie is cleared). - * - * @param origin The origin of the server. - * @param callback The callback that will be called when key is deleted. The - * callback parameter (Boolean) will indicate if operation is - * successful or if failed. - */ - public abstract void deleteKey(Uri origin, - @Nullable ValueCallback callback); - - /** - * Deletes all the keys (for use when cookies are cleared). - * - * @param callback The callback that will be called when keys are deleted. - * The callback parameter (Boolean) will indicate if operation is - * successful or if failed. - */ - public abstract void deleteAllKeys(@Nullable ValueCallback callback); } diff --git a/core/java/android/webkit/WebViewFactoryProvider.java b/core/java/android/webkit/WebViewFactoryProvider.java index 4ff49ea1bbc31..6a1ed39e25b33 100644 --- a/core/java/android/webkit/WebViewFactoryProvider.java +++ b/core/java/android/webkit/WebViewFactoryProvider.java @@ -129,7 +129,8 @@ public interface WebViewFactoryProvider { * Gets the TokenBindingService instance for this WebView implementation. The * implementation must return the same instance on subsequent calls. * - * @return the TokenBindingService instance + * @deprecated this method only returns {@code null} + * @return the TokenBindingService instance (which is always {@code null}) */ TokenBindingService getTokenBindingService();