Loading core/java/android/net/http/HttpResponseCache.java +19 −1 Original line number Diff line number Diff line Loading @@ -22,8 +22,10 @@ import java.io.File; import java.io.IOException; import java.net.CacheRequest; import java.net.CacheResponse; import java.net.ExtendedResponseCache; import java.net.HttpURLConnection; import java.net.ResponseCache; import java.net.ResponseSource; import java.net.URI; import java.net.URLConnection; import java.util.List; Loading Loading @@ -149,7 +151,8 @@ import org.apache.http.impl.client.DefaultHttpClient; * } catch (Exception httpResponseCacheNotAvailable) { * }}</pre> */ public final class HttpResponseCache extends ResponseCache implements Closeable { public final class HttpResponseCache extends ResponseCache implements Closeable, ExtendedResponseCache { private final libcore.net.http.HttpResponseCache delegate; Loading Loading @@ -260,6 +263,21 @@ public final class HttpResponseCache extends ResponseCache implements Closeable 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) { delegate.update(conditionalCacheHit, connection); } /** * Uninstalls the cache and releases any active resources. Stored contents * will remain on the filesystem. Loading core/tests/coretests/src/android/net/http/HttpResponseCacheTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.net.http; import com.google.mockwebserver.MockResponse; import com.google.mockwebserver.MockWebServer; import java.io.File; import java.net.CacheRequest; import java.net.CacheResponse; Loading @@ -30,6 +32,7 @@ import junit.framework.TestCase; public final class HttpResponseCacheTest extends TestCase { private File cacheDir; private MockWebServer server = new MockWebServer(); @Override public void setUp() throws Exception { super.setUp(); Loading @@ -39,6 +42,7 @@ public final class HttpResponseCacheTest extends TestCase { @Override protected void tearDown() throws Exception { ResponseCache.setDefault(null); server.shutdown(); super.tearDown(); } Loading Loading @@ -100,4 +104,32 @@ public final class HttpResponseCacheTest extends TestCase { cache.delete(); assertNull(ResponseCache.getDefault()); } /** * Make sure that statistics tracking are wired all the way through the * wrapper class. http://code.google.com/p/android/issues/detail?id=25418 */ public void testStatisticsTracking() throws Exception { HttpResponseCache cache = HttpResponseCache.install(cacheDir, 10 * 1024 * 1024); server.enqueue(new MockResponse() .addHeader("Cache-Control: max-age=60") .setBody("A")); server.play(); URLConnection c1 = server.getUrl("/").openConnection(); assertEquals('A', c1.getInputStream().read()); assertEquals(1, cache.getRequestCount()); assertEquals(1, cache.getNetworkCount()); assertEquals(0, cache.getHitCount()); URLConnection c2 = server.getUrl("/").openConnection(); assertEquals('A', c2.getInputStream().read()); URLConnection c3 = server.getUrl("/").openConnection(); assertEquals('A', c3.getInputStream().read()); assertEquals(3, cache.getRequestCount()); assertEquals(1, cache.getNetworkCount()); assertEquals(2, cache.getHitCount()); } } Loading
core/java/android/net/http/HttpResponseCache.java +19 −1 Original line number Diff line number Diff line Loading @@ -22,8 +22,10 @@ import java.io.File; import java.io.IOException; import java.net.CacheRequest; import java.net.CacheResponse; import java.net.ExtendedResponseCache; import java.net.HttpURLConnection; import java.net.ResponseCache; import java.net.ResponseSource; import java.net.URI; import java.net.URLConnection; import java.util.List; Loading Loading @@ -149,7 +151,8 @@ import org.apache.http.impl.client.DefaultHttpClient; * } catch (Exception httpResponseCacheNotAvailable) { * }}</pre> */ public final class HttpResponseCache extends ResponseCache implements Closeable { public final class HttpResponseCache extends ResponseCache implements Closeable, ExtendedResponseCache { private final libcore.net.http.HttpResponseCache delegate; Loading Loading @@ -260,6 +263,21 @@ public final class HttpResponseCache extends ResponseCache implements Closeable 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) { delegate.update(conditionalCacheHit, connection); } /** * Uninstalls the cache and releases any active resources. Stored contents * will remain on the filesystem. Loading
core/tests/coretests/src/android/net/http/HttpResponseCacheTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.net.http; import com.google.mockwebserver.MockResponse; import com.google.mockwebserver.MockWebServer; import java.io.File; import java.net.CacheRequest; import java.net.CacheResponse; Loading @@ -30,6 +32,7 @@ import junit.framework.TestCase; public final class HttpResponseCacheTest extends TestCase { private File cacheDir; private MockWebServer server = new MockWebServer(); @Override public void setUp() throws Exception { super.setUp(); Loading @@ -39,6 +42,7 @@ public final class HttpResponseCacheTest extends TestCase { @Override protected void tearDown() throws Exception { ResponseCache.setDefault(null); server.shutdown(); super.tearDown(); } Loading Loading @@ -100,4 +104,32 @@ public final class HttpResponseCacheTest extends TestCase { cache.delete(); assertNull(ResponseCache.getDefault()); } /** * Make sure that statistics tracking are wired all the way through the * wrapper class. http://code.google.com/p/android/issues/detail?id=25418 */ public void testStatisticsTracking() throws Exception { HttpResponseCache cache = HttpResponseCache.install(cacheDir, 10 * 1024 * 1024); server.enqueue(new MockResponse() .addHeader("Cache-Control: max-age=60") .setBody("A")); server.play(); URLConnection c1 = server.getUrl("/").openConnection(); assertEquals('A', c1.getInputStream().read()); assertEquals(1, cache.getRequestCount()); assertEquals(1, cache.getNetworkCount()); assertEquals(0, cache.getHitCount()); URLConnection c2 = server.getUrl("/").openConnection(); assertEquals('A', c2.getInputStream().read()); URLConnection c3 = server.getUrl("/").openConnection(); assertEquals('A', c3.getInputStream().read()); assertEquals(3, cache.getRequestCount()); assertEquals(1, cache.getNetworkCount()); assertEquals(2, cache.getHitCount()); } }