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