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