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