diff options
author | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-26 02:33:46 +0000 |
---|---|---|
committer | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-26 02:33:46 +0000 |
commit | 861fcd5d715f0590e75eddfb1bacb0ac356c8026 (patch) | |
tree | d16ca24619a70210141952fe0c50859418b5ef45 /net/http | |
parent | 9fa24879b1b211336e6da511a8931f62ad6845d7 (diff) | |
download | chromium_src-861fcd5d715f0590e75eddfb1bacb0ac356c8026.zip chromium_src-861fcd5d715f0590e75eddfb1bacb0ac356c8026.tar.gz chromium_src-861fcd5d715f0590e75eddfb1bacb0ac356c8026.tar.bz2 |
Add the ability to not send cookies or send user name/password.
Added unit tests for the above functionality plus the do not save cookies functionality.
BUG=http://crbug.com/10961
TEST=Added unit tests for this. Also, this isn't yet called from the rest of the code.
Review URL: http://codereview.chromium.org/173206
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http')
-rw-r--r-- | net/http/http_network_transaction.cc | 14 | ||||
-rw-r--r-- | net/http/http_network_transaction_unittest.cc | 46 |
2 files changed, 54 insertions, 6 deletions
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc index 7f5942e..4af1fa3 100644 --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc @@ -1683,7 +1683,8 @@ bool HttpNetworkTransaction::ShouldApplyProxyAuth() const { } bool HttpNetworkTransaction::ShouldApplyServerAuth() const { - return !establishing_tunnel_; + return !establishing_tunnel_ && + !(request_->load_flags & LOAD_DO_NOT_SEND_AUTH_DATA); } std::string HttpNetworkTransaction::BuildAuthorizationHeader( @@ -1886,10 +1887,13 @@ int HttpNetworkTransaction::HandleAuthChallenge() { auth_identity_[target].invalid = true; - // Find the best authentication challenge that we support. - HttpAuth::ChooseBestChallenge(response_.headers.get(), - target, - &auth_handler_[target]); + if (target != HttpAuth::AUTH_SERVER || + !(request_->load_flags & LOAD_DO_NOT_SEND_AUTH_DATA)) { + // Find the best authentication challenge that we support. + HttpAuth::ChooseBestChallenge(response_.headers.get(), + target, + &auth_handler_[target]); + } if (!auth_handler_[target]) { if (establishing_tunnel_) { diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc index 9993b1d..d63546d 100644 --- a/net/http/http_network_transaction_unittest.cc +++ b/net/http/http_network_transaction_unittest.cc @@ -729,6 +729,48 @@ TEST_F(HttpNetworkTransactionTest, BasicAuth) { EXPECT_EQ(100, response->headers->GetContentLength()); } +TEST_F(HttpNetworkTransactionTest, DoNotSendAuth) { + SessionDependencies session_deps; + scoped_ptr<HttpTransaction> trans( + new HttpNetworkTransaction( + CreateSession(&session_deps), + &session_deps.socket_factory)); + + HttpRequestInfo request; + request.method = "GET"; + request.url = GURL("http://www.google.com/"); + request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; + + MockWrite data_writes[] = { + MockWrite("GET / HTTP/1.1\r\n" + "Host: www.google.com\r\n" + "Connection: keep-alive\r\n\r\n"), + }; + + MockRead data_reads[] = { + MockRead("HTTP/1.0 401 Unauthorized\r\n"), + MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), + MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), + // Large content-length -- won't matter, as connection will be reset. + MockRead("Content-Length: 10000\r\n\r\n"), + MockRead(false, ERR_FAILED), + }; + + StaticMockSocket data(data_reads, data_writes); + session_deps.socket_factory.AddMockSocket(&data); + TestCompletionCallback callback; + + int rv = trans->Start(&request, &callback, NULL); + EXPECT_EQ(ERR_IO_PENDING, rv); + + rv = callback.WaitForResult(); + EXPECT_EQ(0, rv); + + const HttpResponseInfo* response = trans->GetResponseInfo(); + ASSERT_FALSE(response == NULL); + EXPECT_TRUE(response->auth_challenge.get() == NULL); +} + // Test the request-challenge-retry sequence for basic auth, over a keep-alive // connection. TEST_F(HttpNetworkTransactionTest, BasicAuthKeepAlive) { @@ -979,7 +1021,9 @@ TEST_F(HttpNetworkTransactionTest, BasicAuthProxyKeepAlive) { HttpRequestInfo request; request.method = "GET"; request.url = GURL("https://www.google.com/"); - request.load_flags = 0; + // Ensure that proxy authentication is attempted even + // when the no authentication data flag is set. + request.load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA; // Since we have proxy, should try to establish tunnel. MockWrite data_writes1[] = { |