| Index: chrome/browser/browsing_data/browsing_data_cookie_helper_unittest.cc
|
| diff --git a/chrome/browser/browsing_data/browsing_data_cookie_helper_unittest.cc b/chrome/browser/browsing_data/browsing_data_cookie_helper_unittest.cc
|
| index faa861c0b242e37ece3eca64e46e05fd934e7b3f..64a796d9fd06e57ff0c8829e22ad195e67a33038 100644
|
| --- a/chrome/browser/browsing_data/browsing_data_cookie_helper_unittest.cc
|
| +++ b/chrome/browser/browsing_data/browsing_data_cookie_helper_unittest.cc
|
| @@ -15,12 +15,102 @@
|
|
|
| namespace {
|
|
|
| +// Test expectations for a given cookie.
|
| +class CookieExpectation {
|
| + public:
|
| + CookieExpectation() : matched_(false) {}
|
| +
|
| + bool MatchesCookie(const net::CanonicalCookie& cookie) const {
|
| + if (!source_.empty() && source_ != cookie.Source())
|
| + return false;
|
| + if (!domain_.empty() && domain_ != cookie.Domain())
|
| + return false;
|
| + if (!path_.empty() && path_ != cookie.Path())
|
| + return false;
|
| + if (!name_.empty() && name_ != cookie.Name())
|
| + return false;
|
| + if (!value_.empty() && value_ != cookie.Value())
|
| + return false;
|
| + return true;
|
| + }
|
| +
|
| + std::string source_;
|
| + std::string domain_;
|
| + std::string path_;
|
| + std::string name_;
|
| + std::string value_;
|
| + bool matched_;
|
| +};
|
| +
|
| +// Matches a CookieExpectation against a Cookie.
|
| +class CookieMatcher {
|
| + public:
|
| + explicit CookieMatcher(const net::CanonicalCookie& cookie)
|
| + : cookie_(cookie) {}
|
| + bool operator()(const CookieExpectation& expectation) {
|
| + return expectation.MatchesCookie(cookie_);
|
| + }
|
| + net::CanonicalCookie cookie_;
|
| +};
|
| +
|
| +// Unary predicate to determine whether an expectation has been matched.
|
| +bool ExpectationIsMatched(const CookieExpectation& expectation) {
|
| + return expectation.matched_;
|
| +}
|
| +
|
| class BrowsingDataCookieHelperTest : public testing::Test {
|
| public:
|
| BrowsingDataCookieHelperTest()
|
| : testing_profile_(new TestingProfile()) {
|
| }
|
|
|
| + virtual void SetUp() OVERRIDE { cookie_expectations_.clear(); }
|
| +
|
| + // Adds an expectation for a cookie that satisfies the given parameters.
|
| + void AddCookieExpectation(const char* source,
|
| + const char* domain,
|
| + const char* path,
|
| + const char* name,
|
| + const char* value) {
|
| + CookieExpectation matcher;
|
| + if (source)
|
| + matcher.source_ = source;
|
| + if (domain)
|
| + matcher.domain_ = domain;
|
| + if (path)
|
| + matcher.path_ = path;
|
| + if (name)
|
| + matcher.name_ = name;
|
| + if (value)
|
| + matcher.value_ = value;
|
| + cookie_expectations_.push_back(matcher);
|
| + }
|
| +
|
| + // Checks the existing expectations, and then clears all existing
|
| + // expectations.
|
| + void CheckCookieExpectations() {
|
| + ASSERT_EQ(cookie_expectations_.size(), cookie_list_.size());
|
| +
|
| + // For each cookie, look for a matching expectation.
|
| + for (net::CookieList::iterator it = cookie_list_.begin();
|
| + it != cookie_list_.end();
|
| + ++it) {
|
| + CookieMatcher matcher(*it);
|
| + std::vector<CookieExpectation>::iterator match = std::find_if(
|
| + cookie_expectations_.begin(), cookie_expectations_.end(), matcher);
|
| + if (match != cookie_expectations_.end())
|
| + match->matched_ = true;
|
| + }
|
| +
|
| + // Check that each expectation has been matched.
|
| + unsigned long match_count = std::count_if(cookie_expectations_.begin(),
|
| + cookie_expectations_.end(),
|
| + ExpectationIsMatched);
|
| + EXPECT_EQ(cookie_expectations_.size(), match_count);
|
| +
|
| + cookie_expectations_.clear();
|
| + }
|
| +
|
| void CreateCookiesForTest() {
|
| scoped_refptr<net::CookieMonster> cookie_monster =
|
| testing_profile_->GetCookieMonster();
|
| @@ -44,135 +134,76 @@ class BrowsingDataCookieHelperTest : public testing::Test {
|
| }
|
|
|
| void FetchCallback(const net::CookieList& cookies) {
|
| - ASSERT_EQ(2UL, cookies.size());
|
| cookie_list_ = cookies;
|
| - net::CookieList::const_iterator it = cookies.begin();
|
|
|
| - // Correct because fetching cookies will get a sorted cookie list.
|
| - ASSERT_TRUE(it != cookies.end());
|
| - EXPECT_EQ("www.google.com", it->Domain());
|
| - EXPECT_EQ("A", it->Name());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ("www.gmail.google.com", it->Domain());
|
| - EXPECT_EQ("B", it->Name());
|
| -
|
| - ASSERT_TRUE(++it == cookies.end());
|
| + AddCookieExpectation(NULL, "www.google.com", NULL, "A", NULL);
|
| + AddCookieExpectation(NULL, "www.gmail.google.com", NULL, "B", NULL);
|
| + CheckCookieExpectations();
|
| }
|
|
|
| void DomainCookieCallback(const net::CookieList& cookies) {
|
| - ASSERT_EQ(2UL, cookies.size());
|
| cookie_list_ = cookies;
|
| - net::CookieList::const_iterator it = cookies.begin();
|
| -
|
| - // Correct because fetching cookies will get a sorted cookie list.
|
| - ASSERT_TRUE(it != cookies.end());
|
| - EXPECT_EQ("www.google.com", it->Domain());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("1", it->Value());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ(".www.google.com", it->Domain());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("2", it->Value());
|
|
|
| - ASSERT_TRUE(++it == cookies.end());
|
| + AddCookieExpectation(NULL, "www.google.com", NULL, "A", "1");
|
| + AddCookieExpectation(NULL, ".www.google.com", NULL, "A", "2");
|
| + CheckCookieExpectations();
|
| }
|
|
|
| void DeleteCallback(const net::CookieList& cookies) {
|
| - ASSERT_EQ(1UL, cookies.size());
|
| - net::CookieList::const_iterator it = cookies.begin();
|
| -
|
| - ASSERT_TRUE(it != cookies.end());
|
| - EXPECT_EQ("www.gmail.google.com", it->Domain());
|
| - EXPECT_EQ("B", it->Name());
|
| -
|
| - ASSERT_TRUE(++it == cookies.end());
|
| + cookie_list_ = cookies;
|
| + AddCookieExpectation(NULL, "www.gmail.google.com", NULL, "B", NULL);
|
| + CheckCookieExpectations();
|
| }
|
|
|
| void CannedUniqueCallback(const net::CookieList& cookies) {
|
| - EXPECT_EQ(1UL, cookies.size());
|
| cookie_list_ = cookies;
|
| - net::CookieList::const_iterator it = cookies.begin();
|
| -
|
| - ASSERT_TRUE(it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ("www.google.com", it->Domain());
|
| - EXPECT_EQ("/", it->Path());
|
| - EXPECT_EQ("A", it->Name());
|
| -
|
| - ASSERT_TRUE(++it == cookies.end());
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", "www.google.com", "/", "A", NULL);
|
| + CheckCookieExpectations();
|
| }
|
|
|
| void CannedReplaceCookieCallback(const net::CookieList& cookies) {
|
| - EXPECT_EQ(5UL, cookies.size());
|
| cookie_list_ = cookies;
|
| - net::CookieList::const_iterator it = cookies.begin();
|
| -
|
| - ASSERT_TRUE(it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ("www.google.com", it->Domain());
|
| - EXPECT_EQ("/", it->Path());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("2", it->Value());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ("www.google.com", it->Domain());
|
| - EXPECT_EQ("/example/0", it->Path());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("4", it->Value());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ(".google.com", it->Domain());
|
| - EXPECT_EQ("/", it->Path());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("6", it->Value());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ(".google.com", it->Domain());
|
| - EXPECT_EQ("/example/1", it->Path());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("8", it->Value());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ(".www.google.com", it->Domain());
|
| - EXPECT_EQ("/", it->Path());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("10", it->Value());
|
| -
|
| - ASSERT_TRUE(++it == cookies.end());
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", "www.google.com", "/", "A", "2");
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", "www.google.com", "/example/0", "A", "4");
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", ".google.com", "/", "A", "6");
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", ".google.com", "/example/1", "A", "8");
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", ".www.google.com", "/", "A", "10");
|
| + CheckCookieExpectations();
|
| }
|
|
|
| void CannedDomainCookieCallback(const net::CookieList& cookies) {
|
| - ASSERT_EQ(2UL, cookies.size());
|
| cookie_list_ = cookies;
|
| - net::CookieList::const_iterator it = cookies.begin();
|
| -
|
| - ASSERT_TRUE(it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ("www.google.com", it->Domain());
|
| -
|
| - ASSERT_TRUE(++it != cookies.end());
|
| - EXPECT_EQ("http://www.google.com/", it->Source());
|
| - EXPECT_EQ("A", it->Name());
|
| - EXPECT_EQ(".www.google.com", it->Domain());
|
| -
|
| - ASSERT_TRUE(++it == cookies.end());
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", "www.google.com", NULL, "A", NULL);
|
| + AddCookieExpectation(
|
| + "http://www.google.com/", ".www.google.com", NULL, "A", NULL);
|
| + CheckCookieExpectations();
|
| }
|
|
|
| void CannedDifferentFramesCallback(const net::CookieList& cookie_list) {
|
| ASSERT_EQ(3U, cookie_list.size());
|
| }
|
|
|
| + void DeleteCookie(BrowsingDataCookieHelper* helper, const GURL origin) {
|
| + for (net::CookieList::iterator it = cookie_list_.begin();
|
| + it != cookie_list_.end();
|
| + ++it) {
|
| + if (it->Source() == net::CanonicalCookie::GetCookieSourceFromURL(origin))
|
| + helper->DeleteCookie(*it);
|
| + }
|
| + }
|
| +
|
| protected:
|
| content::TestBrowserThreadBundle thread_bundle_;
|
| scoped_ptr<TestingProfile> testing_profile_;
|
|
|
| + std::vector<CookieExpectation> cookie_expectations_;
|
| net::CookieList cookie_list_;
|
| };
|
|
|
| @@ -237,7 +268,7 @@ TEST_F(BrowsingDataCookieHelperTest, CannedDeleteCookie) {
|
|
|
| EXPECT_EQ(2u, helper->GetCookieCount());
|
|
|
| - helper->DeleteCookie(cookie_list_[0]);
|
| + DeleteCookie(helper.get(), origin1);
|
|
|
| EXPECT_EQ(1u, helper->GetCookieCount());
|
| helper->StartFetching(
|
|
|