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 3 // found in the LICENSE file. 4 5 #include "base/command_line.h" 6 #include "base/memory/ref_counted.h" 7 #include "chrome/browser/chromeos/login/users/user_manager.h" 8 #include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h" 9 #include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" 10 #include "chrome/browser/chromeos/settings/cros_settings.h" 11 #include "chromeos/chromeos_switches.h" 12 #include "chromeos/settings/cros_settings_names.h" 13 #include "content/public/test/test_utils.h" 14 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gtest/include/gtest/gtest.h" 16 17 namespace em = enterprise_management; 18 19 namespace chromeos { 20 21 class LoginScreenPolicyTest : public policy::DevicePolicyCrosBrowserTest { 22 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 23 command_line->AppendSwitch(switches::kLoginManager); 24 } 25 26 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 27 InstallOwnerKey(); 28 MarkAsEnterpriseOwned(); 29 DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture(); 30 } 31 }; 32 33 IN_PROC_BROWSER_TEST_F(LoginScreenPolicyTest, DisableSupervisedUsers) { 34 EXPECT_FALSE(chromeos::UserManager::Get()->AreLocallyManagedUsersAllowed()); 35 36 scoped_refptr<content::MessageLoopRunner> runner( 37 new content::MessageLoopRunner); 38 scoped_ptr<CrosSettings::ObserverSubscription> subscription( 39 chromeos::CrosSettings::Get()->AddSettingsObserver( 40 chromeos::kAccountsPrefSupervisedUsersEnabled, 41 runner->QuitClosure())); 42 43 em::ChromeDeviceSettingsProto& proto(device_policy()->payload()); 44 proto.mutable_supervised_users_settings()->set_supervised_users_enabled(true); 45 RefreshDevicePolicy(); 46 47 runner->Run(); 48 49 EXPECT_TRUE(chromeos::UserManager::Get()->AreLocallyManagedUsersAllowed()); 50 } 51 52 } // namespace chromeos 53