| Index: chrome/browser/browsing_data_remover_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/browsing_data_remover_unittest.cc (revision 95818)
|
| +++ chrome/browser/browsing_data_remover_unittest.cc (working copy)
|
| @@ -6,12 +6,16 @@
|
|
|
| #include <set>
|
|
|
| +#include "base/bind.h"
|
| #include "base/message_loop.h"
|
| #include "base/platform_file.h"
|
| #include "chrome/browser/extensions/mock_extension_special_storage_policy.h"
|
| #include "chrome/browser/history/history.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "chrome/test/testing_browser_process_test.h"
|
| +#include "net/base/cookie_monster.h"
|
| +#include "net/url_request/url_request_context.h"
|
| +#include "net/url_request/url_request_context_getter.cc"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "webkit/fileapi/file_system_context.h"
|
| #include "webkit/fileapi/file_system_file_util.h"
|
| @@ -34,11 +38,20 @@
|
|
|
| class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer {
|
| public:
|
| - BrowsingDataRemoverTester() {}
|
| + BrowsingDataRemoverTester()
|
| + : start_(false),
|
| + already_quit_(false) {}
|
| virtual ~BrowsingDataRemoverTester() {}
|
|
|
| void BlockUntilNotified() {
|
| - MessageLoop::current()->Run();
|
| + if (!already_quit_) {
|
| + DCHECK(!start_);
|
| + start_ = true;
|
| + MessageLoop::current()->Run();
|
| + } else {
|
| + DCHECK(!start_);
|
| + already_quit_ = false;
|
| + }
|
| }
|
|
|
| protected:
|
| @@ -48,15 +61,78 @@
|
| }
|
|
|
| void Notify() {
|
| - MessageLoop::current()->Quit();
|
| + if (start_) {
|
| + DCHECK(!already_quit_);
|
| + MessageLoop::current()->Quit();
|
| + start_ = false;
|
| + } else {
|
| + DCHECK(!already_quit_);
|
| + already_quit_ = true;
|
| + }
|
| }
|
|
|
| private:
|
| + // Helps prevent from running message_loop, if the callback invoked
|
| + // immediately.
|
| + bool start_;
|
| + bool already_quit_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(BrowsingDataRemoverTester);
|
| };
|
|
|
| // Testers -------------------------------------------------------------------
|
|
|
| +class RemoveCookieTester : public BrowsingDataRemoverTester {
|
| + public:
|
| + explicit RemoveCookieTester(TestingProfile* profile)
|
| + : get_cookie_success_(false) {
|
| + profile->CreateRequestContext();
|
| + monster_ = profile->GetRequestContext()->GetURLRequestContext()->
|
| + cookie_store()->GetCookieMonster();
|
| + }
|
| +
|
| + // Returns true, if the given cookie exists in the cookie store.
|
| + bool ContainsCookie() {
|
| + get_cookie_success_ = false;
|
| + monster_->GetCookiesWithOptionsAsync(
|
| + kOrigin1, net::CookieOptions(),
|
| + base::Bind(&RemoveCookieTester::GetCookieCallback,
|
| + base::Unretained(this)));
|
| + BlockUntilNotified();
|
| + return get_cookie_success_;
|
| + }
|
| +
|
| + void AddCookie() {
|
| + monster_->SetCookieWithOptionsAsync(
|
| + kOrigin1, "A=1", net::CookieOptions(),
|
| + base::Bind(&RemoveCookieTester::SetCookieCallback,
|
| + base::Unretained(this)));
|
| + BlockUntilNotified();
|
| + }
|
| +
|
| + private:
|
| + void GetCookieCallback(const std::string& cookies) {
|
| + if (cookies == "A=1") {
|
| + get_cookie_success_ = true;
|
| + } else {
|
| + EXPECT_EQ(cookies, "");
|
| + get_cookie_success_ = false;
|
| + }
|
| + Notify();
|
| + }
|
| +
|
| + void SetCookieCallback(bool result) {
|
| + ASSERT_TRUE(result);
|
| + Notify();
|
| + }
|
| +
|
| + bool get_cookie_success_;
|
| +
|
| + net::CookieStore* monster_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(RemoveCookieTester);
|
| +};
|
| +
|
| class RemoveHistoryTester : public BrowsingDataRemoverTester {
|
| public:
|
| explicit RemoveHistoryTester(TestingProfile* profile)
|
| @@ -220,6 +296,19 @@
|
|
|
| // Tests ---------------------------------------------------------------------
|
|
|
| +TEST_F(BrowsingDataRemoverTest, RemoveCookieForever) {
|
| + scoped_ptr<RemoveCookieTester> tester(
|
| + new RemoveCookieTester(GetProfile()));
|
| +
|
| + tester->AddCookie();
|
| + ASSERT_TRUE(tester->ContainsCookie());
|
| +
|
| + BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING,
|
| + base::Time::Now(), BrowsingDataRemover::REMOVE_COOKIES, tester.get());
|
| +
|
| + EXPECT_FALSE(tester->ContainsCookie());
|
| +}
|
| +
|
| TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) {
|
| scoped_ptr<RemoveHistoryTester> tester(
|
| new RemoveHistoryTester(GetProfile()));
|
|
|