diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-24 08:45:06 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-24 08:45:06 -0700 |
commit | 7fdab7f9674aadf90c3be1f06d7d34b60151c658 (patch) | |
tree | 4654ea75c695879eefd5836a7df1b53184a5404e | |
parent | 8a2000df6d32f4e5df3073753055800a9363a3a5 (diff) | |
parent | c3fa098ff60c13ec9d9f61317e766c8f4529ecd3 (diff) | |
download | frameworks_base-7fdab7f9674aadf90c3be1f06d7d34b60151c658.zip frameworks_base-7fdab7f9674aadf90c3be1f06d7d34b60151c658.tar.gz frameworks_base-7fdab7f9674aadf90c3be1f06d7d34b60151c658.tar.bz2 |
Merge change 22377 into eclair
* changes:
The new webkit won't keep RAM cache if http header has "no-store". So remove it from StreamLoader. And fix the code where we only want to cache network result.
-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); } |