diff options
author | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-06 17:37:01 +0000 |
---|---|---|
committer | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-06 17:37:01 +0000 |
commit | 9de72dce47a208835335229ef359c8825f7280dc (patch) | |
tree | ed172770d9b942a402355ca73afc492a423e9e7b /android_webview | |
parent | dcbcd1523126ef6e0224c361e8523ad85277b8ee (diff) | |
download | chromium_src-9de72dce47a208835335229ef359c8825f7280dc.zip chromium_src-9de72dce47a208835335229ef359c8825f7280dc.tar.gz chromium_src-9de72dce47a208835335229ef359c8825f7280dc.tar.bz2 |
[Android] Fix AwSettingsTest AppCache test crashes.
The problem was due to usage of a second cache thread.
R=boliu@chromium.org
BUG=163383
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/11440036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171520 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
3 files changed, 36 insertions, 21 deletions
diff --git a/android_webview/browser/net/aw_url_request_context_getter.cc b/android_webview/browser/net/aw_url_request_context_getter.cc index 9b51826..45cd11e 100644 --- a/android_webview/browser/net/aw_url_request_context_getter.cc +++ b/android_webview/browser/net/aw_url_request_context_getter.cc @@ -14,6 +14,7 @@ #include "content/public/browser/resource_context.h" #include "content/public/common/content_client.h" #include "content/public/common/url_constants.h" +#include "net/http/http_cache.h" #include "net/proxy/proxy_service.h" #include "net/url_request/data_protocol_handler.h" #include "net/url_request/file_protocol_handler.h" @@ -92,13 +93,6 @@ void AwURLRequestContextGetter::Init() { builder.set_accept_charset( net::HttpUtil::GenerateAcceptCharsetHeader("ISO-8859-1")); - net::URLRequestContextBuilder::HttpCacheParams cache_params; - cache_params.type = net::URLRequestContextBuilder::HttpCacheParams::DISK; - cache_params.max_size = 10 * 1024 * 1024; // 10M - cache_params.path = - browser_context_->GetPath().Append(FILE_PATH_LITERAL("Cache")), - builder.EnableHttpCache(cache_params); - url_request_context_.reset(builder.Build()); job_factory_.reset(new AwURLRequestJobFactory); @@ -111,10 +105,38 @@ void AwURLRequestContextGetter::Init() { job_factory_->AddInterceptor(new AwRequestInterceptor()); url_request_context_->set_job_factory(job_factory_.get()); + // TODO(mnaganov): Fix URLRequestContextBuilder to use proper threads. + net::HttpNetworkSession::Params network_session_params; + PopulateNetworkSessionParams(&network_session_params); + net::HttpCache* main_cache = new net::HttpCache( + network_session_params, + new net::HttpCache::DefaultBackend( + net::DISK_CACHE, + browser_context_->GetPath().Append(FILE_PATH_LITERAL("Cache")), + 10 * 1024 * 1024, // 10M + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::CACHE))); + main_http_factory_.reset(main_cache); + url_request_context_->set_http_transaction_factory(main_cache); + OnNetworkStackInitialized(url_request_context_.get(), job_factory_.get()); } +void AwURLRequestContextGetter::PopulateNetworkSessionParams( + net::HttpNetworkSession::Params* params) { + net::URLRequestContext* context = url_request_context_.get(); + params->host_resolver = context->host_resolver(); + params->cert_verifier = context->cert_verifier(); + params->server_bound_cert_service = context->server_bound_cert_service(); + params->transport_security_state = context->transport_security_state(); + params->proxy_service = context->proxy_service(); + params->ssl_config_service = context->ssl_config_service(); + params->http_auth_handler_factory = context->http_auth_handler_factory(); + params->network_delegate = context->network_delegate(); + params->http_server_properties = context->http_server_properties(); + params->net_log = context->net_log(); +} + content::ResourceContext* AwURLRequestContextGetter::GetResourceContext() { DCHECK(url_request_context_); if (!resource_context_) diff --git a/android_webview/browser/net/aw_url_request_context_getter.h b/android_webview/browser/net/aw_url_request_context_getter.h index 888ac08..c5b9ecf 100644 --- a/android_webview/browser/net/aw_url_request_context_getter.h +++ b/android_webview/browser/net/aw_url_request_context_getter.h @@ -8,6 +8,7 @@ #include "content/public/browser/browser_thread_delegate.h" #include "base/memory/scoped_ptr.h" +#include "net/http/http_network_session.h" #include "net/url_request/url_request_context_getter.h" namespace content { @@ -15,6 +16,7 @@ class ResourceContext; } namespace net { +class HttpTransactionFactory; class ProxyConfigService; class URLRequestContext; class URLRequestJobFactory; @@ -46,11 +48,14 @@ class AwURLRequestContextGetter : public net::URLRequestContextGetter, private: virtual ~AwURLRequestContextGetter(); + void PopulateNetworkSessionParams(net::HttpNetworkSession::Params* params); + AwBrowserContext* browser_context_; // weak scoped_ptr<net::URLRequestContext> url_request_context_; scoped_ptr<net::ProxyConfigService> proxy_config_service_; scoped_ptr<content::ResourceContext> resource_context_; scoped_ptr<net::URLRequestJobFactory> job_factory_; + scoped_ptr<net::HttpTransactionFactory> main_http_factory_; DISALLOW_COPY_AND_ASSIGN(AwURLRequestContextGetter); }; diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java index e5e353e..fb9e4a2 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java @@ -16,7 +16,6 @@ import org.chromium.android_webview.AwContents; import org.chromium.android_webview.AwSettings; import org.chromium.android_webview.test.util.CommonResources; import org.chromium.android_webview.test.util.ImagePageGenerator; -import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.TestFileUtil; import org.chromium.base.test.util.UrlUtils; @@ -2221,9 +2220,6 @@ public class AwSettingsTest extends AndroidWebViewTestBase { createAwTestContainerViewOnMainSync(false, contentClient); final AwContents awContents = testContainer.getAwContents(); final ContentSettings settings = getContentSettingsOnUiThread(awContents); - // Not sure why, but I'm experiencing DCHECK failures at net/disk_cache/in_flight_io.cc:98 - // w/o this line. crbug.com/163383 - clearCacheOnUiThread(awContents, true); settings.setJavaScriptEnabled(true); // Note that the cache isn't actually enabled until the call to setAppCachePath. settings.setAppCacheEnabled(true); @@ -2253,14 +2249,8 @@ public class AwSettingsTest extends AndroidWebViewTestBase { } } - /* - * @SmallTest - * @Feature({"AndroidWebView", "Preferences", "AppCache"}) - * BUG=crbug.com/163383 - * If you run this test with a non-empty profile, it will crash, - * unless you delete the test's data directory. - */ - @DisabledTest + @SmallTest + @Feature({"AndroidWebView", "Preferences", "AppCache"}) public void testAppCacheNormal() throws Throwable { // We don't use the test helper here, because making sure that AppCache // is disabled takes a lot of time, so running through the usual drill @@ -2275,8 +2265,6 @@ public class AwSettingsTest extends AndroidWebViewTestBase { // AppCachePath setting is global, no need to set it for the second view. settings1.setAppCacheEnabled(true); - clearCacheOnUiThread(views.getContents0(), true); - TestWebServer webServer = null; try { webServer = new TestWebServer(false); |