CacheManager.java revision 74fc73f62bd1ade8e94a6bba34bcd24d54400dd2
174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon/* 274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Copyright (C) 2006 The Android Open Source Project 374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Licensed under the Apache License, Version 2.0 (the "License"); 574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * you may not use this file except in compliance with the License. 674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * You may obtain a copy of the License at 774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * http://www.apache.org/licenses/LICENSE-2.0 974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 1074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Unless required by applicable law or agreed to in writing, software 1174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * distributed under the License is distributed on an "AS IS" BASIS, 1274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * See the License for the specific language governing permissions and 1474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * limitations under the License. 1574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 1674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 1774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonpackage android.webkit; 1874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 1974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport android.content.Context; 2074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport android.net.http.Headers; 2174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport android.util.Log; 2274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 2374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.File; 2474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.FileInputStream; 2574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.FileNotFoundException; 2674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.IOException; 2774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.InputStream; 2874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.io.OutputStream; 2974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonimport java.util.Map; 3074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 3174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 3274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon/** 3374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Manages the HTTP cache used by an application's {@link WebView} instances. 3474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated Access to the HTTP cache will be removed in a future release. 3574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @hide Since {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1} 3674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 3774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// The class CacheManager provides the persistent cache of content that is 3874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// received over the network. The component handles parsing of HTTP headers and 3974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// utilizes the relevant cache headers to determine if the content should be 4074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// stored and if so, how long it is valid for. Network requests are provided to 4174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// this component and if they can not be resolved by the cache, the HTTP headers 4274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// are attached, as appropriate, to the request for revalidation of content. The 4374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// class also manages the cache size. 4474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// 4574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon// CacheManager may only be used if your activity contains a WebView. 4674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon@Deprecated 4774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixonpublic final class CacheManager { 4874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 4974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Represents a resource stored in the HTTP cache. Instances of this class 5074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * can be obtained by calling 5174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * {@link CacheManager#getCacheFile CacheManager.getCacheFile(String, Map<String, String>))}. 5274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 5374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated Access to the HTTP cache will be removed in a future release. 5474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 5574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 5674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static class CacheResult { 5774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // these fields are saved to the database 5874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon int httpStatusCode; 5974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon long contentLength; 6074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon long expires; 6174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String expiresString; 6274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String localPath; 6374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String lastModified; 6474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String etag; 6574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String mimeType; 6674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String location; 6774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String encoding; 6874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String contentdisposition; 6974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon String crossDomain; 7074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 7174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // these fields are NOT saved to the database 7274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon InputStream inStream; 7374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon OutputStream outStream; 7474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon File outFile; 7574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 7674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 7774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the status code of this cache entry. 7874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 7974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the status code of this cache entry 8074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 8174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public int getHttpStatusCode() { 8274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return httpStatusCode; 8374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 8474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 8574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 8674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the content length of this cache entry. 8774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 8874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the content length of this cache entry 8974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 9074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public long getContentLength() { 9174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return contentLength; 9274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 9374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 9474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 9574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the path of the file used to store the content of this cache 9674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * entry, relative to the base directory of the cache. See 9774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * {@link CacheManager#getCacheFileBaseDir CacheManager.getCacheFileBaseDir()}. 9874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 9974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the path of the file used to store this cache entry 10074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 10174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getLocalPath() { 10274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return localPath; 10374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 10474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 10574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 10674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the expiry date of this cache entry, expressed in milliseconds 10774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * since midnight, January 1, 1970 UTC. 10874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 10974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the expiry date of this cache entry 11074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 11174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public long getExpires() { 11274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return expires; 11374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 11474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 11574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 11674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the expiry date of this cache entry, expressed as a string. 11774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 11874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the expiry date of this cache entry 11974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 12074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 12174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getExpiresString() { 12274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return expiresString; 12374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 12474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 12574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 12674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the date at which this cache entry was last modified, expressed 12774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * as a string. 12874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 12974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the date at which this cache entry was last modified 13074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 13174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getLastModified() { 13274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return lastModified; 13374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 13474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 13574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 13674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the entity tag of this cache entry. 13774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 13874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the entity tag of this cache entry 13974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 14074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getETag() { 14174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return etag; 14274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 14374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 14474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 14574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the MIME type of this cache entry. 14674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 14774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the MIME type of this cache entry 14874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 14974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getMimeType() { 15074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return mimeType; 15174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 15274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 15374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 15474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the value of the HTTP 'Location' header with which this cache 15574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * entry was received. 15674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 15774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the HTTP 'Location' header for this cache entry 15874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 15974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getLocation() { 16074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return location; 16174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 16274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 16374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 16474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the encoding of this cache entry. 16574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 16674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the encoding of this cache entry 16774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 16874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getEncoding() { 16974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return encoding; 17074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 17174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 17274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 17374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the value of the HTTP 'Content-Disposition' header with which 17474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * this cache entry was received. 17574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 17674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the HTTP 'Content-Disposition' header for this cache entry 17774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 17874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 17974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public String getContentDisposition() { 18074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return contentdisposition; 18174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 18274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 18374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 18474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the input stream to the content of this cache entry, to allow 18574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * content to be read. See 18674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * {@link CacheManager#getCacheFile CacheManager.getCacheFile(String, Map<String, String>)}. 18774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 18874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return an input stream to the content of this cache entry 18974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 19074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public InputStream getInputStream() { 19174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return inStream; 19274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 19374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 19474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 19574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets an output stream to the content of this cache entry, to allow 19674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * content to be written. See 19774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * {@link CacheManager#saveCacheFile CacheManager.saveCacheFile(String, CacheResult)}. 19874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 19974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return an output stream to the content of this cache entry 20074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 20174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // Note that this is always null for objects returned by getCacheFile()! 20274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public OutputStream getOutputStream() { 20374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return outStream; 20474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 20574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 20674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 20774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 20874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Sets an input stream to the content of this cache entry. 20974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 21074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @param stream an input stream to the content of this cache entry 21174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 21274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public void setInputStream(InputStream stream) { 21374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon this.inStream = stream; 21474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 21574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 21674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 21774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Sets the encoding of this cache entry. 21874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 21974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @param encoding the encoding of this cache entry 22074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 22174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public void setEncoding(String encoding) { 22274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon this.encoding = encoding; 22374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 22474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 22574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 22674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @hide 22774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 22874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public void setContentLength(long contentLength) { 22974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon this.contentLength = contentLength; 23074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 23174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 23274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 23374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 23474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the base directory in which the files used to store the contents of 23574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * cache entries are placed. See 23674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * {@link CacheManager.CacheResult#getLocalPath CacheManager.CacheResult.getLocalPath()}. 23774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 23874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the base directory of the cache 23974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated This method no longer has any effect and always returns null. 24074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 24174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 24274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static File getCacheFileBaseDir() { 24374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return null; 24474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 24574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 24674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 24774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets whether the HTTP cache is disabled. 24874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 24974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return true if the HTTP cache is disabled 25074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated This method no longer has any effect and always returns false. 25174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 25274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 25374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static boolean cacheDisabled() { 25474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return false; 25574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 25674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 25774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 25874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Starts a cache transaction. Returns true if this is the only running 25974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * transaction. Otherwise, this transaction is nested inside currently 26074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * running transactions and false is returned. 26174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 26274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return true if this is the only running transaction 26374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated This method no longer has any effect and always returns false. 26474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 26574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 26674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static boolean startCacheTransaction() { 26774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return false; 26874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 26974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 27074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 27174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Ends the innermost cache transaction and returns whether this was the 27274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * only running transaction. 27374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 27474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return true if this was the only running transaction 27574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated This method no longer has any effect and always returns false. 27674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 27774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 27874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static boolean endCacheTransaction() { 27974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return false; 28074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 28174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 28274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 28374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Gets the cache entry for the specified URL, or null if none is found. 28474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * If a non-null value is provided for the HTTP headers map, and the cache 28574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * entry needs validation, appropriate headers will be added to the map. 28674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * The input stream of the CacheEntry object should be closed by the caller 28774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * when access to the underlying file is no longer required. 28874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 28974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @param url the URL for which a cache entry is requested 29074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @param headers a map from HTTP header name to value, to be populated 29174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * for the returned cache entry 29274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @return the cache entry for the specified URL 29374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated This method no longer has any effect and always returns null. 29474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 29574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 29674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static CacheResult getCacheFile(String url, 29774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon Map<String, String> headers) { 29874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return null; 29974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 30074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 30174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon /** 30274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * Adds a cache entry to the HTTP cache for the specicifed URL. Also closes 30374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * the cache entry's output stream. 30474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * 30574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @param url the URL for which the cache entry should be added 30674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @param cacheResult the cache entry to add 30774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon * @deprecated Access to the HTTP cache will be removed in a future release. 30874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon */ 30974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon @Deprecated 31074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon public static void saveCacheFile(String url, CacheResult cacheResult) { 31174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon saveCacheFile(url, 0, cacheResult); 31274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 31374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 31474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon static void saveCacheFile(String url, long postIdentifier, 31574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon CacheResult cacheRet) { 31674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon try { 31774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon cacheRet.outStream.close(); 31874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } catch (IOException e) { 31974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon return; 32074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 32174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon 32274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // This method is exposed in the public API but the API provides no 32374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // way to obtain a new CacheResult object with a non-null output 32474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // stream ... 32574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // - CacheResult objects returned by getCacheFile() have a null 32674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // output stream. 32774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // - new CacheResult objects have a null output stream and no 32874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // setter is provided. 32974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // Since this method throws a null pointer exception in this case, 33074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // it is effectively useless from the point of view of the public 33174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // API. 33274fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // 33374fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // With the Chromium HTTP stack we continue to throw the same 33474fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // exception for 'backwards compatibility' with the Android HTTP 33574fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // stack. 33674fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // 33774fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // This method is not used from within this package, and for public API 33874fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon // use, we should already have thrown an exception above. 33974fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon assert false; 34074fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon } 34174fc73f62bd1ade8e94a6bba34bcd24d54400dd2Jonathan Dixon} 342