| /* |
| * Copyright (C) 2007 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.webkit; |
| |
| import android.annotation.Nullable; |
| import android.content.Context; |
| |
| /** |
| * This class allows developers to determine whether any WebView used in the |
| * application has stored any of the following types of browsing data and |
| * to clear any such stored data for all WebViews in the application. |
| * <ul> |
| * <li>Username/password pairs for web forms</li> |
| * <li>HTTP authentication username/password pairs</li> |
| * <li>Data entered into text fields (e.g. for autocomplete suggestions)</li> |
| * </ul> |
| */ |
| public abstract class WebViewDatabase { |
| /** |
| * @deprecated This class should not be constructed by applications, use {@link |
| * #getInstance(Context)} instead to fetch the singleton instance. |
| */ |
| // TODO(ntfschr): mark this as @SystemApi after a year. |
| @Deprecated |
| public WebViewDatabase() {} |
| |
| /** |
| * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} |
| */ |
| protected static final String LOGTAG = "webviewdatabase"; |
| |
| public static WebViewDatabase getInstance(Context context) { |
| return WebViewFactory.getProvider().getWebViewDatabase(context); |
| } |
| |
| /** |
| * Gets whether there are any saved username/password pairs for web forms. |
| * Note that these are unrelated to HTTP authentication credentials. |
| * |
| * @return {@code true} if there are any saved username/password pairs |
| * @see WebView#savePassword |
| * @see #clearUsernamePassword |
| * @deprecated Saving passwords in WebView will not be supported in future versions. |
| */ |
| @Deprecated |
| public abstract boolean hasUsernamePassword(); |
| |
| /** |
| * Clears any saved username/password pairs for web forms. |
| * Note that these are unrelated to HTTP authentication credentials. |
| * |
| * @see WebView#savePassword |
| * @see #hasUsernamePassword |
| * @deprecated Saving passwords in WebView will not be supported in future versions. |
| */ |
| @Deprecated |
| public abstract void clearUsernamePassword(); |
| |
| /** |
| * Gets whether there are any saved credentials for HTTP authentication. |
| * |
| * @return whether there are any saved credentials |
| * @see #getHttpAuthUsernamePassword |
| * @see #setHttpAuthUsernamePassword |
| * @see #clearHttpAuthUsernamePassword |
| */ |
| public abstract boolean hasHttpAuthUsernamePassword(); |
| |
| /** |
| * Clears any saved credentials for HTTP authentication. This method only clears the username |
| * and password stored in WebViewDatabase instance. The username and password are not read from |
| * the {@link WebViewDatabase} during {@link WebViewClient#onReceivedHttpAuthRequest}. It is up |
| * to the app to do this or not. |
| * <p> |
| * The username and password used for http authentication might be cached in the network stack |
| * itself, and are not cleared when this method is called. WebView does not provide a special |
| * mechanism to clear HTTP authentication for implementing client logout. The client logout |
| * mechanism should be implemented by the Web site designer (such as server sending a HTTP 401 |
| * for invalidating credentials). |
| * |
| * @see #getHttpAuthUsernamePassword |
| * @see #setHttpAuthUsernamePassword |
| * @see #hasHttpAuthUsernamePassword |
| */ |
| public abstract void clearHttpAuthUsernamePassword(); |
| |
| /** |
| * Stores HTTP authentication credentials for a given host and realm to the {@link WebViewDatabase} |
| * instance. |
| * <p> |
| * To use HTTP authentication, the embedder application has to implement |
| * {@link WebViewClient#onReceivedHttpAuthRequest}, and call {@link HttpAuthHandler#proceed} |
| * with the correct username and password. |
| * <p> |
| * The embedder app can get the username and password any way it chooses, and does not have to |
| * use {@link WebViewDatabase}. |
| * <p> |
| * Notes: |
| * <li> |
| * {@link WebViewDatabase} is provided only as a convenience to store and retrieve http |
| * authentication credentials. WebView does not read from it during HTTP authentication. |
| * </li> |
| * <li> |
| * WebView does not provide a special mechanism to clear HTTP authentication credentials for |
| * implementing client logout. The client logout mechanism should be implemented by the Web site |
| * designer (such as server sending a HTTP 401 for invalidating credentials). |
| * </li> |
| * |
| * @param host the host to which the credentials apply |
| * @param realm the realm to which the credentials apply |
| * @param username the username |
| * @param password the password |
| * @see #getHttpAuthUsernamePassword |
| * @see #hasHttpAuthUsernamePassword |
| * @see #clearHttpAuthUsernamePassword |
| */ |
| public abstract void setHttpAuthUsernamePassword(String host, String realm, |
| String username, String password); |
| |
| /** |
| * Retrieves HTTP authentication credentials for a given host and realm from the {@link |
| * WebViewDatabase} instance. |
| * |
| * @param host the host to which the credentials apply |
| * @param realm the realm to which the credentials apply |
| * @return the credentials as a String array, if found. The first element |
| * is the username and the second element is the password. {@code null} if |
| * no credentials are found. |
| * @see #setHttpAuthUsernamePassword |
| * @see #hasHttpAuthUsernamePassword |
| * @see #clearHttpAuthUsernamePassword |
| */ |
| @Nullable |
| public abstract String[] getHttpAuthUsernamePassword(String host, String realm); |
| |
| /** |
| * Gets whether there is any saved data for web forms. |
| * |
| * @return whether there is any saved data for web forms |
| * @see #clearFormData |
| */ |
| @Deprecated |
| public abstract boolean hasFormData(); |
| |
| /** |
| * Clears any saved data for web forms. |
| * |
| * @see #hasFormData |
| */ |
| @Deprecated |
| public abstract void clearFormData(); |
| } |