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 19451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Sollaimport android.annotation.SystemApi; 2036acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scottimport android.content.ContentResolver; 2136acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scottimport android.graphics.Bitmap; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Functions for manipulating the icon database used by WebView. 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * These functions require that a WebView be constructed before being invoked 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and WebView.getIconDatabase() will return a WebIconDatabase object. This 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WebIconDatabase object is a single instance and all methods operate on that 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * single object. 2998fac170b14e30104ef3fcff03cf9512e59d1aafJonathan Dixon * The main use-case for this class is calling {@link #open} 30835b1fcc3193e0860ec33cca1c4cdff31f409473Jonathan Dixon * to enable favicon functionality on all WebView instances in this process. 31835b1fcc3193e0860ec33cca1c4cdff31f409473Jonathan Dixon * 32835b1fcc3193e0860ec33cca1c4cdff31f409473Jonathan Dixon * @deprecated This class is only required when running on devices 33835b1fcc3193e0860ec33cca1c4cdff31f409473Jonathan Dixon * up to {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2} 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 35835b1fcc3193e0860ec33cca1c4cdff31f409473Jonathan Dixon@Deprecated 36451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Sollapublic abstract class WebIconDatabase { 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interface for receiving icons from the database. 3998fac170b14e30104ef3fcff03cf9512e59d1aafJonathan Dixon * @deprecated This interface is obsolete. 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 41835b1fcc3193e0860ec33cca1c4cdff31f409473Jonathan Dixon @Deprecated 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public interface IconListener { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Called when the icon has been retrieved from the database and the 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * result is non-null. 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The url passed in the request. 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param icon The favicon for the given url. 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void onReceivedIcon(String url, Bitmap icon); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Open a the icon database and store the icons in the given path. 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param path The directory path where the icon database will be stored. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 56451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void open(String path); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Close the shared instance of the icon database. 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 61451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void close(); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Removes all the icons in the database. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 66451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void removeAllIcons(); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Request the Bitmap representing the icon for the given page 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * url. If the icon exists, the listener will be called with the result. 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The page's url. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param listener An implementation on IconListener to receive the result. 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 74451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void requestIconForPageUrl(String url, IconListener listener); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7636acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott /** {@hide} 7736acfbc2b8df6e62f2d583933eca3a49265279a6Patrick Scott */ 78451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla @SystemApi 79451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void bulkRequestIconForPageUrl(ContentResolver cr, String where, 80451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla IconListener listener); 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 */ 86451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void retainIconForPageUrl(String url); 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Release the icon for the given page url. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param url The page's url. 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 92451e338c51e8c45efc0d21536dfae6f78f6d5e06Ignacio Solla public abstract void releaseIconForPageUrl(String url); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get the global instance of WebIconDatabase. 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return A single instance of WebIconDatabase. It will be the same 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * instance for the current process each time this method is 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * called. 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static WebIconDatabase getInstance() { 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // XXX: Must be created in the UI thread. 102d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon return WebViewFactory.getProvider().getWebIconDatabase(); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 105