summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-02 18:24:55 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-02 18:24:55 +0000
commit9fb83e856fc12168151094df31e57177e4844417 (patch)
tree57e9721150e4f940a3bb1e6444e8423108005805 /net
parent00b5930321cc07dd3ccf726a15f1e25fd78e2577 (diff)
downloadchromium_src-9fb83e856fc12168151094df31e57177e4844417.zip
chromium_src-9fb83e856fc12168151094df31e57177e4844417.tar.gz
chromium_src-9fb83e856fc12168151094df31e57177e4844417.tar.bz2
Store blocked and accessed cookies in the tab contents.
This will enable chrome to display all cookies used/blocked on the current site to the user instead of just the information that something was blocked. The cookies are collected in data structures suitable for displaying them using the cookies tree model. BUG=45230 TEST=none Review URL: http://codereview.chromium.org/2370001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51545 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/url_request/url_request.h14
-rw-r--r--net/url_request/url_request_http_job.cc16
-rw-r--r--net/url_request/url_request_unittest.cc17
-rw-r--r--net/url_request/url_request_unittest.h27
4 files changed, 51 insertions, 23 deletions
diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h
index f770c89..23e2f6f 100644
--- a/net/url_request/url_request.h
+++ b/net/url_request/url_request.h
@@ -187,12 +187,18 @@ class URLRequest {
request->Cancel();
}
- // Called when unable to get cookies due to policy.
- virtual void OnGetCookiesBlocked(URLRequest* request) {
+ // Called when reading cookies. |blocked_by_policy| is true if access to
+ // cookies was denied due to content settings. This method will never be
+ // invoked when LOAD_DO_NOT_SEND_COOKIES is specified.
+ virtual void OnGetCookies(URLRequest* request, bool blocked_by_policy) {
}
- // Called when unable to set a cookie due to policy.
- virtual void OnSetCookieBlocked(URLRequest* request) {
+ // Called when a cookie is set. |blocked_by_policy| is true if the cookie
+ // was rejected due to content settings. This method will never be invoked
+ // when LOAD_DO_NOT_SAVE_COOKIES is specified.
+ virtual void OnSetCookie(URLRequest* request,
+ const std::string& cookie_line,
+ bool blocked_by_policy) {
}
// After calling Start(), the delegate will receive an OnResponseStarted
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 4f44f2e3..9a03213 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -441,8 +441,9 @@ void URLRequestHttpJob::OnCanGetCookiesCompleted(int policy) {
// If the request was destroyed, then there is no more work to do.
if (request_ && request_->delegate()) {
if (policy == net::ERR_ACCESS_DENIED) {
- request_->delegate()->OnGetCookiesBlocked(request_);
+ request_->delegate()->OnGetCookies(request_, true);
} else if (policy == net::OK && request_->context()->cookie_store()) {
+ request_->delegate()->OnGetCookies(request_, false);
net::CookieOptions options;
options.set_include_httponly();
std::string cookies =
@@ -453,7 +454,7 @@ void URLRequestHttpJob::OnCanGetCookiesCompleted(int policy) {
net::HttpRequestHeaders::kCookie, cookies);
}
}
- // We may have been canceled within OnGetCookiesBlocked.
+ // We may have been canceled within OnGetCookies.
if (GetStatus().is_success()) {
StartTransaction();
} else {
@@ -467,7 +468,10 @@ void URLRequestHttpJob::OnCanSetCookieCompleted(int policy) {
// If the request was destroyed, then there is no more work to do.
if (request_ && request_->delegate()) {
if (policy == net::ERR_ACCESS_DENIED) {
- request_->delegate()->OnSetCookieBlocked(request_);
+ request_->delegate()->OnSetCookie(
+ request_,
+ response_cookies_[response_cookies_save_index_],
+ true);
} else if ((policy == net::OK || policy == net::OK_FOR_SESSION_ONLY) &&
request_->context()->cookie_store()) {
// OK to save the current response cookie now.
@@ -478,9 +482,13 @@ void URLRequestHttpJob::OnCanSetCookieCompleted(int policy) {
request_->context()->cookie_store()->SetCookieWithOptions(
request_->url(), response_cookies_[response_cookies_save_index_],
options);
+ request_->delegate()->OnSetCookie(
+ request_,
+ response_cookies_[response_cookies_save_index_],
+ false);
}
response_cookies_save_index_++;
- // We may have been canceled within OnSetCookieBlocked.
+ // We may have been canceled within OnSetCookie.
if (GetStatus().is_success()) {
SaveNextCookie();
} else {
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index a15d82f..026038f 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -1265,7 +1265,7 @@ TEST_F(URLRequestTest, DoNotSendCookies) {
EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1")
== std::string::npos);
- // LOAD_DO_NOT_SEND_COOKIES does not trigger OnGetCookiesBlocked.
+ // LOAD_DO_NOT_SEND_COOKIES does not trigger OnGetCookies.
EXPECT_EQ(0, d.blocked_get_cookies_count());
EXPECT_EQ(0, d.blocked_set_cookie_count());
}
@@ -1288,6 +1288,7 @@ TEST_F(URLRequestTest, DoNotSaveCookies) {
EXPECT_EQ(0, d.blocked_get_cookies_count());
EXPECT_EQ(0, d.blocked_set_cookie_count());
+ EXPECT_EQ(1, d.set_cookie_count());
}
// Try to set-up another cookie and update the previous cookie.
@@ -1301,9 +1302,10 @@ TEST_F(URLRequestTest, DoNotSaveCookies) {
MessageLoop::current()->Run();
- // LOAD_DO_NOT_SAVE_COOKIES does not trigger OnSetCookieBlocked.
+ // LOAD_DO_NOT_SAVE_COOKIES does not trigger OnSetCookie.
EXPECT_EQ(0, d.blocked_get_cookies_count());
EXPECT_EQ(0, d.blocked_set_cookie_count());
+ EXPECT_EQ(0, d.set_cookie_count());
}
// Verify the cookies weren't saved or updated.
@@ -1321,6 +1323,7 @@ TEST_F(URLRequestTest, DoNotSaveCookies) {
EXPECT_EQ(0, d.blocked_get_cookies_count());
EXPECT_EQ(0, d.blocked_set_cookie_count());
+ EXPECT_EQ(0, d.set_cookie_count());
}
}
@@ -1578,7 +1581,7 @@ TEST_F(URLRequestTest, CancelTest_During_CookiePolicy) {
MessageLoop::current()->RunAllPending();
}
-TEST_F(URLRequestTest, CancelTest_During_OnGetCookiesBlocked) {
+TEST_F(URLRequestTest, CancelTest_During_OnGetCookies) {
scoped_refptr<HTTPTestServer> server =
HTTPTestServer::CreateServer(L"", NULL);
ASSERT_TRUE(NULL != server.get());
@@ -1607,7 +1610,7 @@ TEST_F(URLRequestTest, CancelTest_During_OnGetCookiesBlocked) {
context->set_cookie_policy(NULL);
}
-TEST_F(URLRequestTest, CancelTest_During_OnSetCookieBlocked) {
+TEST_F(URLRequestTest, CancelTest_During_OnSetCookie) {
scoped_refptr<HTTPTestServer> server =
HTTPTestServer::CreateServer(L"", NULL);
ASSERT_TRUE(NULL != server.get());
@@ -1630,9 +1633,9 @@ TEST_F(URLRequestTest, CancelTest_During_OnSetCookieBlocked) {
EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status());
// Even though the response will contain 3 set-cookie headers, we expect
- // only one to be blocked as that first one will cause OnSetCookieBlocked
- // to be called, which will cancel the request. Once canceled, it should
- // not attempt to set further cookies.
+ // only one to be blocked as that first one will cause OnSetCookie to be
+ // called, which will cancel the request. Once canceled, it should not
+ // attempt to set further cookies.
EXPECT_EQ(0, d.blocked_get_cookies_count());
EXPECT_EQ(1, d.blocked_set_cookie_count());
diff --git a/net/url_request/url_request_unittest.h b/net/url_request/url_request_unittest.h
index 411e32a..0dfa766 100644
--- a/net/url_request/url_request_unittest.h
+++ b/net/url_request/url_request_unittest.h
@@ -204,6 +204,7 @@ class TestDelegate : public URLRequest::Delegate {
received_redirect_count_(0),
blocked_get_cookies_count_(0),
blocked_set_cookie_count_(0),
+ set_cookie_count_(0),
received_data_before_response_(false),
request_failed_(false),
have_certificate_errors_(false),
@@ -306,16 +307,24 @@ class TestDelegate : public URLRequest::Delegate {
request->Cancel();
}
- virtual void OnGetCookiesBlocked(URLRequest* request) {
- blocked_get_cookies_count_++;
- if (cancel_in_getcookiesblocked_)
- request->Cancel();
+ virtual void OnGetCookies(URLRequest* request, bool blocked_by_policy) {
+ if (blocked_by_policy) {
+ blocked_get_cookies_count_++;
+ if (cancel_in_getcookiesblocked_)
+ request->Cancel();
+ }
}
- virtual void OnSetCookieBlocked(URLRequest* request) {
- blocked_set_cookie_count_++;
- if (cancel_in_setcookieblocked_)
- request->Cancel();
+ virtual void OnSetCookie(URLRequest* request,
+ const std::string& cookie_line,
+ bool blocked_by_policy) {
+ if (blocked_by_policy) {
+ blocked_set_cookie_count_++;
+ if (cancel_in_setcookieblocked_)
+ request->Cancel();
+ } else {
+ set_cookie_count_++;
+ }
}
void set_cancel_in_received_redirect(bool val) { cancel_in_rr_ = val; }
@@ -345,6 +354,7 @@ class TestDelegate : public URLRequest::Delegate {
int received_redirect_count() const { return received_redirect_count_; }
int blocked_get_cookies_count() const { return blocked_get_cookies_count_; }
int blocked_set_cookie_count() const { return blocked_set_cookie_count_; }
+ int set_cookie_count() const { return set_cookie_count_; }
bool received_data_before_response() const {
return received_data_before_response_;
}
@@ -373,6 +383,7 @@ class TestDelegate : public URLRequest::Delegate {
int received_redirect_count_;
int blocked_get_cookies_count_;
int blocked_set_cookie_count_;
+ int set_cookie_count_;
bool received_data_before_response_;
bool request_failed_;
bool have_certificate_errors_;