19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 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 1936acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scottimport android.content.ContentResolver; 2036acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scottimport android.graphics.Bitmap; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Functions for manipulating the icon database used by WebView. 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * These functions require that a WebView be constructed before being invoked 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and WebView.getIconDatabase() will return a WebIconDatabase object. This 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WebIconDatabase object is a single instance and all methods operate on that 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * single object. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 29939e5040b51539be561db1d18dec18196f201f5cJonathan Dixonpublic class WebIconDatabase { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface for receiving icons from the database. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface IconListener { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Called when the icon has been retrieved from the database and the 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * result is non-null. 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The url passed in the request. 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param icon The favicon for the given url. 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void onReceivedIcon(String url, Bitmap icon); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Open a the icon database and store the icons in the given path. 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param path The directory path where the icon database will be stored. 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void open(String path) { 48d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Close the shared instance of the icon database. 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void close() { 55d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Removes all the icons in the database. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void removeAllIcons() { 62d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Request the Bitmap representing the icon for the given page 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * url. If the icon exists, the listener will be called with the result. 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The page's url. 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener An implementation on IconListener to receive the result. 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void requestIconForPageUrl(String url, IconListener listener) { 72d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7536acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott /** {@hide} 7636acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott */ 7736acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott public void bulkRequestIconForPageUrl(ContentResolver cr, String where, 7836acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott IconListener listener) { 79d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 8036acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott } 8136acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Retain the icon for the given page url. 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The page's url. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void retainIconForPageUrl(String url) { 87d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Release the icon for the given page url. 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The page's url. 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void releaseIconForPageUrl(String url) { 95d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon throw new MustOverrideException(); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get the global instance of WebIconDatabase. 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return A single instance of WebIconDatabase. It will be the same 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instance for the current process each time this method is 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * called. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static WebIconDatabase getInstance() { 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // XXX: Must be created in the UI thread. 106d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon return WebViewFactory.getProvider().getWebIconDatabase(); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 110d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon * @hide Only for use by WebViewProvider implementations 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 112d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon protected WebIconDatabase() {} 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 114