Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2472)

Unified Diff: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc

Issue 10332185: Update behavior of one-click infobar to remove modal dialog, add "undo". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
diff --git a/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7622cf2ff0ad5ba29ab990d3ec1bcc566a834f1f
--- /dev/null
+++ b/chrome/browser/ui/sync/one_click_signin_helper_unittest.cc
@@ -0,0 +1,154 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/content_settings/cookie_settings.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
+#include "chrome/browser/signin/signin_manager_fake.h"
+#include "chrome/browser/ui/sync/one_click_signin_helper.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/navigation_controller.h"
+#include "content/public/browser/site_instance.h"
+#include "content/public/browser/web_contents.h"
+#include "content/test/test_browser_context.h"
+#include "content/test/test_browser_thread.h"
+#include "content/test/web_contents_tester.h"
+#include "testing/gmock/include/gmock/gmock-actions.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+class OneClickSigninHelperTest : public testing::Test {
+ public:
+ OneClickSigninHelperTest() : signin_manager_(NULL) {
+ }
+
+ virtual void TearDown() OVERRIDE;
+
+ protected:
+ // Marks the current thread as the UI thread, so that calls that assume
+ // they are called on that thread work.
+ void MarkCurrentThreadAsUIThread();
+
+ // Creates a mock WebContents for tests. If |use_incognito| is true then
+ // a WebContents for an incognito profile is created.
+ content::WebContents* CreateMockWebContents(bool use_incognito);
+
+ void EnableOneClick(bool enable);
+
+ void AllowSigninCookies(bool enable);
+
+ // Marks the profile as connected to the given account. If |username| is the
+ // empty string, the profile is not connected.
+ void ConnectProfileToAccount(const std::string& username);
+
+ private:
+ // Members to fake that we are on the UI thread.
+ MessageLoop message_loop_;
+ scoped_ptr<content::TestBrowserThread> ui_thread_;
+
+ // Mock objects used during tests. The objects need to be torn down in the
+ // correct order, see TearDown().
+ scoped_ptr<content::WebContents> web_contents_;
+ scoped_ptr<TestingProfile> profile_;
+ SigninManager* signin_manager_;
+
+ DISALLOW_COPY_AND_ASSIGN(OneClickSigninHelperTest);
+};
+
+void OneClickSigninHelperTest::TearDown() {
+ // Destroy things in proper order.
+ web_contents_.reset();
+ profile_.reset();
+ ui_thread_.reset();
+}
+
+void OneClickSigninHelperTest::MarkCurrentThreadAsUIThread() {
+ ui_thread_.reset(new content::TestBrowserThread(
+ content::BrowserThread::UI, &message_loop_));
+}
+
+content::WebContents* OneClickSigninHelperTest::CreateMockWebContents(
+ bool use_incognito) {
+ EXPECT_TRUE(web_contents_.get() == NULL);
+
+ profile_.reset(new TestingProfile());
+ signin_manager_ = static_cast<SigninManager*>(
+ SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile_.get(), FakeSigninManager::Build));
+
+ profile_->set_incognito(use_incognito);
+ web_contents_.reset(content::WebContentsTester::CreateTestWebContents(
+ profile_.get(), NULL));
+ return web_contents_.get();
+}
+
+void OneClickSigninHelperTest::EnableOneClick(bool enable) {
+ PrefService* pref_service = profile_->GetPrefs();
+ pref_service->SetBoolean(prefs::kReverseAutologinEnabled, enable);
+}
+
+void OneClickSigninHelperTest::AllowSigninCookies(bool enable) {
+ CookieSettings* cookie_settings =
+ CookieSettings::Factory::GetForProfile(profile_.get());
+ cookie_settings->SetDefaultCookieSetting(
+ enable ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK);
+}
+
+void OneClickSigninHelperTest::ConnectProfileToAccount(
+ const std::string& username) {
+ signin_manager_->StartSignIn(username, std::string(), std::string(),
+ std::string());
+}
+
+} // namespace
+
+TEST_F(OneClickSigninHelperTest, CanOfferNoContents) {
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, true));
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(NULL, false));
+}
+
+TEST_F(OneClickSigninHelperTest, CanOffer) {
+ MarkCurrentThreadAsUIThread();
+ content::WebContents* web_contents = CreateMockWebContents(false);
+
+ EnableOneClick(true);
+ EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, true));
+ EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, false));
+
+ EnableOneClick(false);
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true));
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false));
+}
+
+TEST_F(OneClickSigninHelperTest, CanOfferProfileConnected) {
+ MarkCurrentThreadAsUIThread();
+ content::WebContents* web_contents = CreateMockWebContents(false);
+ ConnectProfileToAccount("foo@gmail.com");
+
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true));
+ EXPECT_TRUE(OneClickSigninHelper::CanOffer(web_contents, false));
+}
+
+TEST_F(OneClickSigninHelperTest, CanOfferIncognito) {
+ MarkCurrentThreadAsUIThread();
+ content::WebContents* web_contents = CreateMockWebContents(true);
+
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true));
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false));
+}
+
+TEST_F(OneClickSigninHelperTest, CanOfferNoSigninCookies) {
+ MarkCurrentThreadAsUIThread();
+ content::WebContents* web_contents = CreateMockWebContents(true);
+ AllowSigninCookies(false);
+
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, true));
+ EXPECT_FALSE(OneClickSigninHelper::CanOffer(web_contents, false));
+}
« no previous file with comments | « chrome/browser/ui/sync/one_click_signin_helper.cc ('k') | chrome/browser/ui/sync/one_click_signin_sync_starter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698