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

Commit eb667e66 authored by Nate Fischer's avatar Nate Fischer
Browse files

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
parent e80963da
Loading
Loading
Loading
Loading
+2 −16
Original line number Diff line number Diff line
@@ -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<java.lang.Boolean>);
    method public abstract void deleteKey(android.net.Uri, android.webkit.ValueCallback<java.lang.Boolean>);
    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<android.webkit.TokenBindingService.TokenBindingKey>);
    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();
+2 −84
Original line number Diff line number Diff line
@@ -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<TokenBindingKey> 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<Boolean> 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<Boolean> callback);
}
+2 −1
Original line number Diff line number Diff line
@@ -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();