summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-08-24 08:45:06 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-08-24 08:45:06 -0700
commit7fdab7f9674aadf90c3be1f06d7d34b60151c658 (patch)
tree4654ea75c695879eefd5836a7df1b53184a5404e
parent8a2000df6d32f4e5df3073753055800a9363a3a5 (diff)
parentc3fa098ff60c13ec9d9f61317e766c8f4529ecd3 (diff)
downloadframeworks_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.java3
-rw-r--r--core/java/android/webkit/LoadListener.java14
-rw-r--r--core/java/android/webkit/StreamLoader.java1
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);
}