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

Unified Diff: chrome/browser/chromeos/login/login_screen_policy_browsertest.cc

Issue 2652793003: Add login screen locale and input method device policies (Closed)
Patch Set: Rebase. Created 3 years, 10 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/chromeos/login/login_screen_policy_browsertest.cc
diff --git a/chrome/browser/chromeos/login/login_screen_policy_browsertest.cc b/chrome/browser/chromeos/login/login_screen_policy_browsertest.cc
index 53534afe5008fa35442317dd15d5cbb88c2b934b..5d0d29c0afd3535406c75e5174fd904311c67575 100644
--- a/chrome/browser/chromeos/login/login_screen_policy_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_screen_policy_browsertest.cc
@@ -4,23 +4,37 @@
#include "base/command_line.h"
#include "base/memory/ref_counted.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/login/startup_utils.h"
#include "chrome/browser/chromeos/policy/device_policy_cros_browser_test.h"
#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
+#include "chrome/browser/lifetime/application_lifetime.h"
+#include "chrome/grit/generated_resources.h"
+#include "chrome/test/base/ui_test_utils.h"
#include "chromeos/chromeos_switches.h"
#include "chromeos/settings/cros_settings_names.h"
#include "components/user_manager/user_manager.h"
-#include "content/public/test/test_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/base/ime/chromeos/input_method_manager.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
namespace em = enterprise_management;
namespace chromeos {
class LoginScreenPolicyTest : public policy::DevicePolicyCrosBrowserTest {
+ public:
+ void RefreshDevicePolicyAndWaitForSettingChange(
+ const char* cros_setting_name);
+
+ protected:
void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(switches::kLoginManager);
+ command_line->AppendSwitch(switches::kForceLoginManagerInTests);
}
void SetUpInProcessBrowserTestFixture() override {
@@ -28,25 +42,94 @@ class LoginScreenPolicyTest : public policy::DevicePolicyCrosBrowserTest {
MarkAsEnterpriseOwned();
DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture();
}
-};
-IN_PROC_BROWSER_TEST_F(LoginScreenPolicyTest, DisableSupervisedUsers) {
- EXPECT_FALSE(user_manager::UserManager::Get()->AreSupervisedUsersAllowed());
+ void TearDownOnMainThread() override {
+ // This shuts down the login UI.
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(&chrome::AttemptExit));
+ base::RunLoop().RunUntilIdle();
+ }
+};
+void LoginScreenPolicyTest::RefreshDevicePolicyAndWaitForSettingChange(
+ const char* cros_setting_name) {
scoped_refptr<content::MessageLoopRunner> runner(
new content::MessageLoopRunner);
std::unique_ptr<CrosSettings::ObserverSubscription> subscription(
chromeos::CrosSettings::Get()->AddSettingsObserver(
- chromeos::kAccountsPrefSupervisedUsersEnabled,
- runner->QuitClosure()));
+ cros_setting_name, runner->QuitClosure()));
- em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
- proto.mutable_supervised_users_settings()->set_supervised_users_enabled(true);
RefreshDevicePolicy();
-
runner->Run();
+}
+
+IN_PROC_BROWSER_TEST_F(LoginScreenPolicyTest, DisableSupervisedUsers) {
+ EXPECT_FALSE(user_manager::UserManager::Get()->AreSupervisedUsersAllowed());
+
+ em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
+ proto.mutable_supervised_users_settings()->set_supervised_users_enabled(true);
+ RefreshDevicePolicyAndWaitForSettingChange(
+ chromeos::kAccountsPrefSupervisedUsersEnabled);
EXPECT_TRUE(user_manager::UserManager::Get()->AreSupervisedUsersAllowed());
}
+IN_PROC_BROWSER_TEST_F(LoginScreenPolicyTest, RestrictInputMethods) {
+ input_method::InputMethodManager* imm =
+ input_method::InputMethodManager::Get();
+ ASSERT_TRUE(imm);
+
+ ASSERT_EQ(0U, imm->GetActiveIMEState()->GetAllowedInputMethods().size());
+
+ em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
+ proto.mutable_login_screen_input_methods()->add_login_screen_input_methods(
+ "xkb:de::ger");
+ RefreshDevicePolicyAndWaitForSettingChange(
+ chromeos::kDeviceLoginScreenInputMethods);
+
+ ASSERT_EQ(1U, imm->GetActiveIMEState()->GetAllowedInputMethods().size());
+
+ // Remove the policy again
+ proto.mutable_login_screen_input_methods()
+ ->clear_login_screen_input_methods();
+ RefreshDevicePolicyAndWaitForSettingChange(
+ chromeos::kDeviceLoginScreenInputMethods);
+
+ ASSERT_EQ(0U, imm->GetActiveIMEState()->GetAllowedInputMethods().size());
+}
+
+class LoginScreenLocalePolicyTest : public LoginScreenPolicyTest {
+ protected:
+ LoginScreenLocalePolicyTest() {}
+
+ void SetUpInProcessBrowserTestFixture() override {
+ LoginScreenPolicyTest::SetUpInProcessBrowserTestFixture();
+
+ em::ChromeDeviceSettingsProto& proto(device_policy()->payload());
+ proto.mutable_login_screen_locales()->add_login_screen_locales("fr-FR");
+ RefreshDevicePolicy();
+ }
+};
+
+IN_PROC_BROWSER_TEST_F(LoginScreenLocalePolicyTest,
+ PRE_LoginLocaleEnforcedByPolicy) {
+ chromeos::StartupUtils::MarkOobeCompleted();
+}
+
+IN_PROC_BROWSER_TEST_F(LoginScreenLocalePolicyTest,
+ LoginLocaleEnforcedByPolicy) {
+ // Verifies that the default locale can be overridden with policy.
+ EXPECT_EQ("fr", g_browser_process->GetApplicationLocale());
+ base::string16 french_title =
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_SIGNING_IN);
+
+ // Make sure this is really French and differs from the English title.
+ std::string loaded =
+ ui::ResourceBundle::GetSharedInstance().ReloadLocaleResources("en-US");
+ EXPECT_EQ("en-US", loaded);
+ base::string16 english_title =
+ l10n_util::GetStringUTF16(IDS_LOGIN_POD_SIGNING_IN);
+ EXPECT_NE(french_title, english_title);
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698