diff options
| author | Andrei Popescu <andreip@google.com> | 2010-02-02 10:21:51 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-02-02 10:21:51 -0800 |
| commit | 3565456ca7a48718500fcc8db3ff4c19abfa8cf5 (patch) | |
| tree | a4fab0ee894e177dc054f0a7cb87b6aaef97285d /core/java/android | |
| parent | c209ccf4600fc87ee4296c6f32df0cfaf4fbf4ca (diff) | |
| parent | a1ba11bd78f9540e58516dd742fe4cc8726e262f (diff) | |
Merge "Make sure application cache manifest files are not cached."
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/webkit/CacheManager.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/core/java/android/webkit/CacheManager.java b/core/java/android/webkit/CacheManager.java index 22dca3a85210..213eaa52537f 100644 --- a/core/java/android/webkit/CacheManager.java +++ b/core/java/android/webkit/CacheManager.java @@ -52,6 +52,7 @@ public final class CacheManager { private static final String NO_STORE = "no-store"; private static final String NO_CACHE = "no-cache"; private static final String MAX_AGE = "max-age"; + private static final String MANIFEST_MIME = "text/cache-manifest"; private static long CACHE_THRESHOLD = 6 * 1024 * 1024; private static long CACHE_TRIM_AMOUNT = 2 * 1024 * 1024; @@ -658,6 +659,15 @@ public final class CacheManager { // if the contentLength is already larger than CACHE_MAX_SIZE, skip it if (headers.getContentLength() > CACHE_MAX_SIZE) return null; + // The HTML 5 spec, section 6.9.4, step 7.3 of the application cache + // process states that HTTP caching rules are ignored for the + // purposes of the application cache download process. + // At this point we can't tell that if a file is part of this process, + // except for the manifest, which has its own mimeType. + // TODO: work out a way to distinguish all responses that are part of + // the application download process and skip them. + if (MANIFEST_MIME.equals(mimeType)) return null; + // TODO: if authenticated or secure, return null CacheResult ret = new CacheResult(); ret.httpStatusCode = statusCode; |
