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

Unified Diff: trunk/src/chrome/browser/chromeos/policy/recommendation_restorer_unittest.cc

Issue 17068004: Revert 207755 "Add device policies to control accessibility sett..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 6 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: trunk/src/chrome/browser/chromeos/policy/recommendation_restorer_unittest.cc
===================================================================
--- trunk/src/chrome/browser/chromeos/policy/recommendation_restorer_unittest.cc (revision 207797)
+++ trunk/src/chrome/browser/chromeos/policy/recommendation_restorer_unittest.cc (working copy)
@@ -1,493 +0,0 @@
-// Copyright 2013 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/chromeos/policy/recommendation_restorer.h"
-
-#include "ash/magnifier/magnifier_constants.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/prefs/pref_notifier_impl.h"
-#include "base/prefs/testing_pref_store.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/test_simple_task_runner.h"
-#include "base/thread_task_runner_handle.h"
-#include "base/time.h"
-#include "base/values.h"
-#include "chrome/browser/chromeos/policy/recommendation_restorer_factory.h"
-#include "chrome/browser/prefs/browser_prefs.h"
-#include "chrome/browser/prefs/pref_service_syncable.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/test/base/testing_browser_process.h"
-#include "chrome/test/base/testing_pref_service_syncable.h"
-#include "chrome/test/base/testing_profile.h"
-#include "chrome/test/base/testing_profile_manager.h"
-#include "components/user_prefs/pref_registry_syncable.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace policy {
-
-namespace {
- // The amount of idle time after which recommended values are restored.
- const int kRestoreDelayInMs = 60 * 1000; // 1 minute.
-} // namespace
-
-class RecommendationRestorerTest : public testing::Test {
- protected:
- RecommendationRestorerTest();
-
- // testing::Test:
- virtual void SetUp() OVERRIDE;
- virtual void TearDown() OVERRIDE;
-
- void SetRecommendedValues();
- void SetUserSettings();
-
- void CreateLoginProfile();
- void CreateUserProfile();
-
- void NotifyOfSessionStart();
- void NotifyOfUserActivity();
-
- void VerifyPrefFollowsUser(const char* pref_name,
- const base::Value& expected_value) const;
- void VerifyPrefsFollowUser() const;
- void VerifyPrefFollowsRecommendation(const char* pref_name,
- const base::Value& expected_value) const;
- void VerifyPrefsFollowRecommendations() const;
-
- void VerifyNotListeningForNotifications() const;
- void VerifyTimerIsStopped() const;
- void VerifyTimerIsRunning() const;
-
- TestingPrefStore* recommended_prefs_; // Not owned.
- TestingPrefServiceSyncable* prefs_; // Not owned.
- RecommendationRestorer* restorer_; // Not owned.
-
- scoped_refptr<base::TestSimpleTaskRunner> runner_;
- base::ThreadTaskRunnerHandle runner_handler_;
-
- private:
- scoped_ptr<PrefServiceSyncable> prefs_owner_;
-
- TestingProfileManager* profile_manager_; // Not owned.
-
- DISALLOW_COPY_AND_ASSIGN(RecommendationRestorerTest);
-};
-
-RecommendationRestorerTest::RecommendationRestorerTest()
- : recommended_prefs_(new TestingPrefStore),
- prefs_(new TestingPrefServiceSyncable(
- new TestingPrefStore,
- new TestingPrefStore,
- recommended_prefs_,
- new user_prefs::PrefRegistrySyncable,
- new PrefNotifierImpl)),
- restorer_(NULL),
- runner_(new base::TestSimpleTaskRunner),
- runner_handler_(runner_),
- prefs_owner_(prefs_),
- profile_manager_(NULL) {
- chrome::RegisterUserPrefs(prefs_->registry());
-}
-
-void RecommendationRestorerTest::SetUp() {
- testing::Test::SetUp();
- profile_manager_ =
- new TestingProfileManager(TestingBrowserProcess::GetGlobal());
- ASSERT_TRUE(profile_manager_->SetUp());
-}
-
-void RecommendationRestorerTest::TearDown() {
- TestingBrowserProcess::GetGlobal()->SetLocalState(NULL);
- testing::Test::TearDown();
-}
-
-void RecommendationRestorerTest::SetRecommendedValues() {
- recommended_prefs_->SetBoolean(prefs::kLargeCursorEnabled, false);
- recommended_prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, false);
- recommended_prefs_->SetBoolean(prefs::kHighContrastEnabled, false);
- recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false);
- recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0);
-}
-
-void RecommendationRestorerTest::SetUserSettings() {
- prefs_->SetBoolean(prefs::kLargeCursorEnabled, true);
- prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, true);
- prefs_->SetBoolean(prefs::kHighContrastEnabled, true);
- prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true);
- prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL);
-}
-
-void RecommendationRestorerTest::CreateLoginProfile() {
- ASSERT_FALSE(restorer_);
- TestingProfile* profile = profile_manager_->CreateTestingProfile(
- chrome::kInitialProfile, prefs_owner_.Pass(),
- UTF8ToUTF16(chrome::kInitialProfile), 0);
- restorer_ = RecommendationRestorerFactory::GetForProfile(profile);
- EXPECT_TRUE(restorer_);
-}
-
-void RecommendationRestorerTest::CreateUserProfile() {
- ASSERT_FALSE(restorer_);
- TestingProfile* profile = profile_manager_->CreateTestingProfile(
- "user", prefs_owner_.Pass(), UTF8ToUTF16("user"), 0);
- restorer_ = RecommendationRestorerFactory::GetForProfile(profile);
- EXPECT_TRUE(restorer_);
-}
-
-void RecommendationRestorerTest::NotifyOfSessionStart() {
- ASSERT_TRUE(restorer_);
- restorer_->Observe(chrome::NOTIFICATION_LOGIN_USER_CHANGED,
- content::Source<RecommendationRestorerTest>(this),
- content::NotificationService::NoDetails());
-}
-
-void RecommendationRestorerTest::NotifyOfUserActivity() {
- ASSERT_TRUE(restorer_);
- restorer_->OnUserActivity();
-}
-
-void RecommendationRestorerTest::VerifyPrefFollowsUser(
- const char* pref_name,
- const base::Value& expected_value) const {
- const PrefServiceSyncable::Preference* pref =
- prefs_->FindPreference(pref_name);
- ASSERT_TRUE(pref);
- EXPECT_TRUE(pref->HasUserSetting());
- const base::Value* value = pref->GetValue();
- ASSERT_TRUE(value);
- EXPECT_TRUE(expected_value.Equals(value));
-}
-
-void RecommendationRestorerTest::VerifyPrefsFollowUser() const {
- VerifyPrefFollowsUser(prefs::kLargeCursorEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kHighContrastEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kScreenMagnifierType,
- base::FundamentalValue(ash::MAGNIFIER_FULL));
-}
-
-void RecommendationRestorerTest::VerifyPrefFollowsRecommendation(
- const char* pref_name,
- const base::Value& expected_value) const {
- const PrefServiceSyncable::Preference* pref =
- prefs_->FindPreference(pref_name);
- ASSERT_TRUE(pref);
- EXPECT_TRUE(pref->IsRecommended());
- EXPECT_FALSE(pref->HasUserSetting());
- const base::Value* value = pref->GetValue();
- ASSERT_TRUE(value);
- EXPECT_TRUE(expected_value.Equals(value));
-}
-
-void RecommendationRestorerTest::VerifyPrefsFollowRecommendations() const {
- VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType,
- base::FundamentalValue(0));
-}
-
-void RecommendationRestorerTest::VerifyNotListeningForNotifications() const {
- ASSERT_TRUE(restorer_);
- EXPECT_TRUE(restorer_->pref_change_registrar_.IsEmpty());
- EXPECT_TRUE(restorer_->notification_registrar_.IsEmpty());
-}
-
-void RecommendationRestorerTest::VerifyTimerIsStopped() const {
- ASSERT_TRUE(restorer_);
- EXPECT_FALSE(restorer_->restore_timer_.IsRunning());
-}
-
-void RecommendationRestorerTest::VerifyTimerIsRunning() const {
- ASSERT_TRUE(restorer_);
- EXPECT_TRUE(restorer_->restore_timer_.IsRunning());
- EXPECT_EQ(base::TimeDelta::FromMilliseconds(kRestoreDelayInMs),
- restorer_->restore_timer_.GetCurrentDelay());
-}
-
-TEST_F(RecommendationRestorerTest, CreateForUserProfile) {
- // Verifies that when a RecommendationRestorer is created for a user profile,
- // it does not start listening for any notifications, does not clear user
- // settings on initialization and does not start a timer that will clear user
- // settings eventually.
- SetRecommendedValues();
- SetUserSettings();
-
- CreateUserProfile();
- VerifyNotListeningForNotifications();
- VerifyPrefsFollowUser();
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, NoRecommendations) {
- // Verifies that when no recommended values have been set and a
- // RecommendationRestorer is created for the login profile, it does not clear
- // user settings on initialization and does not start a timer that will clear
- // user settings eventually.
- SetUserSettings();
-
- CreateLoginProfile();
- VerifyPrefsFollowUser();
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, RestoreOnStartup) {
- // Verifies that when recommended values have been set and a
- // RecommendationRestorer is created for the login profile, it clears user
- // settings on initialization.
- SetRecommendedValues();
- SetUserSettings();
-
- CreateLoginProfile();
- VerifyPrefsFollowRecommendations();
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, RestoreOnRecommendationChangeOnLoginScreen) {
- // Verifies that if recommended values change while the login screen is being
- // shown, a timer is started that will clear user settings eventually.
- SetUserSettings();
-
- CreateLoginProfile();
-
- VerifyTimerIsStopped();
- recommended_prefs_->SetBoolean(prefs::kLargeCursorEnabled, false);
- VerifyPrefFollowsUser(prefs::kLargeCursorEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled,
- base::FundamentalValue(false));
-
- VerifyTimerIsStopped();
- recommended_prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, false);
- VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(false));
-
- VerifyTimerIsStopped();
- recommended_prefs_->SetBoolean(prefs::kHighContrastEnabled, false);
- VerifyPrefFollowsUser(prefs::kHighContrastEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled,
- base::FundamentalValue(false));
-
- VerifyTimerIsStopped();
- recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false);
- recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0);
- VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kScreenMagnifierType,
- base::FundamentalValue(ash::MAGNIFIER_FULL));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType,
- base::FundamentalValue(0));
-
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, RestoreOnRecommendationChangeInUserSession) {
- // Verifies that if recommended values change while a user session is in
- // progress, user settings are cleared immediately.
- SetUserSettings();
-
- CreateLoginProfile();
- NotifyOfSessionStart();
-
- VerifyPrefFollowsUser(prefs::kLargeCursorEnabled,
- base::FundamentalValue(true));
- recommended_prefs_->SetBoolean(prefs::kLargeCursorEnabled, false);
- VerifyTimerIsStopped();
- VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled,
- base::FundamentalValue(false));
-
- VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(true));
- recommended_prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, false);
- VerifyTimerIsStopped();
- VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(false));
-
- VerifyPrefFollowsUser(prefs::kHighContrastEnabled,
- base::FundamentalValue(true));
- recommended_prefs_->SetBoolean(prefs::kHighContrastEnabled, false);
- VerifyTimerIsStopped();
- VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled,
- base::FundamentalValue(false));
-
- VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kScreenMagnifierType,
- base::FundamentalValue(ash::MAGNIFIER_FULL));
- recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false);
- recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0);
- VerifyTimerIsStopped();
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType,
- base::FundamentalValue(0));
-}
-
-TEST_F(RecommendationRestorerTest, DoNothingOnUserChange) {
- // Verifies that if no recommended values have been set and user settings
- // change, the user settings are not cleared immediately and no timer is
- // started that will clear the user settings eventually.
- CreateLoginProfile();
-
- prefs_->SetBoolean(prefs::kLargeCursorEnabled, true);
- VerifyPrefFollowsUser(prefs::kLargeCursorEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsStopped();
-
- prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, true);
- VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsStopped();
-
- prefs_->SetBoolean(prefs::kHighContrastEnabled, true);
- VerifyPrefFollowsUser(prefs::kHighContrastEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsStopped();
-
- prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true);
- VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsStopped();
-
- prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true);
- prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL);
- VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kScreenMagnifierType,
- base::FundamentalValue(ash::MAGNIFIER_FULL));
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, RestoreOnUserChange) {
- // Verifies that if recommended values have been set and user settings change
- // while the login screen is being shown, a timer is started that will clear
- // the user settings eventually.
- SetRecommendedValues();
-
- CreateLoginProfile();
-
- VerifyTimerIsStopped();
- prefs_->SetBoolean(prefs::kLargeCursorEnabled, true);
- VerifyPrefFollowsUser(prefs::kLargeCursorEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled,
- base::FundamentalValue(false));
-
- VerifyTimerIsStopped();
- prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, true);
- VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled,
- base::FundamentalValue(false));
-
- VerifyTimerIsStopped();
- prefs_->SetBoolean(prefs::kHighContrastEnabled, true);
- VerifyPrefFollowsUser(prefs::kHighContrastEnabled,
- base::FundamentalValue(true));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled,
- base::FundamentalValue(false));
-
- VerifyTimerIsStopped();
- prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true);
- prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL);
- VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(true));
- VerifyPrefFollowsUser(prefs::kScreenMagnifierType,
- base::FundamentalValue(ash::MAGNIFIER_FULL));
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled,
- base::FundamentalValue(false));
- VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType,
- base::FundamentalValue(0));
-
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, RestoreOnSessionStart) {
- // Verifies that if recommended values have been set, user settings have
- // changed and a session is then started, the user settings are cleared
- // immediately and the timer that would have cleared them eventually on the
- // login screen is stopped.
- SetRecommendedValues();
-
- CreateLoginProfile();
- SetUserSettings();
-
- NotifyOfSessionStart();
- VerifyPrefsFollowRecommendations();
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, DoNothingOnSessionStart) {
- // Verifies that if recommended values have not been set, user settings have
- // changed and a session is then started, the user settings are not cleared
- // immediately.
- CreateLoginProfile();
- SetUserSettings();
-
- NotifyOfSessionStart();
- VerifyPrefsFollowUser();
- VerifyTimerIsStopped();
-}
-
-TEST_F(RecommendationRestorerTest, UserActivityResetsTimer) {
- // Verifies that user activity resets the timer which clears user settings.
- recommended_prefs_->SetBoolean(prefs::kLargeCursorEnabled, false);
-
- CreateLoginProfile();
-
- prefs_->SetBoolean(prefs::kLargeCursorEnabled, true);
- VerifyTimerIsRunning();
-
- // Notify that there is user activity, then fast forward until the originally
- // set timer fires.
- NotifyOfUserActivity();
- runner_->RunPendingTasks();
- VerifyPrefFollowsUser(prefs::kLargeCursorEnabled,
- base::FundamentalValue(true));
-
- // Fast forward until the reset timer fires.
- VerifyTimerIsRunning();
- runner_->RunUntilIdle();
- VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled,
- base::FundamentalValue(false));
- VerifyTimerIsStopped();
-}
-
-} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698