167 lines
6.4 KiB
Java
167 lines
6.4 KiB
Java
![]() |
/*
|
||
|
* 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();
|
||
|
}
|