diff options
author | Shimeng (Simon) Wang <swang@google.com> | 2010-11-11 17:22:57 -0800 |
---|---|---|
committer | Shimeng (Simon) Wang <swang@google.com> | 2010-11-12 10:28:33 -0800 |
commit | 833804653e1cc85cc95b67838a544b676e7b5f3b (patch) | |
tree | d87f592c24ad0760481f0ae2f1ec9ac99510935e /WebKit | |
parent | 62e1f86fe500eeb622fe50cdb5cc0e09e18069d1 (diff) | |
download | external_webkit-833804653e1cc85cc95b67838a544b676e7b5f3b.zip external_webkit-833804653e1cc85cc95b67838a544b676e7b5f3b.tar.gz external_webkit-833804653e1cc85cc95b67838a544b676e7b5f3b.tar.bz2 |
Fix mobile google.com flickering issue.
Implementing request cache policy in chrome http integration.
issue:3008478
Change-Id: I3d7c32912e72e7639885056fb70f9f627d075c4e
Diffstat (limited to 'WebKit')
4 files changed, 27 insertions, 2 deletions
diff --git a/WebKit/android/WebCoreSupport/ChromiumIncludes.h b/WebKit/android/WebCoreSupport/ChromiumIncludes.h index 377aa22..a79faec 100644 --- a/WebKit/android/WebCoreSupport/ChromiumIncludes.h +++ b/WebKit/android/WebCoreSupport/ChromiumIncludes.h @@ -61,6 +61,7 @@ #include <net/base/data_url.h> #include <net/base/host_resolver.h> #include <net/base/io_buffer.h> +#include <net/base/load_flags.h> #include <net/base/net_errors.h> #include <net/base/mime_util.h> #include <net/base/ssl_config_service.h> diff --git a/WebKit/android/WebCoreSupport/WebRequest.cpp b/WebKit/android/WebCoreSupport/WebRequest.cpp index e939be4..758ff31 100644 --- a/WebKit/android/WebCoreSupport/WebRequest.cpp +++ b/WebKit/android/WebCoreSupport/WebRequest.cpp @@ -74,6 +74,7 @@ WebRequest::WebRequest(WebUrlLoaderClient* loader, const WebResourceRequest& web m_request->SetExtraRequestHeaders(webResourceRequest.requestHeaders()); m_request->set_referrer(webResourceRequest.referrer()); m_request->set_method(webResourceRequest.method()); + m_request->set_load_flags(webResourceRequest.loadFlags()); } // This is a special URL for Android. Query the Java InputStream diff --git a/WebKit/android/WebCoreSupport/WebResourceRequest.cpp b/WebKit/android/WebCoreSupport/WebResourceRequest.cpp index e8fb520..c3ec562 100644 --- a/WebKit/android/WebCoreSupport/WebResourceRequest.cpp +++ b/WebKit/android/WebCoreSupport/WebResourceRequest.cpp @@ -30,13 +30,15 @@ #include <wtf/text/CString.h> +using namespace WebCore; + namespace android { WebResourceRequest::WebResourceRequest(const WebCore::ResourceRequest& resourceRequest) { // Set the request headers - const WebCore::HTTPHeaderMap& map = resourceRequest.httpHeaderFields(); - for (WebCore::HTTPHeaderMap::const_iterator it = map.begin(); it != map.end(); ++it) { + const HTTPHeaderMap& map = resourceRequest.httpHeaderFields(); + for (HTTPHeaderMap::const_iterator it = map.begin(); it != map.end(); ++it) { const std::string& nameUtf8 = it->first.string().utf8().data(); // Skip over referrer headers found in the header map because we already @@ -66,6 +68,21 @@ WebResourceRequest::WebResourceRequest(const WebCore::ResourceRequest& resourceR m_userAgent = resourceRequest.httpUserAgent().utf8().data(); m_url = resourceRequest.url().string().utf8().data(); + + m_loadFlags = net::LOAD_NORMAL; + switch (resourceRequest.cachePolicy()) { + case ReloadIgnoringCacheData: + m_loadFlags |= net::LOAD_VALIDATE_CACHE; + break; + case ReturnCacheDataElseLoad: + m_loadFlags |= net::LOAD_PREFERRING_CACHE; + break; + case ReturnCacheDataDontLoad: + m_loadFlags |= net::LOAD_ONLY_FROM_CACHE; + break; + case UseProtocolCachePolicy: + break; + } } } // namespace android diff --git a/WebKit/android/WebCoreSupport/WebResourceRequest.h b/WebKit/android/WebCoreSupport/WebResourceRequest.h index d0c7f90..38f37b5 100644 --- a/WebKit/android/WebCoreSupport/WebResourceRequest.h +++ b/WebKit/android/WebCoreSupport/WebResourceRequest.h @@ -66,12 +66,18 @@ public: return m_url; } + int loadFlags() const + { + return m_loadFlags; + } + private: std::string m_method; std::string m_referrer; std::string m_userAgent; net::HttpRequestHeaders m_requestHeaders; std::string m_url; + int m_loadFlags; }; } // namespace android |