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
47924ac51ea6e67ee2ad5e9bbf901919ec1c6bcd50Ben Murdoch     * @see #clearUsernamePassworda
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    /**
7546ce1db6ff3290b82b12f11715fbe82734a44322Steve Block     * Clears any saved credentials for HTTP authentication.
7646ce1db6ff3290b82b12f11715fbe82734a44322Steve Block     *
777c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon     * @see WebView#getHttpAuthUsernamePassword
787c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon     * @see WebView#setHttpAuthUsernamePassword
797c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon     * @see #hasHttpAuthUsernamePassword
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
81451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla    public abstract void clearHttpAuthUsernamePassword();
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
84219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block     * Gets whether there is any saved data for web forms.
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
86219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block     * @return whether there is any saved data for web forms
877c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon     * @see #clearFormData
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
89451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla    public abstract boolean hasFormData();
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
92219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block     * Clears any saved data for web forms.
93219dfa4d392851c1ffd7147cb78d4236658a79d8Steve Block     *
947c28219cc959c29792b85372dac587b2b7b49214Jonathan Dixon     * @see #hasFormData
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
96451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla    public abstract void clearFormData();
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
98