| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/policy/recommendation_restorer.h" | 5 #include "chrome/browser/chromeos/policy/recommendation_restorer.h" |
| 6 | 6 |
| 7 #include "ash/magnifier/magnifier_constants.h" | 7 #include "ash/magnifier/magnifier_constants.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/prefs/pref_notifier_impl.h" | 9 #include "base/prefs/pref_notifier_impl.h" |
| 10 #include "base/prefs/testing_pref_store.h" | 10 #include "base/prefs/testing_pref_store.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 void RecommendationRestorerTest::RegisterLoginProfilePrefs() { | 108 void RecommendationRestorerTest::RegisterLoginProfilePrefs() { |
| 109 chrome::RegisterLoginProfilePrefs(prefs_->registry()); | 109 chrome::RegisterLoginProfilePrefs(prefs_->registry()); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void RecommendationRestorerTest::SetRecommendedValues() { | 112 void RecommendationRestorerTest::SetRecommendedValues() { |
| 113 recommended_prefs_->SetBoolean(prefs::kLargeCursorEnabled, false); | 113 recommended_prefs_->SetBoolean(prefs::kLargeCursorEnabled, false); |
| 114 recommended_prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, false); | 114 recommended_prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, false); |
| 115 recommended_prefs_->SetBoolean(prefs::kHighContrastEnabled, false); | 115 recommended_prefs_->SetBoolean(prefs::kHighContrastEnabled, false); |
| 116 recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false); | 116 recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false); |
| 117 recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0); | 117 recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0); |
| 118 recommended_prefs_->SetBoolean(prefs::kVirtualKeyboardEnabled, false); |
| 118 } | 119 } |
| 119 | 120 |
| 120 void RecommendationRestorerTest::SetUserSettings() { | 121 void RecommendationRestorerTest::SetUserSettings() { |
| 121 prefs_->SetBoolean(prefs::kLargeCursorEnabled, true); | 122 prefs_->SetBoolean(prefs::kLargeCursorEnabled, true); |
| 122 prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, true); | 123 prefs_->SetBoolean(prefs::kSpokenFeedbackEnabled, true); |
| 123 prefs_->SetBoolean(prefs::kHighContrastEnabled, true); | 124 prefs_->SetBoolean(prefs::kHighContrastEnabled, true); |
| 124 prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true); | 125 prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true); |
| 125 prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL); | 126 prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL); |
| 127 prefs_->SetBoolean(prefs::kVirtualKeyboardEnabled, true); |
| 126 } | 128 } |
| 127 | 129 |
| 128 void RecommendationRestorerTest::CreateLoginProfile() { | 130 void RecommendationRestorerTest::CreateLoginProfile() { |
| 129 ASSERT_FALSE(restorer_); | 131 ASSERT_FALSE(restorer_); |
| 130 TestingProfile* profile = profile_manager_.CreateTestingProfile( | 132 TestingProfile* profile = profile_manager_.CreateTestingProfile( |
| 131 chrome::kInitialProfile, prefs_owner_.Pass(), | 133 chrome::kInitialProfile, prefs_owner_.Pass(), |
| 132 base::UTF8ToUTF16(chrome::kInitialProfile), 0, std::string(), | 134 base::UTF8ToUTF16(chrome::kInitialProfile), 0, std::string(), |
| 133 TestingProfile::TestingFactories()); | 135 TestingProfile::TestingFactories()); |
| 134 restorer_ = RecommendationRestorerFactory::GetForProfile(profile); | 136 restorer_ = RecommendationRestorerFactory::GetForProfile(profile); |
| 135 EXPECT_TRUE(restorer_); | 137 EXPECT_TRUE(restorer_); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 VerifyPrefFollowsUser(prefs::kLargeCursorEnabled, | 174 VerifyPrefFollowsUser(prefs::kLargeCursorEnabled, |
| 173 base::FundamentalValue(true)); | 175 base::FundamentalValue(true)); |
| 174 VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled, | 176 VerifyPrefFollowsUser(prefs::kSpokenFeedbackEnabled, |
| 175 base::FundamentalValue(true)); | 177 base::FundamentalValue(true)); |
| 176 VerifyPrefFollowsUser(prefs::kHighContrastEnabled, | 178 VerifyPrefFollowsUser(prefs::kHighContrastEnabled, |
| 177 base::FundamentalValue(true)); | 179 base::FundamentalValue(true)); |
| 178 VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled, | 180 VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled, |
| 179 base::FundamentalValue(true)); | 181 base::FundamentalValue(true)); |
| 180 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, | 182 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, |
| 181 base::FundamentalValue(ash::MAGNIFIER_FULL)); | 183 base::FundamentalValue(ash::MAGNIFIER_FULL)); |
| 184 VerifyPrefFollowsUser(prefs::kVirtualKeyboardEnabled, |
| 185 base::FundamentalValue(true)); |
| 182 } | 186 } |
| 183 | 187 |
| 184 void RecommendationRestorerTest::VerifyPrefFollowsRecommendation( | 188 void RecommendationRestorerTest::VerifyPrefFollowsRecommendation( |
| 185 const char* pref_name, | 189 const char* pref_name, |
| 186 const base::Value& expected_value) const { | 190 const base::Value& expected_value) const { |
| 187 const PrefServiceSyncable::Preference* pref = | 191 const PrefServiceSyncable::Preference* pref = |
| 188 prefs_->FindPreference(pref_name); | 192 prefs_->FindPreference(pref_name); |
| 189 ASSERT_TRUE(pref); | 193 ASSERT_TRUE(pref); |
| 190 EXPECT_TRUE(pref->IsRecommended()); | 194 EXPECT_TRUE(pref->IsRecommended()); |
| 191 EXPECT_FALSE(pref->HasUserSetting()); | 195 EXPECT_FALSE(pref->HasUserSetting()); |
| 192 const base::Value* value = pref->GetValue(); | 196 const base::Value* value = pref->GetValue(); |
| 193 ASSERT_TRUE(value); | 197 ASSERT_TRUE(value); |
| 194 EXPECT_TRUE(expected_value.Equals(value)); | 198 EXPECT_TRUE(expected_value.Equals(value)); |
| 195 } | 199 } |
| 196 | 200 |
| 197 void RecommendationRestorerTest::VerifyPrefsFollowRecommendations() const { | 201 void RecommendationRestorerTest::VerifyPrefsFollowRecommendations() const { |
| 198 VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled, | 202 VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled, |
| 199 base::FundamentalValue(false)); | 203 base::FundamentalValue(false)); |
| 200 VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled, | 204 VerifyPrefFollowsRecommendation(prefs::kSpokenFeedbackEnabled, |
| 201 base::FundamentalValue(false)); | 205 base::FundamentalValue(false)); |
| 202 VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled, | 206 VerifyPrefFollowsRecommendation(prefs::kHighContrastEnabled, |
| 203 base::FundamentalValue(false)); | 207 base::FundamentalValue(false)); |
| 204 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, | 208 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, |
| 205 base::FundamentalValue(false)); | 209 base::FundamentalValue(false)); |
| 206 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, | 210 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, |
| 207 base::FundamentalValue(0)); | 211 base::FundamentalValue(0)); |
| 212 VerifyPrefFollowsRecommendation(prefs::kVirtualKeyboardEnabled, |
| 213 base::FundamentalValue(false)); |
| 208 } | 214 } |
| 209 | 215 |
| 210 void RecommendationRestorerTest::VerifyNotListeningForNotifications() const { | 216 void RecommendationRestorerTest::VerifyNotListeningForNotifications() const { |
| 211 ASSERT_TRUE(restorer_); | 217 ASSERT_TRUE(restorer_); |
| 212 EXPECT_TRUE(restorer_->pref_change_registrar_.IsEmpty()); | 218 EXPECT_TRUE(restorer_->pref_change_registrar_.IsEmpty()); |
| 213 EXPECT_TRUE(restorer_->notification_registrar_.IsEmpty()); | 219 EXPECT_TRUE(restorer_->notification_registrar_.IsEmpty()); |
| 214 } | 220 } |
| 215 | 221 |
| 216 void RecommendationRestorerTest::VerifyTimerIsStopped() const { | 222 void RecommendationRestorerTest::VerifyTimerIsStopped() const { |
| 217 ASSERT_TRUE(restorer_); | 223 ASSERT_TRUE(restorer_); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled, | 313 VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled, |
| 308 base::FundamentalValue(true)); | 314 base::FundamentalValue(true)); |
| 309 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, | 315 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, |
| 310 base::FundamentalValue(ash::MAGNIFIER_FULL)); | 316 base::FundamentalValue(ash::MAGNIFIER_FULL)); |
| 311 VerifyTimerIsRunning(); | 317 VerifyTimerIsRunning(); |
| 312 runner_->RunUntilIdle(); | 318 runner_->RunUntilIdle(); |
| 313 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, | 319 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, |
| 314 base::FundamentalValue(false)); | 320 base::FundamentalValue(false)); |
| 315 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, | 321 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, |
| 316 base::FundamentalValue(0)); | 322 base::FundamentalValue(0)); |
| 317 | 323 VerifyTimerIsStopped(); |
| 324 recommended_prefs_->SetBoolean(prefs::kVirtualKeyboardEnabled, false); |
| 325 VerifyPrefFollowsUser(prefs::kVirtualKeyboardEnabled, |
| 326 base::FundamentalValue(true)); |
| 327 VerifyTimerIsRunning(); |
| 328 runner_->RunUntilIdle(); |
| 329 VerifyPrefFollowsRecommendation(prefs::kVirtualKeyboardEnabled, |
| 330 base::FundamentalValue(false)); |
| 318 VerifyTimerIsStopped(); | 331 VerifyTimerIsStopped(); |
| 319 } | 332 } |
| 320 | 333 |
| 321 TEST_F(RecommendationRestorerTest, RestoreOnRecommendationChangeInUserSession) { | 334 TEST_F(RecommendationRestorerTest, RestoreOnRecommendationChangeInUserSession) { |
| 322 // Verifies that if recommended values change while a user session is in | 335 // Verifies that if recommended values change while a user session is in |
| 323 // progress, user settings are cleared immediately. | 336 // progress, user settings are cleared immediately. |
| 324 RegisterLoginProfilePrefs(); | 337 RegisterLoginProfilePrefs(); |
| 325 SetUserSettings(); | 338 SetUserSettings(); |
| 326 | 339 |
| 327 CreateLoginProfile(); | 340 CreateLoginProfile(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 352 base::FundamentalValue(true)); | 365 base::FundamentalValue(true)); |
| 353 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, | 366 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, |
| 354 base::FundamentalValue(ash::MAGNIFIER_FULL)); | 367 base::FundamentalValue(ash::MAGNIFIER_FULL)); |
| 355 recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false); | 368 recommended_prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, false); |
| 356 recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0); | 369 recommended_prefs_->SetInteger(prefs::kScreenMagnifierType, 0); |
| 357 VerifyTimerIsStopped(); | 370 VerifyTimerIsStopped(); |
| 358 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, | 371 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, |
| 359 base::FundamentalValue(false)); | 372 base::FundamentalValue(false)); |
| 360 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, | 373 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, |
| 361 base::FundamentalValue(0)); | 374 base::FundamentalValue(0)); |
| 375 |
| 376 VerifyPrefFollowsUser(prefs::kVirtualKeyboardEnabled, |
| 377 base::FundamentalValue(true)); |
| 378 recommended_prefs_->SetBoolean(prefs::kVirtualKeyboardEnabled, false); |
| 379 VerifyTimerIsStopped(); |
| 380 VerifyPrefFollowsRecommendation(prefs::kVirtualKeyboardEnabled, |
| 381 base::FundamentalValue(false)); |
| 362 } | 382 } |
| 363 | 383 |
| 364 TEST_F(RecommendationRestorerTest, DoNothingOnUserChange) { | 384 TEST_F(RecommendationRestorerTest, DoNothingOnUserChange) { |
| 365 // Verifies that if no recommended values have been set and user settings | 385 // Verifies that if no recommended values have been set and user settings |
| 366 // change, the user settings are not cleared immediately and no timer is | 386 // change, the user settings are not cleared immediately and no timer is |
| 367 // started that will clear the user settings eventually. | 387 // started that will clear the user settings eventually. |
| 368 RegisterLoginProfilePrefs(); | 388 RegisterLoginProfilePrefs(); |
| 369 CreateLoginProfile(); | 389 CreateLoginProfile(); |
| 370 | 390 |
| 371 prefs_->SetBoolean(prefs::kLargeCursorEnabled, true); | 391 prefs_->SetBoolean(prefs::kLargeCursorEnabled, true); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 388 base::FundamentalValue(true)); | 408 base::FundamentalValue(true)); |
| 389 VerifyTimerIsStopped(); | 409 VerifyTimerIsStopped(); |
| 390 | 410 |
| 391 prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true); | 411 prefs_->SetBoolean(prefs::kScreenMagnifierEnabled, true); |
| 392 prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL); | 412 prefs_->SetInteger(prefs::kScreenMagnifierType, ash::MAGNIFIER_FULL); |
| 393 VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled, | 413 VerifyPrefFollowsUser(prefs::kScreenMagnifierEnabled, |
| 394 base::FundamentalValue(true)); | 414 base::FundamentalValue(true)); |
| 395 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, | 415 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, |
| 396 base::FundamentalValue(ash::MAGNIFIER_FULL)); | 416 base::FundamentalValue(ash::MAGNIFIER_FULL)); |
| 397 VerifyTimerIsStopped(); | 417 VerifyTimerIsStopped(); |
| 418 |
| 419 prefs_->SetBoolean(prefs::kVirtualKeyboardEnabled, true); |
| 420 VerifyPrefFollowsUser(prefs::kVirtualKeyboardEnabled, |
| 421 base::FundamentalValue(true)); |
| 422 VerifyTimerIsStopped(); |
| 398 } | 423 } |
| 399 | 424 |
| 400 TEST_F(RecommendationRestorerTest, RestoreOnUserChange) { | 425 TEST_F(RecommendationRestorerTest, RestoreOnUserChange) { |
| 401 // Verifies that if recommended values have been set and user settings change | 426 // Verifies that if recommended values have been set and user settings change |
| 402 // while the login screen is being shown, a timer is started that will clear | 427 // while the login screen is being shown, a timer is started that will clear |
| 403 // the user settings eventually. | 428 // the user settings eventually. |
| 404 RegisterLoginProfilePrefs(); | 429 RegisterLoginProfilePrefs(); |
| 405 SetRecommendedValues(); | 430 SetRecommendedValues(); |
| 406 | 431 |
| 407 CreateLoginProfile(); | 432 CreateLoginProfile(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 441 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, | 466 VerifyPrefFollowsUser(prefs::kScreenMagnifierType, |
| 442 base::FundamentalValue(ash::MAGNIFIER_FULL)); | 467 base::FundamentalValue(ash::MAGNIFIER_FULL)); |
| 443 VerifyTimerIsRunning(); | 468 VerifyTimerIsRunning(); |
| 444 runner_->RunUntilIdle(); | 469 runner_->RunUntilIdle(); |
| 445 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, | 470 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierEnabled, |
| 446 base::FundamentalValue(false)); | 471 base::FundamentalValue(false)); |
| 447 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, | 472 VerifyPrefFollowsRecommendation(prefs::kScreenMagnifierType, |
| 448 base::FundamentalValue(0)); | 473 base::FundamentalValue(0)); |
| 449 | 474 |
| 450 VerifyTimerIsStopped(); | 475 VerifyTimerIsStopped(); |
| 476 prefs_->SetBoolean(prefs::kVirtualKeyboardEnabled, true); |
| 477 VerifyPrefFollowsUser(prefs::kVirtualKeyboardEnabled, |
| 478 base::FundamentalValue(true)); |
| 479 VerifyTimerIsRunning(); |
| 480 runner_->RunUntilIdle(); |
| 481 VerifyPrefFollowsRecommendation(prefs::kVirtualKeyboardEnabled, |
| 482 base::FundamentalValue(false)); |
| 483 |
| 484 VerifyTimerIsStopped(); |
| 451 } | 485 } |
| 452 | 486 |
| 453 TEST_F(RecommendationRestorerTest, RestoreOnSessionStart) { | 487 TEST_F(RecommendationRestorerTest, RestoreOnSessionStart) { |
| 454 // Verifies that if recommended values have been set, user settings have | 488 // Verifies that if recommended values have been set, user settings have |
| 455 // changed and a session is then started, the user settings are cleared | 489 // changed and a session is then started, the user settings are cleared |
| 456 // immediately and the timer that would have cleared them eventually on the | 490 // immediately and the timer that would have cleared them eventually on the |
| 457 // login screen is stopped. | 491 // login screen is stopped. |
| 458 RegisterLoginProfilePrefs(); | 492 RegisterLoginProfilePrefs(); |
| 459 SetRecommendedValues(); | 493 SetRecommendedValues(); |
| 460 | 494 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 | 533 |
| 500 // Fast forward until the reset timer fires. | 534 // Fast forward until the reset timer fires. |
| 501 VerifyTimerIsRunning(); | 535 VerifyTimerIsRunning(); |
| 502 runner_->RunUntilIdle(); | 536 runner_->RunUntilIdle(); |
| 503 VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled, | 537 VerifyPrefFollowsRecommendation(prefs::kLargeCursorEnabled, |
| 504 base::FundamentalValue(false)); | 538 base::FundamentalValue(false)); |
| 505 VerifyTimerIsStopped(); | 539 VerifyTimerIsStopped(); |
| 506 } | 540 } |
| 507 | 541 |
| 508 } // namespace policy | 542 } // namespace policy |
| OLD | NEW |