summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authormnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 17:37:01 +0000
committermnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 17:37:01 +0000
commit9de72dce47a208835335229ef359c8825f7280dc (patch)
treeed172770d9b942a402355ca73afc492a423e9e7b /android_webview
parentdcbcd1523126ef6e0224c361e8523ad85277b8ee (diff)
downloadchromium_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')
-rw-r--r--android_webview/browser/net/aw_url_request_context_getter.cc36
-rw-r--r--android_webview/browser/net/aw_url_request_context_getter.h5
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java16
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);