Merge "Track OkHttp changes"

This commit is contained in:
Treehugger Robot
2018-07-17 13:43:10 +00:00
committed by Gerrit Code Review

View File

@@ -16,9 +16,8 @@
package android.net.http; package android.net.http;
import com.android.okhttp.Cache; import com.android.okhttp.internalandroidapi.AndroidResponseCacheAdapter;
import com.android.okhttp.AndroidShimResponseCache; import com.android.okhttp.internalandroidapi.HasCacheHolder;
import com.android.okhttp.OkCacheContainer;
import java.io.Closeable; import java.io.Closeable;
import java.io.File; import java.io.File;
@@ -149,12 +148,12 @@ import java.util.Map;
* } catch (Exception httpResponseCacheNotAvailable) { * } catch (Exception httpResponseCacheNotAvailable) {
* }}</pre> * }}</pre>
*/ */
public final class HttpResponseCache extends ResponseCache implements Closeable, OkCacheContainer { public final class HttpResponseCache extends ResponseCache implements HasCacheHolder, Closeable {
private final AndroidShimResponseCache delegate; private final AndroidResponseCacheAdapter mDelegate;
private HttpResponseCache(AndroidShimResponseCache delegate) { private HttpResponseCache(AndroidResponseCacheAdapter delegate) {
this.delegate = delegate; mDelegate = delegate;
} }
/** /**
@@ -184,30 +183,33 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
ResponseCache installed = ResponseCache.getDefault(); ResponseCache installed = ResponseCache.getDefault();
if (installed instanceof HttpResponseCache) { if (installed instanceof HttpResponseCache) {
HttpResponseCache installedResponseCache = (HttpResponseCache) installed; HttpResponseCache installedResponseCache = (HttpResponseCache) installed;
CacheHolder cacheHolder = installedResponseCache.getCacheHolder();
// don't close and reopen if an equivalent cache is already installed // don't close and reopen if an equivalent cache is already installed
AndroidShimResponseCache trueResponseCache = installedResponseCache.delegate; if (cacheHolder.isEquivalent(directory, maxSize)) {
if (trueResponseCache.isEquivalent(directory, maxSize)) {
return installedResponseCache; return installedResponseCache;
} else { } else {
// The HttpResponseCache that owns this object is about to be replaced. // The HttpResponseCache that owns this object is about to be replaced.
trueResponseCache.close(); installedResponseCache.close();
} }
} }
AndroidShimResponseCache trueResponseCache = CacheHolder cacheHolder = CacheHolder.create(directory, maxSize);
AndroidShimResponseCache.create(directory, maxSize); AndroidResponseCacheAdapter androidResponseCacheAdapter =
HttpResponseCache newResponseCache = new HttpResponseCache(trueResponseCache); new AndroidResponseCacheAdapter(cacheHolder);
ResponseCache.setDefault(newResponseCache); HttpResponseCache responseCache = new HttpResponseCache(androidResponseCacheAdapter);
return newResponseCache; ResponseCache.setDefault(responseCache);
return responseCache;
} }
@Override public CacheResponse get(URI uri, String requestMethod, @Override
public CacheResponse get(URI uri, String requestMethod,
Map<String, List<String>> requestHeaders) throws IOException { Map<String, List<String>> requestHeaders) throws IOException {
return delegate.get(uri, requestMethod, requestHeaders); return mDelegate.get(uri, requestMethod, requestHeaders);
} }
@Override public CacheRequest put(URI uri, URLConnection urlConnection) throws IOException { @Override
return delegate.put(uri, urlConnection); public CacheRequest put(URI uri, URLConnection urlConnection) throws IOException {
return mDelegate.put(uri, urlConnection);
} }
/** /**
@@ -217,7 +219,7 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
*/ */
public long size() { public long size() {
try { try {
return delegate.size(); return mDelegate.getSize();
} catch (IOException e) { } catch (IOException e) {
// This can occur if the cache failed to lazily initialize. // This can occur if the cache failed to lazily initialize.
return -1; return -1;
@@ -229,7 +231,7 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
* its data. * its data.
*/ */
public long maxSize() { public long maxSize() {
return delegate.maxSize(); return mDelegate.getMaxSize();
} }
/** /**
@@ -239,7 +241,7 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
*/ */
public void flush() { public void flush() {
try { try {
delegate.flush(); mDelegate.flush();
} catch (IOException ignored) { } catch (IOException ignored) {
} }
} }
@@ -249,7 +251,7 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
* supply a response or validate a locally cached response. * supply a response or validate a locally cached response.
*/ */
public int getNetworkCount() { public int getNetworkCount() {
return delegate.getNetworkCount(); return mDelegate.getNetworkCount();
} }
/** /**
@@ -258,7 +260,7 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
* validated over the network. * validated over the network.
*/ */
public int getHitCount() { public int getHitCount() {
return delegate.getHitCount(); return mDelegate.getHitCount();
} }
/** /**
@@ -267,18 +269,19 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
* to handle a redirects and retries. * to handle a redirects and retries.
*/ */
public int getRequestCount() { public int getRequestCount() {
return delegate.getRequestCount(); return mDelegate.getRequestCount();
} }
/** /**
* Uninstalls the cache and releases any active resources. Stored contents * Uninstalls the cache and releases any active resources. Stored contents
* will remain on the filesystem. * will remain on the filesystem.
*/ */
@Override public void close() throws IOException { @Override
public void close() throws IOException {
if (ResponseCache.getDefault() == this) { if (ResponseCache.getDefault() == this) {
ResponseCache.setDefault(null); ResponseCache.setDefault(null);
} }
delegate.close(); mDelegate.close();
} }
/** /**
@@ -288,13 +291,12 @@ public final class HttpResponseCache extends ResponseCache implements Closeable,
if (ResponseCache.getDefault() == this) { if (ResponseCache.getDefault() == this) {
ResponseCache.setDefault(null); ResponseCache.setDefault(null);
} }
delegate.delete(); mDelegate.delete();
} }
/** @hide Needed for OkHttp integration. */ /** @hide Needed for OkHttp integration. */
@Override @Override
public Cache getCache() { public CacheHolder getCacheHolder() {
return delegate.getCache(); return mDelegate.getCacheHolder();
} }
} }