diff options
-rw-r--r-- | core/java/android/webkit/ContentLoader.java | 3 | ||||
-rw-r--r-- | core/java/android/webkit/LoadListener.java | 14 | ||||
-rw-r--r-- | core/java/android/webkit/StreamLoader.java | 1 |
3 files changed, 10 insertions, 8 deletions
diff --git a/core/java/android/webkit/ContentLoader.java b/core/java/android/webkit/ContentLoader.java index f6d7f69..27cd6b5 100644 --- a/core/java/android/webkit/ContentLoader.java +++ b/core/java/android/webkit/ContentLoader.java @@ -105,8 +105,7 @@ class ContentLoader extends StreamLoader { if (mContentType != null) { headers.setContentType("text/html"); } - // override the cache-control header set by StreamLoader as content can - // change, we don't want WebKit to cache it + // content can change, we don't want WebKit to cache it headers.setCacheControl("no-store, no-cache"); } diff --git a/core/java/android/webkit/LoadListener.java b/core/java/android/webkit/LoadListener.java index 7fff014..d8c3ed2 100644 --- a/core/java/android/webkit/LoadListener.java +++ b/core/java/android/webkit/LoadListener.java @@ -99,6 +99,7 @@ class LoadListener extends Handler implements EventHandler { private boolean mAuthFailed; // indicates that the prev. auth failed private CacheLoader mCacheLoader; private CacheManager.CacheResult mCacheResult; + private boolean mFromCache = false; private HttpAuthHeader mAuthHeader; private int mErrorID = OK; private String mErrorDescription; @@ -409,11 +410,10 @@ class LoadListener extends Handler implements EventHandler { mStatusCode == HTTP_MOVED_PERMANENTLY || mStatusCode == HTTP_TEMPORARY_REDIRECT) && mNativeLoader != 0) { - // Content arriving from a StreamLoader (eg File, Cache or Data) - // will not be cached as they have the header: - // cache-control: no-store - mCacheResult = CacheManager.createCacheFile(mUrl, mStatusCode, - headers, mMimeType, false); + if (!mFromCache && URLUtil.isNetworkUrl(mUrl)) { + mCacheResult = CacheManager.createCacheFile(mUrl, mStatusCode, + headers, mMimeType, false); + } if (mCacheResult != null) { mCacheResult.encoding = mEncoding; } @@ -626,6 +626,7 @@ class LoadListener extends Handler implements EventHandler { * serviced by the Cache. */ /* package */ void setCacheLoader(CacheLoader c) { mCacheLoader = c; + mFromCache = true; } /** @@ -642,6 +643,8 @@ class LoadListener extends Handler implements EventHandler { // Go ahead and set the cache loader to null in case the result is // null. mCacheLoader = null; + // reset the flag + mFromCache = false; if (result != null) { // The contents of the cache may need to be revalidated so just @@ -662,6 +665,7 @@ class LoadListener extends Handler implements EventHandler { } // Load the cached file mCacheLoader.load(); + mFromCache = true; return true; } } diff --git a/core/java/android/webkit/StreamLoader.java b/core/java/android/webkit/StreamLoader.java index eab3350..623ff29 100644 --- a/core/java/android/webkit/StreamLoader.java +++ b/core/java/android/webkit/StreamLoader.java @@ -157,7 +157,6 @@ abstract class StreamLoader extends Handler { if (mContentLength > 0) { headers.setContentLength(mContentLength); } - headers.setCacheControl(NO_STORE); buildHeaders(headers); mHandler.headers(headers); } |