Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6db10546 authored by Narayan Kamath's avatar Narayan Kamath Committed by Android Git Automerger
Browse files

am 7d1fd557: am 372d21ad: am 6706ca96: Merge "Update HttpResponseCache to use the new cache API."

* commit '7d1fd557':
  Update HttpResponseCache to use the new cache API.
parents 2ce9bae8 7d1fd557
Loading
Loading
Loading
Loading
+30 −39
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@
package android.net.http;

import android.content.Context;
import com.android.okhttp.OkResponseCache;
import com.android.okhttp.ResponseSource;
import com.android.okhttp.internal.DiskLruCache;
import com.android.okhttp.internal.http.OkResponseCache;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
@@ -151,13 +151,12 @@ import org.apache.http.impl.client.DefaultHttpClient;
 *       } catch (Exception httpResponseCacheNotAvailable) {
 *       }}</pre>
 */
public final class HttpResponseCache extends ResponseCache
        implements Closeable, OkResponseCache {
public final class HttpResponseCache extends ResponseCache implements Closeable {

    private final com.android.okhttp.internal.http.HttpResponseCache delegate;
    private final com.android.okhttp.HttpResponseCache delegate;

    private HttpResponseCache(File directory, long maxSize) throws IOException {
        this.delegate = new com.android.okhttp.internal.http.HttpResponseCache(directory, maxSize);
    private HttpResponseCache(com.android.okhttp.HttpResponseCache delegate) {
        this.delegate = delegate;
    }

    /**
@@ -166,7 +165,12 @@ public final class HttpResponseCache extends ResponseCache
     */
    public static HttpResponseCache getInstalled() {
        ResponseCache installed = ResponseCache.getDefault();
        return installed instanceof HttpResponseCache ? (HttpResponseCache) installed : null;
        if (installed instanceof com.android.okhttp.HttpResponseCache) {
            return new HttpResponseCache(
                    (com.android.okhttp.HttpResponseCache) installed);
        }

        return null;
    }

    /**
@@ -181,22 +185,25 @@ public final class HttpResponseCache extends ResponseCache
     *     warning.
     */
    public static HttpResponseCache install(File directory, long maxSize) throws IOException {
        HttpResponseCache installed = getInstalled();
        if (installed != null) {
        ResponseCache installed = ResponseCache.getDefault();
        if (installed instanceof com.android.okhttp.HttpResponseCache) {
            com.android.okhttp.HttpResponseCache installedCache =
                    (com.android.okhttp.HttpResponseCache) installed;
            // don't close and reopen if an equivalent cache is already installed
            DiskLruCache installedCache = installed.delegate.getCache();
            if (installedCache.getDirectory().equals(directory)
                    && installedCache.maxSize() == maxSize
                    && installedCache.getMaxSize() == maxSize
                    && !installedCache.isClosed()) {
                return installed;
                return new HttpResponseCache(installedCache);
            } else {
                IoUtils.closeQuietly(installed);
                // The HttpResponseCache that owns this object is about to be replaced.
                installedCache.close();
            }
        }

        HttpResponseCache result = new HttpResponseCache(directory, maxSize);
        ResponseCache.setDefault(result);
        return result;
        com.android.okhttp.HttpResponseCache responseCache =
                new com.android.okhttp.HttpResponseCache(directory, maxSize);
        ResponseCache.setDefault(responseCache);
        return new HttpResponseCache(responseCache);
    }

    @Override public CacheResponse get(URI uri, String requestMethod,
@@ -214,7 +221,7 @@ public final class HttpResponseCache extends ResponseCache
     * deletion is pending.
     */
    public long size() {
        return delegate.getCache().size();
        return delegate.getSize();
    }

    /**
@@ -222,7 +229,7 @@ public final class HttpResponseCache extends ResponseCache
     * its data.
     */
    public long maxSize() {
        return delegate.getCache().maxSize();
        return delegate.getMaxSize();
    }

    /**
@@ -232,7 +239,7 @@ public final class HttpResponseCache extends ResponseCache
     */
    public void flush() {
        try {
            delegate.getCache().flush();
            delegate.flush();
        } catch (IOException ignored) {
        }
    }
@@ -263,40 +270,24 @@ public final class HttpResponseCache extends ResponseCache
        return delegate.getRequestCount();
    }

    /** @hide */
    @Override public void trackResponse(ResponseSource source) {
        delegate.trackResponse(source);
    }

    /** @hide */
    @Override public void trackConditionalCacheHit() {
        delegate.trackConditionalCacheHit();
    }

    /** @hide */
    @Override public void update(CacheResponse conditionalCacheHit, HttpURLConnection connection)
            throws IOException {
        delegate.update(conditionalCacheHit, connection);
    }

    /**
     * Uninstalls the cache and releases any active resources. Stored contents
     * will remain on the filesystem.
     */
    @Override public void close() throws IOException {
        if (ResponseCache.getDefault() == this) {
        if (ResponseCache.getDefault() == this.delegate) {
            ResponseCache.setDefault(null);
        }
        delegate.getCache().close();
        delegate.close();
    }

    /**
     * Uninstalls the cache and deletes all of its stored contents.
     */
    public void delete() throws IOException {
        if (ResponseCache.getDefault() == this) {
        if (ResponseCache.getDefault() == this.delegate) {
            ResponseCache.setDefault(null);
        }
        delegate.getCache().delete();
        delegate.delete();
    }
}