19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.webkit; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2199c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch/** 2299c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * This class allows developers to determine whether any WebView used in the 2399c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * application has stored any of the following types of browsing data and 2499c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * to clear any such stored data for all WebViews in the application. 2599c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * <ul> 2632fe410a5d750096dfb902fda384e58e513f53e4Steve Block * <li>Username/password pairs for web forms</li> 2799c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * <li>HTTP authentication username/password pairs</li> 2899c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * <li>Data entered into text fields (e.g. for autocomplete suggestions)</li> 2999c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch * </ul> 3099c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch */ 31451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Sollapublic abstract class WebViewDatabase { 32f4912580e6adc90ab37b07b8108c7334f359e317Kristian Monsen /** 33f4912580e6adc90ab37b07b8108c7334f359e317Kristian Monsen * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 34f4912580e6adc90ab37b07b8108c7334f359e317Kristian Monsen */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected static final String LOGTAG = "webviewdatabase"; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379f9d34552f53c534141584a5ad4a8a49ad7939dcJohn Reck public static WebViewDatabase getInstance(Context context) { 3899c12e8d5f12f239c28644a837937810299e5e3fBen Murdoch return WebViewFactory.getProvider().getWebViewDatabase(context); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4232fe410a5d750096dfb902fda384e58e513f53e4Steve Block * Gets whether there are any saved username/password pairs for web forms. 4332fe410a5d750096dfb902fda384e58e513f53e4Steve Block * Note that these are unrelated to HTTP authentication credentials. 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4532fe410a5d750096dfb902fda384e58e513f53e4Steve Block * @return true if there are any saved username/password pairs 4632fe410a5d750096dfb902fda384e58e513f53e4Steve Block * @see WebView#savePassword 4768d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * @see #clearUsernamePassword 48924ac51ea6e67ee2ad5e9bbf901919ec1c6bcd50Ben Murdoch * @deprecated Saving passwords in WebView will not be supported in future versions. 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 50924ac51ea6e67ee2ad5e9bbf901919ec1c6bcd50Ben Murdoch @Deprecated 51451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract boolean hasUsernamePassword(); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5432fe410a5d750096dfb902fda384e58e513f53e4Steve Block * Clears any saved username/password pairs for web forms. 5532fe410a5d750096dfb902fda384e58e513f53e4Steve Block * Note that these are unrelated to HTTP authentication credentials. 5632fe410a5d750096dfb902fda384e58e513f53e4Steve Block * 5732fe410a5d750096dfb902fda384e58e513f53e4Steve Block * @see WebView#savePassword 587c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see #hasUsernamePassword 59924ac51ea6e67ee2ad5e9bbf901919ec1c6bcd50Ben Murdoch * @deprecated Saving passwords in WebView will not be supported in future versions. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 61924ac51ea6e67ee2ad5e9bbf901919ec1c6bcd50Ben Murdoch @Deprecated 62451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void clearUsernamePassword(); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6546ce1db6ff3290b82b12f11715fbe82734a44322Steve Block * Gets whether there are any saved credentials for HTTP authentication. 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6746ce1db6ff3290b82b12f11715fbe82734a44322Steve Block * @return whether there are any saved credentials 687c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see WebView#getHttpAuthUsernamePassword 697c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see WebView#setHttpAuthUsernamePassword 707c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see #clearHttpAuthUsernamePassword 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 72451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract boolean hasHttpAuthUsernamePassword(); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7568d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * Clears any saved credentials for HTTP authentication. This method only clears the username 7668d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * and password stored in WebViewDatabase instance. The username and password are not read from 7768d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * the {@link WebViewDatabase} during {@link WebViewClient#onReceivedHttpAuthRequest}. It is up 7868d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * to the app to do this or not. 7968d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * <p> 8068d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * The username and password used for http authentication might be cached in the network stack 8168d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * itself, and are not cleared when this method is called. WebView does not provide a special 8268d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * mechanism to clear HTTP authentication for implementing client logout. The client logout 8368d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * mechanism should be implemented by the Web site designer (such as server sending a HTTP 401 8468d2cc180f6b39f7c92045c998d02cd7d6bfa7e5Hui Shu * for invalidating credentials). 8546ce1db6ff3290b82b12f11715fbe82734a44322Steve Block * 867c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see WebView#getHttpAuthUsernamePassword 877c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see WebView#setHttpAuthUsernamePassword 887c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see #hasHttpAuthUsernamePassword 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 90451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void clearHttpAuthUsernamePassword(); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 93219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block * Gets whether there is any saved data for web forms. 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 95219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block * @return whether there is any saved data for web forms 967c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see #clearFormData 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 98451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract boolean hasFormData(); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 101219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block * Clears any saved data for web forms. 102219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block * 1037c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon * @see #hasFormData 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 105451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void clearFormData(); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 107