19ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 29ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 39ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// found in the LICENSE file. 49ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 59ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/chromeos/power/power_prefs.h" 69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include <string> 89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/command_line.h" 109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/files/file_path.h" 119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/memory/ref_counted.h" 129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/prefs/pref_service.h" 139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/login/users/fake_user_manager.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/profiles/profile_helper.h" 179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/extensions/extension_special_storage_policy.h" 189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/prefs/browser_prefs.h" 199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/prefs/pref_service_syncable.h" 209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profile.h" 219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/browser/profiles/profile_manager.h" 229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/common/chrome_constants.h" 239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/common/pref_names.h" 249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/test/base/testing_browser_process.h" 259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/test/base/testing_pref_service_syncable.h" 269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/test/base/testing_profile.h" 279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chrome/test/base/testing_profile_manager.h" 289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chromeos/chromeos_switches.h" 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chromeos/dbus/dbus_thread_manager.h" 309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chromeos/dbus/fake_power_manager_client.h" 319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chromeos/dbus/power_manager/policy.pb.h" 329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "chromeos/dbus/power_policy_controller.h" 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/pref_registry/pref_registry_syncable.h" 349ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/notification_details.h" 359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/notification_service.h" 369ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/notification_source.h" 379ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 389ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 399ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace chromeos { 409ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 419ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass PowerPrefsTest : public testing::Test { 429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch protected: 439ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch PowerPrefsTest(); 449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // testing::Test: 469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual void SetUp() OVERRIDE; 479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch virtual void TearDown() OVERRIDE; 489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 499ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch const Profile* GetProfile() const; 509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch std::string GetExpectedPowerPolicyForProfile(Profile* profile) const; 529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch std::string GetCurrentPowerPolicy() const; 539ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch bool GetExpectedAllowScreenWakeLocksForProfile(Profile* profile) const; 549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch bool GetCurrentAllowScreenWakeLocks() const; 559ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 569ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch TestingProfileManager profile_manager_; 579ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch PowerPolicyController* power_policy_controller_; // Not owned. 589ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch FakePowerManagerClient* fake_power_manager_client_; // Not owned. 599ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch scoped_ptr<PowerPrefs> power_prefs_; 619ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 629ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch DISALLOW_COPY_AND_ASSIGN(PowerPrefsTest); 639ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}; 649ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochPowerPrefsTest::PowerPrefsTest() 669ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch : profile_manager_(TestingBrowserProcess::GetGlobal()), 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci power_policy_controller_(NULL), 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) fake_power_manager_client_(new FakePowerManagerClient) { 699ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 709ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 719ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochvoid PowerPrefsTest::SetUp() { 729ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch testing::Test::SetUp(); 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<DBusThreadManagerSetter> dbus_setter = 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chromeos::DBusThreadManager::GetSetterForTesting(); 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dbus_setter->SetPowerManagerClient( 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<PowerManagerClient>(fake_power_manager_client_)); 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Power policy controller is recreated with SetPowerManagerClient(). 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci power_policy_controller_ = 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chromeos::DBusThreadManager::Get()->GetPowerPolicyController(); 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 829ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch ASSERT_TRUE(profile_manager_.SetUp()); 839ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 849ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_.reset(new PowerPrefs(power_policy_controller_)); 859ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_FALSE(GetProfile()); 869ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(PowerPolicyController::GetPolicyDebugString( 879ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_manager::PowerManagementPolicy()), 889ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 899ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 909ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 919ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochvoid PowerPrefsTest::TearDown() { 929ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_.reset(); 939ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch testing::Test::TearDown(); 949ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 959ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 969ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochconst Profile* PowerPrefsTest::GetProfile() const { 979ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch return power_prefs_->profile_; 989ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 999ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1009ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochstd::string PowerPrefsTest::GetExpectedPowerPolicyForProfile( 1019ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch Profile* profile) const { 1029ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch const PrefService* prefs = profile->GetPrefs(); 1039ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_manager::PowerManagementPolicy expected_policy; 1049ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_ac_delays()->set_screen_dim_ms( 1059ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerAcScreenDimDelayMs)); 1069ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_ac_delays()->set_screen_off_ms( 1079ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerAcScreenOffDelayMs)); 1089ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_ac_delays()->set_screen_lock_ms( 1099ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerAcScreenLockDelayMs)); 1109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_ac_delays()->set_idle_warning_ms( 1119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerAcIdleWarningDelayMs)); 1129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_ac_delays()->set_idle_ms( 1139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerAcIdleDelayMs)); 1149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_battery_delays()->set_screen_dim_ms( 1159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerBatteryScreenDimDelayMs)); 1169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_battery_delays()->set_screen_off_ms( 1179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerBatteryScreenOffDelayMs)); 1189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_battery_delays()->set_screen_lock_ms( 1199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerBatteryScreenLockDelayMs)); 1209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_battery_delays()->set_idle_warning_ms( 1219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerBatteryIdleWarningDelayMs)); 1229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.mutable_battery_delays()->set_idle_ms( 1239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerBatteryIdleDelayMs)); 1249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_ac_idle_action( 1259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch static_cast<power_manager::PowerManagementPolicy_Action>( 1269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerAcIdleAction))); 1279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_battery_idle_action( 1289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch static_cast<power_manager::PowerManagementPolicy_Action>( 1299ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerBatteryIdleAction))); 1309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_lid_closed_action( 1319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch static_cast<power_manager::PowerManagementPolicy_Action>( 1329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetInteger(prefs::kPowerLidClosedAction))); 1339ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_use_audio_activity( 1349ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetBoolean(prefs::kPowerUseAudioActivity)); 1359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_use_video_activity( 1369ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetBoolean(prefs::kPowerUseVideoActivity)); 1379ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_presentation_screen_dim_delay_factor( 1389ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetDouble(prefs::kPowerPresentationScreenDimDelayFactor)); 1399ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_user_activity_screen_dim_delay_factor( 1409ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch prefs->GetDouble(prefs::kPowerUserActivityScreenDimDelayFactor)); 1411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) expected_policy.set_wait_for_initial_user_activity( 1421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) prefs->GetBoolean(prefs::kPowerWaitForInitialUserActivity)); 1439ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch expected_policy.set_reason("Prefs"); 1449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch return PowerPolicyController::GetPolicyDebugString(expected_policy); 1459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 1469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochstd::string PowerPrefsTest::GetCurrentPowerPolicy() const { 1489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch return PowerPolicyController::GetPolicyDebugString( 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) fake_power_manager_client_->policy()); 1509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 1519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochbool PowerPrefsTest::GetCurrentAllowScreenWakeLocks() const { 1539ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch return power_policy_controller_->honor_screen_wake_locks_; 1549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 1559ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1569ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochbool PowerPrefsTest::GetExpectedAllowScreenWakeLocksForProfile( 1579ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch Profile* profile) const { 1589ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch return profile->GetPrefs()->GetBoolean(prefs::kPowerAllowScreenWakeLocks); 1599ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 1609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1619ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochTEST_F(PowerPrefsTest, LoginScreen) { 1629ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Set up login profile. 1639ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch scoped_ptr<TestingPrefServiceSyncable> login_profile_prefs( 1649ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch new TestingPrefServiceSyncable); 1659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch chrome::RegisterLoginProfilePrefs(login_profile_prefs->registry()); 1663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TestingProfile::Builder builder; 1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) builder.SetPath( 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) profile_manager_.profiles_dir().AppendASCII(chrome::kInitialProfile)); 1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) builder.SetPrefService(login_profile_prefs.PassAs<PrefServiceSyncable>()); 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestingProfile* login_profile = builder.BuildIncognito( 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_manager_.CreateTestingProfile(chrome::kInitialProfile)); 1729ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1739ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Inform power_prefs_ that the login screen is being shown. 174a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, 1759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::Source<PowerPrefsTest>(this), 1769ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::NotificationService::NoDetails()); 1779ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1789ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(login_profile, GetProfile()); 1799ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedPowerPolicyForProfile(login_profile), 1809ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 1819ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedAllowScreenWakeLocksForProfile(login_profile), 1829ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentAllowScreenWakeLocks()); 1839ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1849ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch TestingProfile* other_profile = 1859ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch profile_manager_.CreateTestingProfile("other"); 1869ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1879ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Inform power_prefs_ that an unrelated profile has been destroyed. 1889ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_PROFILE_DESTROYED, 1899ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::Source<Profile>(other_profile), 1909ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::NotificationService::NoDetails()); 1919ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1929ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Verify that the login profile's power prefs are still being used. 1939ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(login_profile, GetProfile()); 1949ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedPowerPolicyForProfile(login_profile), 1959ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 1969ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedAllowScreenWakeLocksForProfile(login_profile), 1979ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentAllowScreenWakeLocks()); 1989ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 1999ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Inform power_prefs_ that the login profile has been destroyed. 2009ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_PROFILE_DESTROYED, 2019ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::Source<Profile>(login_profile), 2029ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::NotificationService::NoDetails()); 2039ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The login profile's prefs should still be used. 2059ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_FALSE(GetProfile()); 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(GetExpectedPowerPolicyForProfile(login_profile), 2079ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 2089ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 2099ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochTEST_F(PowerPrefsTest, UserSession) { 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci FakeUserManager* user_manager = new FakeUserManager(); 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScopedUserManagerEnabler user_manager_enabler(user_manager); 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Set up user profile. 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char test_user1[] = "test-user1@example.com"; 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user_manager->AddUser(test_user1); 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user_manager->LoginUser(test_user1); 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestingProfile* user_profile = 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_manager_.CreateTestingProfile(test_user1); 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch profile_manager_.SetLoggedIn(true); 2229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Inform power_prefs_ that a session has started. 2249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_SESSION_STARTED, 2259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::Source<PowerPrefsTest>(this), 2269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::NotificationService::NoDetails()); 2279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(user_profile, GetProfile()); 2299ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedPowerPolicyForProfile(user_profile), 2309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 2319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedAllowScreenWakeLocksForProfile(user_profile), 2329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentAllowScreenWakeLocks()); 2339ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const char test_user2[] = "test-user2@example.com"; 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user_manager->AddUser(test_user2); 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci user_manager->LoginUser(test_user2); 2379ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch TestingProfile* other_profile = 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci profile_manager_.CreateTestingProfile(test_user2); 2399ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2409ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Inform power_prefs_ that an unrelated profile has been destroyed. 2419ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_PROFILE_DESTROYED, 2429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::Source<Profile>(other_profile), 2439ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::NotificationService::NoDetails()); 2449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Verify that the user profile's power prefs are still being used. 2469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(user_profile, GetProfile()); 2479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedPowerPolicyForProfile(user_profile), 2489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 2499ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_EQ(GetExpectedAllowScreenWakeLocksForProfile(user_profile), 2509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentAllowScreenWakeLocks()); 2519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 252ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Simulate the login screen coming up as part of screen locking. 253a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_LOGIN_OR_LOCK_WEBUI_VISIBLE, 254ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::Source<PowerPrefsTest>(this), 255ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::NotificationService::NoDetails()); 256ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 257ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Verify that power policy didn't revert to login screen settings. 258ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(user_profile, GetProfile()); 259ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(GetExpectedPowerPolicyForProfile(user_profile), 260ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetCurrentPowerPolicy()); 261ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_EQ(GetExpectedAllowScreenWakeLocksForProfile(user_profile), 262ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetCurrentAllowScreenWakeLocks()); 263ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 2649ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // Inform power_prefs_ that the session has ended and the user profile has 2659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch // been destroyed. 2669ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch power_prefs_->Observe(chrome::NOTIFICATION_PROFILE_DESTROYED, 2679ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::Source<Profile>(user_profile), 2689ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch content::NotificationService::NoDetails()); 2699ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // The user profile's prefs should still be used. 2719ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch EXPECT_FALSE(GetProfile()); 2725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(GetExpectedPowerPolicyForProfile(user_profile), 2739ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch GetCurrentPowerPolicy()); 2749ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} 2759ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 2769ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch} // namespace chromeos 277