OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 <map> | 5 #include <map> |
6 #include <set> | 6 #include <set> |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 } | 412 } |
413 | 413 |
414 } // namespace | 414 } // namespace |
415 | 415 |
416 class DeviceLocalAccountTest : public DevicePolicyCrosBrowserTest, | 416 class DeviceLocalAccountTest : public DevicePolicyCrosBrowserTest, |
417 public user_manager::UserManager::Observer, | 417 public user_manager::UserManager::Observer, |
418 public chrome::BrowserListObserver, | 418 public chrome::BrowserListObserver, |
419 public extensions::AppWindowRegistry::Observer { | 419 public extensions::AppWindowRegistry::Observer { |
420 protected: | 420 protected: |
421 DeviceLocalAccountTest() | 421 DeviceLocalAccountTest() |
422 : user_id_1_(GenerateDeviceLocalAccountUserId( | 422 : user_id_1_(AccountId::FromUserEmail(GenerateDeviceLocalAccountUserId( |
423 kAccountId1, DeviceLocalAccount::TYPE_PUBLIC_SESSION)), | 423 kAccountId1, |
424 user_id_2_(GenerateDeviceLocalAccountUserId( | 424 DeviceLocalAccount::TYPE_PUBLIC_SESSION))), |
425 kAccountId2, DeviceLocalAccount::TYPE_PUBLIC_SESSION)), | 425 user_id_2_(AccountId::FromUserEmail(GenerateDeviceLocalAccountUserId( |
426 public_session_input_method_id_(base::StringPrintf( | 426 kAccountId2, |
427 kPublicSessionInputMethodIDTemplate, | 427 DeviceLocalAccount::TYPE_PUBLIC_SESSION))), |
428 chromeos::extension_ime_util::kXkbExtensionId)), | 428 public_session_input_method_id_( |
| 429 base::StringPrintf(kPublicSessionInputMethodIDTemplate, |
| 430 chromeos::extension_ime_util::kXkbExtensionId)), |
429 contents_(NULL) { | 431 contents_(NULL) { |
430 set_exit_when_last_browser_closes(false); | 432 set_exit_when_last_browser_closes(false); |
431 } | 433 } |
432 | 434 |
433 ~DeviceLocalAccountTest() override {} | 435 ~DeviceLocalAccountTest() override {} |
434 | 436 |
435 void SetUp() override { | 437 void SetUp() override { |
436 // Configure and start the test server. | 438 // Configure and start the test server. |
437 scoped_ptr<crypto::RSAPrivateKey> signing_key( | 439 scoped_ptr<crypto::RSAPrivateKey> signing_key( |
438 PolicyBuilder::CreateTestSigningKey()); | 440 PolicyBuilder::CreateTestSigningKey()); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
627 em::DeviceLocalAccountsProto* device_local_accounts = | 629 em::DeviceLocalAccountsProto* device_local_accounts = |
628 proto.mutable_device_local_accounts(); | 630 proto.mutable_device_local_accounts(); |
629 device_local_accounts->set_auto_login_id(kAccountId1); | 631 device_local_accounts->set_auto_login_id(kAccountId1); |
630 device_local_accounts->set_auto_login_delay(0); | 632 device_local_accounts->set_auto_login_delay(0); |
631 RefreshDevicePolicy(); | 633 RefreshDevicePolicy(); |
632 ASSERT_TRUE(test_server_.UpdatePolicy(dm_protocol::kChromeDevicePolicyType, | 634 ASSERT_TRUE(test_server_.UpdatePolicy(dm_protocol::kChromeDevicePolicyType, |
633 std::string(), | 635 std::string(), |
634 proto.SerializeAsString())); | 636 proto.SerializeAsString())); |
635 } | 637 } |
636 | 638 |
637 void CheckPublicSessionPresent(const std::string& id) { | 639 void CheckPublicSessionPresent(const AccountId& id) { |
638 const user_manager::User* user = | 640 const user_manager::User* user = |
639 user_manager::UserManager::Get()->FindUser(id); | 641 user_manager::UserManager::Get()->FindUser(id); |
640 ASSERT_TRUE(user); | 642 ASSERT_TRUE(user); |
641 EXPECT_EQ(id, user->email()); | 643 EXPECT_EQ(id, user->GetUserID()); |
642 EXPECT_EQ(user_manager::USER_TYPE_PUBLIC_ACCOUNT, user->GetType()); | 644 EXPECT_EQ(user_manager::USER_TYPE_PUBLIC_ACCOUNT, user->GetType()); |
643 } | 645 } |
644 | 646 |
645 base::FilePath GetExtensionCacheDirectoryForAccountID( | 647 base::FilePath GetExtensionCacheDirectoryForAccountID( |
646 const std::string& account_id) { | 648 const std::string& account_id) { |
647 base::FilePath extension_cache_root_dir; | 649 base::FilePath extension_cache_root_dir; |
648 if (!PathService::Get(chromeos::DIR_DEVICE_LOCAL_ACCOUNT_EXTENSIONS, | 650 if (!PathService::Get(chromeos::DIR_DEVICE_LOCAL_ACCOUNT_EXTENSIONS, |
649 &extension_cache_root_dir)) { | 651 &extension_cache_root_dir)) { |
650 ADD_FAILURE(); | 652 ADD_FAILURE(); |
651 } | 653 } |
(...skipping 25 matching lines...) Expand all Loading... |
677 const std::string& expected_display_name) { | 679 const std::string& expected_display_name) { |
678 DictionaryPrefValueWaiter("UserDisplayName", | 680 DictionaryPrefValueWaiter("UserDisplayName", |
679 user_id, | 681 user_id, |
680 expected_display_name).Wait(); | 682 expected_display_name).Wait(); |
681 } | 683 } |
682 | 684 |
683 void WaitForPolicy() { | 685 void WaitForPolicy() { |
684 // Wait for the display name becoming available as that indicates | 686 // Wait for the display name becoming available as that indicates |
685 // device-local account policy is fully loaded, which is a prerequisite for | 687 // device-local account policy is fully loaded, which is a prerequisite for |
686 // successful login. | 688 // successful login. |
687 WaitForDisplayName(user_id_1_, kDisplayName1); | 689 WaitForDisplayName(user_id_1_.GetUserEmail(), kDisplayName1); |
688 } | 690 } |
689 | 691 |
690 void ExpandPublicSessionPod(bool expect_advanced) { | 692 void ExpandPublicSessionPod(bool expect_advanced) { |
691 bool advanced = false; | 693 bool advanced = false; |
692 // Click on the pod to expand it. | 694 // Click on the pod to expand it. |
693 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 695 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
694 contents_, | 696 contents_, |
695 base::StringPrintf( | 697 base::StringPrintf( |
696 "var pod =" | 698 "var pod =" |
697 " document.getElementById('pod-row').getPodWithUsername_('%s');" | 699 " document.getElementById('pod-row').getPodWithUsername_('%s');" |
698 "pod.click();" | 700 "pod.click();" |
699 "domAutomationController.send(pod.classList.contains('advanced'));", | 701 "domAutomationController.send(pod.classList.contains('advanced'));", |
700 user_id_1_.c_str()), | 702 user_id_1_.GetUserEmail().c_str()), |
701 &advanced)); | 703 &advanced)); |
702 // Verify that the pod expanded to its basic/advanced form, as expected. | 704 // Verify that the pod expanded to its basic/advanced form, as expected. |
703 EXPECT_EQ(expect_advanced, advanced); | 705 EXPECT_EQ(expect_advanced, advanced); |
704 | 706 |
705 // Verify that the construction of the pod's language list did not affect | 707 // Verify that the construction of the pod's language list did not affect |
706 // the current ICU locale. | 708 // the current ICU locale. |
707 EXPECT_EQ(initial_language_, icu::Locale::getDefault().getLanguage()); | 709 EXPECT_EQ(initial_language_, icu::Locale::getDefault().getLanguage()); |
708 } | 710 } |
709 | 711 |
710 // GetKeyboardLayoutsForLocale() posts a task to a background task runner. | 712 // GetKeyboardLayoutsForLocale() posts a task to a background task runner. |
(...skipping 23 matching lines...) Expand all Loading... |
734 chromeos::LoginDisplayHostImpl* host = | 736 chromeos::LoginDisplayHostImpl* host = |
735 reinterpret_cast<chromeos::LoginDisplayHostImpl*>( | 737 reinterpret_cast<chromeos::LoginDisplayHostImpl*>( |
736 chromeos::LoginDisplayHostImpl::default_host()); | 738 chromeos::LoginDisplayHostImpl::default_host()); |
737 ASSERT_TRUE(host); | 739 ASSERT_TRUE(host); |
738 host->StartSignInScreen(LoginScreenContext()); | 740 host->StartSignInScreen(LoginScreenContext()); |
739 chromeos::ExistingUserController* controller = | 741 chromeos::ExistingUserController* controller = |
740 chromeos::ExistingUserController::current_controller(); | 742 chromeos::ExistingUserController::current_controller(); |
741 ASSERT_TRUE(controller); | 743 ASSERT_TRUE(controller); |
742 | 744 |
743 chromeos::UserContext user_context(user_manager::USER_TYPE_PUBLIC_ACCOUNT, | 745 chromeos::UserContext user_context(user_manager::USER_TYPE_PUBLIC_ACCOUNT, |
744 user_id_1_); | 746 user_id_1_.GetUserEmail()); |
745 user_context.SetPublicSessionLocale(locale); | 747 user_context.SetPublicSessionLocale(locale); |
746 user_context.SetPublicSessionInputMethod(input_method); | 748 user_context.SetPublicSessionInputMethod(input_method); |
747 controller->Login(user_context, chromeos::SigninSpecifics()); | 749 controller->Login(user_context, chromeos::SigninSpecifics()); |
748 } | 750 } |
749 | 751 |
750 void WaitForSessionStart() { | 752 void WaitForSessionStart() { |
751 if (IsSessionStarted()) | 753 if (IsSessionStarted()) |
752 return; | 754 return; |
753 content::WindowedNotificationObserver(chrome::NOTIFICATION_SESSION_STARTED, | 755 content::WindowedNotificationObserver(chrome::NOTIFICATION_SESSION_STARTED, |
754 base::Bind(IsSessionStarted)).Wait(); | 756 base::Bind(IsSessionStarted)).Wait(); |
(...skipping 25 matching lines...) Expand all Loading... |
780 WaitForPolicy(); | 782 WaitForPolicy(); |
781 | 783 |
782 WaitForSessionStart(); | 784 WaitForSessionStart(); |
783 | 785 |
784 EXPECT_EQ(locales[0], g_browser_process->GetApplicationLocale()); | 786 EXPECT_EQ(locales[0], g_browser_process->GetApplicationLocale()); |
785 EXPECT_EQ(l10n_util::GetLanguage(locales[0]), | 787 EXPECT_EQ(l10n_util::GetLanguage(locales[0]), |
786 icu::Locale::getDefault().getLanguage()); | 788 icu::Locale::getDefault().getLanguage()); |
787 VerifyKeyboardLayoutMatchesLocale(); | 789 VerifyKeyboardLayoutMatchesLocale(); |
788 } | 790 } |
789 | 791 |
790 const std::string user_id_1_; | 792 const AccountId user_id_1_; |
791 const std::string user_id_2_; | 793 const AccountId user_id_2_; |
792 const std::string public_session_input_method_id_; | 794 const std::string public_session_input_method_id_; |
793 | 795 |
794 std::string initial_locale_; | 796 std::string initial_locale_; |
795 std::string initial_language_; | 797 std::string initial_language_; |
796 | 798 |
797 scoped_ptr<base::RunLoop> run_loop_; | 799 scoped_ptr<base::RunLoop> run_loop_; |
798 | 800 |
799 UserPolicyBuilder device_local_account_policy_; | 801 UserPolicyBuilder device_local_account_policy_; |
800 LocalPolicyTestServer test_server_; | 802 LocalPolicyTestServer test_server_; |
801 | 803 |
802 content::WebContents* contents_; | 804 content::WebContents* contents_; |
803 | 805 |
804 private: | 806 private: |
805 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountTest); | 807 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountTest); |
806 }; | 808 }; |
807 | 809 |
808 static bool IsKnownUser(const std::string& account_id) { | 810 static bool IsKnownUser(const AccountId& account_id) { |
809 return user_manager::UserManager::Get()->IsKnownUser(account_id); | 811 return user_manager::UserManager::Get()->IsKnownUser(account_id); |
810 } | 812 } |
811 | 813 |
812 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, LoginScreen) { | 814 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, LoginScreen) { |
813 AddPublicSessionToDevicePolicy(kAccountId1); | 815 AddPublicSessionToDevicePolicy(kAccountId1); |
814 AddPublicSessionToDevicePolicy(kAccountId2); | 816 AddPublicSessionToDevicePolicy(kAccountId2); |
815 | 817 |
816 content::WindowedNotificationObserver(chrome::NOTIFICATION_USER_LIST_CHANGED, | 818 content::WindowedNotificationObserver(chrome::NOTIFICATION_USER_LIST_CHANGED, |
817 base::Bind(&IsKnownUser, user_id_1_)) | 819 base::Bind(&IsKnownUser, user_id_1_)) |
818 .Wait(); | 820 .Wait(); |
819 EXPECT_TRUE(IsKnownUser(user_id_2_)); | 821 EXPECT_TRUE(IsKnownUser(user_id_2_)); |
820 | 822 |
821 CheckPublicSessionPresent(user_id_1_); | 823 CheckPublicSessionPresent(user_id_1_); |
822 CheckPublicSessionPresent(user_id_2_); | 824 CheckPublicSessionPresent(user_id_2_); |
823 } | 825 } |
824 | 826 |
825 // Flaky: http://crbug.com/512670. | 827 // Flaky: http://crbug.com/512670. |
826 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, DISABLED_DisplayName) { | 828 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, DISABLED_DisplayName) { |
827 UploadAndInstallDeviceLocalAccountPolicy(); | 829 UploadAndInstallDeviceLocalAccountPolicy(); |
828 AddPublicSessionToDevicePolicy(kAccountId1); | 830 AddPublicSessionToDevicePolicy(kAccountId1); |
829 | 831 |
830 WaitForPolicy(); | 832 WaitForPolicy(); |
831 | 833 |
832 // Verify that the display name is shown in the UI. | 834 // Verify that the display name is shown in the UI. |
833 const std::string get_compact_pod_display_name = base::StringPrintf( | 835 const std::string get_compact_pod_display_name = base::StringPrintf( |
834 "domAutomationController.send(document.getElementById('pod-row')" | 836 "domAutomationController.send(document.getElementById('pod-row')" |
835 " .getPodWithUsername_('%s').nameElement.textContent);", | 837 " .getPodWithUsername_('%s').nameElement.textContent);", |
836 user_id_1_.c_str()); | 838 user_id_1_.GetUserEmail().c_str()); |
837 std::string display_name; | 839 std::string display_name; |
838 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 840 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
839 contents_, | 841 contents_, |
840 get_compact_pod_display_name, | 842 get_compact_pod_display_name, |
841 &display_name)); | 843 &display_name)); |
842 EXPECT_EQ(kDisplayName1, display_name); | 844 EXPECT_EQ(kDisplayName1, display_name); |
843 const std::string get_expanded_pod_display_name = base::StringPrintf( | 845 const std::string get_expanded_pod_display_name = base::StringPrintf( |
844 "domAutomationController.send(document.getElementById('pod-row')" | 846 "domAutomationController.send(document.getElementById('pod-row')" |
845 " .getPodWithUsername_('%s').querySelector('.expanded-pane-name')" | 847 " .getPodWithUsername_('%s').querySelector('.expanded-pane-name')" |
846 " .textContent);", | 848 " .textContent);", |
847 user_id_1_.c_str()); | 849 user_id_1_.GetUserEmail().c_str()); |
848 display_name.clear(); | 850 display_name.clear(); |
849 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 851 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
850 contents_, | 852 contents_, |
851 get_expanded_pod_display_name, | 853 get_expanded_pod_display_name, |
852 &display_name)); | 854 &display_name)); |
853 EXPECT_EQ(kDisplayName1, display_name); | 855 EXPECT_EQ(kDisplayName1, display_name); |
854 | 856 |
855 // Click on the pod to expand it. | 857 // Click on the pod to expand it. |
856 ASSERT_TRUE(content::ExecuteScript( | 858 ASSERT_TRUE(content::ExecuteScript( |
857 contents_, | 859 contents_, |
858 base::StringPrintf( | 860 base::StringPrintf( |
859 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 861 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
860 " .click();", | 862 " .click();", |
861 user_id_1_.c_str()))); | 863 user_id_1_.GetUserEmail().c_str()))); |
862 | 864 |
863 // Change the display name. | 865 // Change the display name. |
864 device_local_account_policy_.payload().mutable_userdisplayname()->set_value( | 866 device_local_account_policy_.payload().mutable_userdisplayname()->set_value( |
865 kDisplayName2); | 867 kDisplayName2); |
866 UploadAndInstallDeviceLocalAccountPolicy(); | 868 UploadAndInstallDeviceLocalAccountPolicy(); |
867 policy::BrowserPolicyConnectorChromeOS* connector = | 869 policy::BrowserPolicyConnectorChromeOS* connector = |
868 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 870 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
869 DeviceLocalAccountPolicyBroker* broker = | 871 DeviceLocalAccountPolicyBroker* broker = |
870 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( | 872 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( |
871 user_id_1_); | 873 user_id_1_.GetUserEmail()); |
872 ASSERT_TRUE(broker); | 874 ASSERT_TRUE(broker); |
873 broker->core()->store()->Load(); | 875 broker->core()->store()->Load(); |
874 WaitForDisplayName(user_id_1_, kDisplayName2); | 876 WaitForDisplayName(user_id_1_.GetUserEmail(), kDisplayName2); |
875 | 877 |
876 // Verify that the new display name is shown in the UI. | 878 // Verify that the new display name is shown in the UI. |
877 display_name.clear(); | 879 display_name.clear(); |
878 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 880 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
879 contents_, | 881 contents_, |
880 get_compact_pod_display_name, | 882 get_compact_pod_display_name, |
881 &display_name)); | 883 &display_name)); |
882 EXPECT_EQ(kDisplayName2, display_name); | 884 EXPECT_EQ(kDisplayName2, display_name); |
883 display_name.clear(); | 885 display_name.clear(); |
884 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 886 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
885 contents_, | 887 contents_, |
886 get_expanded_pod_display_name, | 888 get_expanded_pod_display_name, |
887 &display_name)); | 889 &display_name)); |
888 EXPECT_EQ(kDisplayName2, display_name); | 890 EXPECT_EQ(kDisplayName2, display_name); |
889 | 891 |
890 // Verify that the pod is still expanded. This indicates that the UI updated | 892 // Verify that the pod is still expanded. This indicates that the UI updated |
891 // without reloading and losing state. | 893 // without reloading and losing state. |
892 bool expanded = false; | 894 bool expanded = false; |
893 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 895 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
894 contents_, | 896 contents_, |
895 base::StringPrintf( | 897 base::StringPrintf( |
896 "domAutomationController.send(document.getElementById('pod-row')" | 898 "domAutomationController.send(document.getElementById('pod-row')" |
897 " .getPodWithUsername_('%s').expanded);", | 899 " .getPodWithUsername_('%s').expanded);", |
898 user_id_1_.c_str()), | 900 user_id_1_.GetUserEmail().c_str()), |
899 &expanded)); | 901 &expanded)); |
900 EXPECT_TRUE(expanded); | 902 EXPECT_TRUE(expanded); |
901 } | 903 } |
902 | 904 |
903 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, PolicyDownload) { | 905 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, PolicyDownload) { |
904 UploadDeviceLocalAccountPolicy(); | 906 UploadDeviceLocalAccountPolicy(); |
905 AddPublicSessionToDevicePolicy(kAccountId1); | 907 AddPublicSessionToDevicePolicy(kAccountId1); |
906 | 908 |
907 WaitForPolicy(); | 909 WaitForPolicy(); |
908 | 910 |
909 // Sanity check: The policy should be present now. | 911 // Sanity check: The policy should be present now. |
910 ASSERT_FALSE(session_manager_client()->device_local_account_policy( | 912 ASSERT_FALSE(session_manager_client()->device_local_account_policy( |
911 kAccountId1).empty()); | 913 kAccountId1).empty()); |
912 } | 914 } |
913 | 915 |
914 static bool IsNotKnownUser(const std::string& account_id) { | 916 static bool IsNotKnownUser(const AccountId& account_id) { |
915 return !IsKnownUser(account_id); | 917 return !IsKnownUser(account_id); |
916 } | 918 } |
917 | 919 |
918 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, AccountListChange) { | 920 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, AccountListChange) { |
919 AddPublicSessionToDevicePolicy(kAccountId1); | 921 AddPublicSessionToDevicePolicy(kAccountId1); |
920 AddPublicSessionToDevicePolicy(kAccountId2); | 922 AddPublicSessionToDevicePolicy(kAccountId2); |
921 | 923 |
922 content::WindowedNotificationObserver(chrome::NOTIFICATION_USER_LIST_CHANGED, | 924 content::WindowedNotificationObserver(chrome::NOTIFICATION_USER_LIST_CHANGED, |
923 base::Bind(&IsKnownUser, user_id_1_)) | 925 base::Bind(&IsKnownUser, user_id_1_)) |
924 .Wait(); | 926 .Wait(); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1071 // Verify that the app was downloaded to the account's extension cache. | 1073 // Verify that the app was downloaded to the account's extension cache. |
1072 base::FilePath test_dir; | 1074 base::FilePath test_dir; |
1073 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir)); | 1075 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir)); |
1074 EXPECT_TRUE(ContentsEqual( | 1076 EXPECT_TRUE(ContentsEqual( |
1075 GetCacheCRXFile(kAccountId1, kHostedAppID, kHostedAppVersion), | 1077 GetCacheCRXFile(kAccountId1, kHostedAppID, kHostedAppVersion), |
1076 test_dir.Append(kHostedAppCRXPath))); | 1078 test_dir.Append(kHostedAppCRXPath))); |
1077 | 1079 |
1078 // Verify that the extension was removed from the account's extension cache | 1080 // Verify that the extension was removed from the account's extension cache |
1079 // after the installation failure. | 1081 // after the installation failure. |
1080 DeviceLocalAccountPolicyBroker* broker = | 1082 DeviceLocalAccountPolicyBroker* broker = |
1081 g_browser_process->platform_part()->browser_policy_connector_chromeos()-> | 1083 g_browser_process->platform_part() |
1082 GetDeviceLocalAccountPolicyService()->GetBrokerForUser(user_id_1_); | 1084 ->browser_policy_connector_chromeos() |
| 1085 ->GetDeviceLocalAccountPolicyService() |
| 1086 ->GetBrokerForUser(user_id_1_.GetUserEmail()); |
1083 ASSERT_TRUE(broker); | 1087 ASSERT_TRUE(broker); |
1084 chromeos::ExternalCache* cache = | 1088 chromeos::ExternalCache* cache = |
1085 broker->extension_loader()->GetExternalCacheForTesting(); | 1089 broker->extension_loader()->GetExternalCacheForTesting(); |
1086 ASSERT_TRUE(cache); | 1090 ASSERT_TRUE(cache); |
1087 EXPECT_FALSE(cache->GetExtension(kGoodExtensionID, NULL, NULL)); | 1091 EXPECT_FALSE(cache->GetExtension(kGoodExtensionID, NULL, NULL)); |
1088 } | 1092 } |
1089 | 1093 |
1090 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, ExtensionsCached) { | 1094 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, ExtensionsCached) { |
1091 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 1095 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
1092 | 1096 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1144 EXPECT_TRUE(extension_service->GetExtensionById(kHostedAppID, true)); | 1148 EXPECT_TRUE(extension_service->GetExtensionById(kHostedAppID, true)); |
1145 | 1149 |
1146 // Verify that the extension was not installed. | 1150 // Verify that the extension was not installed. |
1147 EXPECT_FALSE(extension_service->GetExtensionById(kGoodExtensionID, true)); | 1151 EXPECT_FALSE(extension_service->GetExtensionById(kGoodExtensionID, true)); |
1148 | 1152 |
1149 // Verify that the app is still in the account's extension cache. | 1153 // Verify that the app is still in the account's extension cache. |
1150 EXPECT_TRUE(PathExists(cached_hosted_app)); | 1154 EXPECT_TRUE(PathExists(cached_hosted_app)); |
1151 | 1155 |
1152 // Verify that the extension was removed from the account's extension cache. | 1156 // Verify that the extension was removed from the account's extension cache. |
1153 DeviceLocalAccountPolicyBroker* broker = | 1157 DeviceLocalAccountPolicyBroker* broker = |
1154 g_browser_process->platform_part()->browser_policy_connector_chromeos()-> | 1158 g_browser_process->platform_part() |
1155 GetDeviceLocalAccountPolicyService()->GetBrokerForUser(user_id_1_); | 1159 ->browser_policy_connector_chromeos() |
| 1160 ->GetDeviceLocalAccountPolicyService() |
| 1161 ->GetBrokerForUser(user_id_1_.GetUserEmail()); |
1156 ASSERT_TRUE(broker); | 1162 ASSERT_TRUE(broker); |
1157 chromeos::ExternalCache* cache = | 1163 chromeos::ExternalCache* cache = |
1158 broker->extension_loader()->GetExternalCacheForTesting(); | 1164 broker->extension_loader()->GetExternalCacheForTesting(); |
1159 ASSERT_TRUE(cache); | 1165 ASSERT_TRUE(cache); |
1160 EXPECT_FALSE(cache->GetExtension(kGoodExtensionID, NULL, NULL)); | 1166 EXPECT_FALSE(cache->GetExtension(kGoodExtensionID, NULL, NULL)); |
1161 } | 1167 } |
1162 | 1168 |
1163 static void OnPutExtension(scoped_ptr<base::RunLoop>* run_loop, | 1169 static void OnPutExtension(scoped_ptr<base::RunLoop>* run_loop, |
1164 const base::FilePath& file_path, | 1170 const base::FilePath& file_path, |
1165 bool file_ownership_passed) { | 1171 bool file_ownership_passed) { |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1304 test::ConstructExternalDataReference(kExternalDataURL, kExternalData); | 1310 test::ConstructExternalDataReference(kExternalDataURL, kExternalData); |
1305 std::string policy; | 1311 std::string policy; |
1306 base::JSONWriter::Write(*metadata, &policy); | 1312 base::JSONWriter::Write(*metadata, &policy); |
1307 device_local_account_policy_.payload().mutable_useravatarimage()->set_value( | 1313 device_local_account_policy_.payload().mutable_useravatarimage()->set_value( |
1308 policy); | 1314 policy); |
1309 UploadAndInstallDeviceLocalAccountPolicy(); | 1315 UploadAndInstallDeviceLocalAccountPolicy(); |
1310 policy::BrowserPolicyConnectorChromeOS* connector = | 1316 policy::BrowserPolicyConnectorChromeOS* connector = |
1311 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 1317 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
1312 DeviceLocalAccountPolicyBroker* broker = | 1318 DeviceLocalAccountPolicyBroker* broker = |
1313 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( | 1319 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( |
1314 user_id_1_); | 1320 user_id_1_.GetUserEmail()); |
1315 ASSERT_TRUE(broker); | 1321 ASSERT_TRUE(broker); |
1316 broker->core()->store()->Load(); | 1322 broker->core()->store()->Load(); |
1317 | 1323 |
1318 // The external data should be fetched and cached automatically. Wait for this | 1324 // The external data should be fetched and cached automatically. Wait for this |
1319 // fetch. | 1325 // fetch. |
1320 run_loop->Run(); | 1326 run_loop->Run(); |
1321 | 1327 |
1322 // Stop serving external data at |kExternalDataURL|. | 1328 // Stop serving external data at |kExternalDataURL|. |
1323 fetcher_factory.reset(); | 1329 fetcher_factory.reset(); |
1324 | 1330 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1394 .spec(), | 1400 .spec(), |
1395 image_data), | 1401 image_data), |
1396 &policy); | 1402 &policy); |
1397 device_local_account_policy_.payload().mutable_useravatarimage()->set_value( | 1403 device_local_account_policy_.payload().mutable_useravatarimage()->set_value( |
1398 policy); | 1404 policy); |
1399 UploadAndInstallDeviceLocalAccountPolicy(); | 1405 UploadAndInstallDeviceLocalAccountPolicy(); |
1400 policy::BrowserPolicyConnectorChromeOS* connector = | 1406 policy::BrowserPolicyConnectorChromeOS* connector = |
1401 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 1407 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
1402 DeviceLocalAccountPolicyBroker* broker = | 1408 DeviceLocalAccountPolicyBroker* broker = |
1403 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( | 1409 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( |
1404 user_id_1_); | 1410 user_id_1_.GetUserEmail()); |
1405 ASSERT_TRUE(broker); | 1411 ASSERT_TRUE(broker); |
1406 | 1412 |
1407 run_loop_.reset(new base::RunLoop); | 1413 run_loop_.reset(new base::RunLoop); |
1408 user_manager::UserManager::Get()->AddObserver(this); | 1414 user_manager::UserManager::Get()->AddObserver(this); |
1409 broker->core()->store()->Load(); | 1415 broker->core()->store()->Load(); |
1410 run_loop_->Run(); | 1416 run_loop_->Run(); |
1411 user_manager::UserManager::Get()->RemoveObserver(this); | 1417 user_manager::UserManager::Get()->RemoveObserver(this); |
1412 | 1418 |
1413 scoped_ptr<gfx::ImageSkia> policy_image = chromeos::test::ImageLoader( | 1419 scoped_ptr<gfx::ImageSkia> policy_image = chromeos::test::ImageLoader( |
1414 test_dir.Append(chromeos::test::kUserAvatarImage1RelativePath)).Load(); | 1420 test_dir.Append(chromeos::test::kUserAvatarImage1RelativePath)).Load(); |
1415 ASSERT_TRUE(policy_image); | 1421 ASSERT_TRUE(policy_image); |
1416 | 1422 |
1417 const user_manager::User* user = | 1423 const user_manager::User* user = |
1418 user_manager::UserManager::Get()->FindUser(user_id_1_); | 1424 user_manager::UserManager::Get()->FindUser(user_id_1_); |
1419 ASSERT_TRUE(user); | 1425 ASSERT_TRUE(user); |
1420 | 1426 |
1421 base::FilePath user_data_dir; | 1427 base::FilePath user_data_dir; |
1422 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)); | 1428 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)); |
1423 const base::FilePath saved_image_path = | 1429 const base::FilePath saved_image_path = |
1424 user_data_dir.Append(user_id_1_).AddExtension("jpg"); | 1430 user_data_dir.Append(user_id_1_.GetUserEmail()).AddExtension("jpg"); |
1425 | 1431 |
1426 EXPECT_FALSE(user->HasDefaultImage()); | 1432 EXPECT_FALSE(user->HasDefaultImage()); |
1427 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); | 1433 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
1428 EXPECT_TRUE(chromeos::test::AreImagesEqual(*policy_image, user->GetImage())); | 1434 EXPECT_TRUE(chromeos::test::AreImagesEqual(*policy_image, user->GetImage())); |
1429 const base::DictionaryValue* images_pref = | 1435 const base::DictionaryValue* images_pref = |
1430 g_browser_process->local_state()->GetDictionary("user_image_info"); | 1436 g_browser_process->local_state()->GetDictionary("user_image_info"); |
1431 ASSERT_TRUE(images_pref); | 1437 ASSERT_TRUE(images_pref); |
1432 const base::DictionaryValue* image_properties; | 1438 const base::DictionaryValue* image_properties; |
1433 ASSERT_TRUE(images_pref->GetDictionaryWithoutPathExpansion( | 1439 ASSERT_TRUE(images_pref->GetDictionaryWithoutPathExpansion( |
1434 user_id_1_, | 1440 user_id_1_.GetUserEmail(), &image_properties)); |
1435 &image_properties)); | |
1436 int image_index; | 1441 int image_index; |
1437 std::string image_path; | 1442 std::string image_path; |
1438 ASSERT_TRUE(image_properties->GetInteger("index", &image_index)); | 1443 ASSERT_TRUE(image_properties->GetInteger("index", &image_index)); |
1439 ASSERT_TRUE(image_properties->GetString("path", &image_path)); | 1444 ASSERT_TRUE(image_properties->GetString("path", &image_path)); |
1440 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, image_index); | 1445 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, image_index); |
1441 EXPECT_EQ(saved_image_path.value(), image_path); | 1446 EXPECT_EQ(saved_image_path.value(), image_path); |
1442 | 1447 |
1443 scoped_ptr<gfx::ImageSkia> saved_image = | 1448 scoped_ptr<gfx::ImageSkia> saved_image = |
1444 chromeos::test::ImageLoader(saved_image_path).Load(); | 1449 chromeos::test::ImageLoader(saved_image_path).Load(); |
1445 ASSERT_TRUE(saved_image); | 1450 ASSERT_TRUE(saved_image); |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1611 WaitForPolicy(); | 1616 WaitForPolicy(); |
1612 | 1617 |
1613 ExpandPublicSessionPod(false); | 1618 ExpandPublicSessionPod(false); |
1614 | 1619 |
1615 // Click the enter button to start the session. | 1620 // Click the enter button to start the session. |
1616 ASSERT_TRUE(content::ExecuteScript( | 1621 ASSERT_TRUE(content::ExecuteScript( |
1617 contents_, | 1622 contents_, |
1618 base::StringPrintf( | 1623 base::StringPrintf( |
1619 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 1624 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
1620 " .querySelector('.enter-button').click();", | 1625 " .querySelector('.enter-button').click();", |
1621 user_id_1_.c_str()))); | 1626 user_id_1_.GetUserEmail().c_str()))); |
1622 | 1627 |
1623 WaitForSessionStart(); | 1628 WaitForSessionStart(); |
1624 | 1629 |
1625 // Verify that the locale has not changed and the first keyboard layout | 1630 // Verify that the locale has not changed and the first keyboard layout |
1626 // applicable to the locale was chosen. | 1631 // applicable to the locale was chosen. |
1627 EXPECT_EQ(initial_locale_, g_browser_process->GetApplicationLocale()); | 1632 EXPECT_EQ(initial_locale_, g_browser_process->GetApplicationLocale()); |
1628 EXPECT_EQ(initial_language_, icu::Locale::getDefault().getLanguage()); | 1633 EXPECT_EQ(initial_language_, icu::Locale::getDefault().getLanguage()); |
1629 VerifyKeyboardLayoutMatchesLocale(); | 1634 VerifyKeyboardLayoutMatchesLocale(); |
1630 } | 1635 } |
1631 | 1636 |
1632 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, NoRecommendedLocaleSwitch) { | 1637 IN_PROC_BROWSER_TEST_F(DeviceLocalAccountTest, NoRecommendedLocaleSwitch) { |
1633 UploadAndInstallDeviceLocalAccountPolicy(); | 1638 UploadAndInstallDeviceLocalAccountPolicy(); |
1634 AddPublicSessionToDevicePolicy(kAccountId1); | 1639 AddPublicSessionToDevicePolicy(kAccountId1); |
1635 | 1640 |
1636 WaitForPolicy(); | 1641 WaitForPolicy(); |
1637 | 1642 |
1638 ExpandPublicSessionPod(false); | 1643 ExpandPublicSessionPod(false); |
1639 | 1644 |
1640 // Click the link that switches the pod to its advanced form. Verify that the | 1645 // Click the link that switches the pod to its advanced form. Verify that the |
1641 // pod switches from basic to advanced. | 1646 // pod switches from basic to advanced. |
1642 bool advanced = false; | 1647 bool advanced = false; |
1643 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1648 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
1644 contents_, | 1649 contents_, |
1645 base::StringPrintf( | 1650 base::StringPrintf( |
1646 "var pod =" | 1651 "var pod =" |
1647 " document.getElementById('pod-row').getPodWithUsername_('%s');" | 1652 " document.getElementById('pod-row').getPodWithUsername_('%s');" |
1648 "pod.querySelector('.language-and-input').click();" | 1653 "pod.querySelector('.language-and-input').click();" |
1649 "domAutomationController.send(pod.classList.contains('advanced'));", | 1654 "domAutomationController.send(pod.classList.contains('advanced'));", |
1650 user_id_1_.c_str()), | 1655 user_id_1_.GetUserEmail().c_str()), |
1651 &advanced)); | 1656 &advanced)); |
1652 EXPECT_FALSE(advanced); | 1657 EXPECT_FALSE(advanced); |
1653 | 1658 |
1654 // Manually select a different locale. | 1659 // Manually select a different locale. |
1655 ASSERT_TRUE(content::ExecuteScript( | 1660 ASSERT_TRUE(content::ExecuteScript( |
1656 contents_, | 1661 contents_, |
1657 base::StringPrintf( | 1662 base::StringPrintf( |
1658 "var languageSelect = document.getElementById('pod-row')" | 1663 "var languageSelect = document.getElementById('pod-row')" |
1659 " .getPodWithUsername_('%s').querySelector('.language-select');" | 1664 " .getPodWithUsername_('%s').querySelector('.language-select');" |
1660 "languageSelect.value = '%s';" | 1665 "languageSelect.value = '%s';" |
1661 "var event = document.createEvent('HTMLEvents');" | 1666 "var event = document.createEvent('HTMLEvents');" |
1662 "event.initEvent('change', false, true);" | 1667 "event.initEvent('change', false, true);" |
1663 "languageSelect.dispatchEvent(event);", | 1668 "languageSelect.dispatchEvent(event);", |
1664 user_id_1_.c_str(), | 1669 user_id_1_.GetUserEmail().c_str(), kPublicSessionLocale))); |
1665 kPublicSessionLocale))); | |
1666 | 1670 |
1667 // The UI will have requested an updated list of keyboard layouts at this | 1671 // The UI will have requested an updated list of keyboard layouts at this |
1668 // point. Wait for the constructions of this list to finish. | 1672 // point. Wait for the constructions of this list to finish. |
1669 WaitForGetKeyboardLayoutsForLocaleToFinish(); | 1673 WaitForGetKeyboardLayoutsForLocaleToFinish(); |
1670 | 1674 |
1671 // Manually select a different keyboard layout and click the enter button to | 1675 // Manually select a different keyboard layout and click the enter button to |
1672 // start the session. | 1676 // start the session. |
1673 ASSERT_TRUE(content::ExecuteScript( | 1677 ASSERT_TRUE(content::ExecuteScript( |
1674 contents_, | 1678 contents_, |
1675 base::StringPrintf( | 1679 base::StringPrintf( |
1676 "var pod =" | 1680 "var pod =" |
1677 " document.getElementById('pod-row').getPodWithUsername_('%s');" | 1681 " document.getElementById('pod-row').getPodWithUsername_('%s');" |
1678 "pod.querySelector('.keyboard-select').value = '%s';" | 1682 "pod.querySelector('.keyboard-select').value = '%s';" |
1679 "pod.querySelector('.enter-button').click();", | 1683 "pod.querySelector('.enter-button').click();", |
1680 user_id_1_.c_str(), | 1684 user_id_1_.GetUserEmail().c_str(), |
1681 public_session_input_method_id_.c_str()))); | 1685 public_session_input_method_id_.c_str()))); |
1682 | 1686 |
1683 WaitForSessionStart(); | 1687 WaitForSessionStart(); |
1684 | 1688 |
1685 // Verify that the locale and keyboard layout have been applied. | 1689 // Verify that the locale and keyboard layout have been applied. |
1686 EXPECT_EQ(kPublicSessionLocale, g_browser_process->GetApplicationLocale()); | 1690 EXPECT_EQ(kPublicSessionLocale, g_browser_process->GetApplicationLocale()); |
1687 EXPECT_EQ(l10n_util::GetLanguage(kPublicSessionLocale), | 1691 EXPECT_EQ(l10n_util::GetLanguage(kPublicSessionLocale), |
1688 icu::Locale::getDefault().getLanguage()); | 1692 icu::Locale::getDefault().getLanguage()); |
1689 EXPECT_EQ(public_session_input_method_id_, | 1693 EXPECT_EQ(public_session_input_method_id_, |
1690 chromeos::input_method::InputMethodManager::Get() | 1694 chromeos::input_method::InputMethodManager::Get() |
(...skipping 12 matching lines...) Expand all Loading... |
1703 WaitForPolicy(); | 1707 WaitForPolicy(); |
1704 | 1708 |
1705 ExpandPublicSessionPod(false); | 1709 ExpandPublicSessionPod(false); |
1706 | 1710 |
1707 // Click the enter button to start the session. | 1711 // Click the enter button to start the session. |
1708 ASSERT_TRUE(content::ExecuteScript( | 1712 ASSERT_TRUE(content::ExecuteScript( |
1709 contents_, | 1713 contents_, |
1710 base::StringPrintf( | 1714 base::StringPrintf( |
1711 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 1715 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
1712 " .querySelector('.enter-button').click();", | 1716 " .querySelector('.enter-button').click();", |
1713 user_id_1_.c_str()))); | 1717 user_id_1_.GetUserEmail().c_str()))); |
1714 | 1718 |
1715 WaitForSessionStart(); | 1719 WaitForSessionStart(); |
1716 | 1720 |
1717 // Verify that the recommended locale has been applied and the first keyboard | 1721 // Verify that the recommended locale has been applied and the first keyboard |
1718 // layout applicable to the locale was chosen. | 1722 // layout applicable to the locale was chosen. |
1719 EXPECT_EQ(kSingleRecommendedLocale[0], | 1723 EXPECT_EQ(kSingleRecommendedLocale[0], |
1720 g_browser_process->GetApplicationLocale()); | 1724 g_browser_process->GetApplicationLocale()); |
1721 EXPECT_EQ(l10n_util::GetLanguage(kSingleRecommendedLocale[0]), | 1725 EXPECT_EQ(l10n_util::GetLanguage(kSingleRecommendedLocale[0]), |
1722 icu::Locale::getDefault().getLanguage()); | 1726 icu::Locale::getDefault().getLanguage()); |
1723 VerifyKeyboardLayoutMatchesLocale(); | 1727 VerifyKeyboardLayoutMatchesLocale(); |
(...skipping 12 matching lines...) Expand all Loading... |
1736 | 1740 |
1737 // Verify that the pod shows a list of locales beginning with the recommended | 1741 // Verify that the pod shows a list of locales beginning with the recommended |
1738 // ones, followed by others. | 1742 // ones, followed by others. |
1739 const std::string get_locale_list = base::StringPrintf( | 1743 const std::string get_locale_list = base::StringPrintf( |
1740 "var languageSelect = document.getElementById('pod-row')" | 1744 "var languageSelect = document.getElementById('pod-row')" |
1741 " .getPodWithUsername_('%s').querySelector('.language-select');" | 1745 " .getPodWithUsername_('%s').querySelector('.language-select');" |
1742 "var locales = [];" | 1746 "var locales = [];" |
1743 "for (var i = 0; i < languageSelect.length; ++i)" | 1747 "for (var i = 0; i < languageSelect.length; ++i)" |
1744 " locales.push(languageSelect.options[i].value);" | 1748 " locales.push(languageSelect.options[i].value);" |
1745 "domAutomationController.send(JSON.stringify(locales));", | 1749 "domAutomationController.send(JSON.stringify(locales));", |
1746 user_id_1_.c_str()); | 1750 user_id_1_.GetUserEmail().c_str()); |
1747 std::string json; | 1751 std::string json; |
1748 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, | 1752 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, |
1749 get_locale_list, | 1753 get_locale_list, |
1750 &json)); | 1754 &json)); |
1751 scoped_ptr<base::Value> value_ptr = base::JSONReader::Read(json); | 1755 scoped_ptr<base::Value> value_ptr = base::JSONReader::Read(json); |
1752 const base::ListValue* locales = NULL; | 1756 const base::ListValue* locales = NULL; |
1753 ASSERT_TRUE(value_ptr); | 1757 ASSERT_TRUE(value_ptr); |
1754 ASSERT_TRUE(value_ptr->GetAsList(&locales)); | 1758 ASSERT_TRUE(value_ptr->GetAsList(&locales)); |
1755 EXPECT_LT(arraysize(kRecommendedLocales1), locales->GetSize()); | 1759 EXPECT_LT(arraysize(kRecommendedLocales1), locales->GetSize()); |
1756 | 1760 |
(...skipping 10 matching lines...) Expand all Loading... |
1767 for (size_t i = 0; i < arraysize(kRecommendedLocales1); ++i) | 1771 for (size_t i = 0; i < arraysize(kRecommendedLocales1); ++i) |
1768 recommended_locales.insert(kRecommendedLocales1[i]); | 1772 recommended_locales.insert(kRecommendedLocales1[i]); |
1769 for (size_t i = arraysize(kRecommendedLocales1); i < locales->GetSize(); | 1773 for (size_t i = arraysize(kRecommendedLocales1); i < locales->GetSize(); |
1770 ++i) { | 1774 ++i) { |
1771 std::string locale; | 1775 std::string locale; |
1772 EXPECT_TRUE(locales->GetString(i, &locale)); | 1776 EXPECT_TRUE(locales->GetString(i, &locale)); |
1773 EXPECT_EQ(recommended_locales.end(), recommended_locales.find(locale)); | 1777 EXPECT_EQ(recommended_locales.end(), recommended_locales.find(locale)); |
1774 } | 1778 } |
1775 | 1779 |
1776 // Verify that the first recommended locale is selected. | 1780 // Verify that the first recommended locale is selected. |
1777 const std::string get_selected_locale = | 1781 const std::string get_selected_locale = base::StringPrintf( |
1778 base::StringPrintf( | 1782 "domAutomationController.send(document.getElementById('pod-row')" |
1779 "domAutomationController.send(document.getElementById('pod-row')" | 1783 " .getPodWithUsername_('%s').querySelector('.language-select')" |
1780 " .getPodWithUsername_('%s').querySelector('.language-select')" | 1784 " .value);", |
1781 " .value);", | 1785 user_id_1_.GetUserEmail().c_str()); |
1782 user_id_1_.c_str()); | |
1783 std::string selected_locale; | 1786 std::string selected_locale; |
1784 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, | 1787 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, |
1785 get_selected_locale, | 1788 get_selected_locale, |
1786 &selected_locale)); | 1789 &selected_locale)); |
1787 EXPECT_EQ(kRecommendedLocales1[0], selected_locale); | 1790 EXPECT_EQ(kRecommendedLocales1[0], selected_locale); |
1788 | 1791 |
1789 // Change the list of recommended locales. | 1792 // Change the list of recommended locales. |
1790 SetRecommendedLocales(kRecommendedLocales2, arraysize(kRecommendedLocales2)); | 1793 SetRecommendedLocales(kRecommendedLocales2, arraysize(kRecommendedLocales2)); |
1791 | 1794 |
1792 // Also change the display name as it is easy to ensure that policy has been | 1795 // Also change the display name as it is easy to ensure that policy has been |
1793 // updated by waiting for a display name change. | 1796 // updated by waiting for a display name change. |
1794 device_local_account_policy_.payload().mutable_userdisplayname()->set_value( | 1797 device_local_account_policy_.payload().mutable_userdisplayname()->set_value( |
1795 kDisplayName2); | 1798 kDisplayName2); |
1796 UploadAndInstallDeviceLocalAccountPolicy(); | 1799 UploadAndInstallDeviceLocalAccountPolicy(); |
1797 policy::BrowserPolicyConnectorChromeOS* connector = | 1800 policy::BrowserPolicyConnectorChromeOS* connector = |
1798 g_browser_process->platform_part()->browser_policy_connector_chromeos(); | 1801 g_browser_process->platform_part()->browser_policy_connector_chromeos(); |
1799 DeviceLocalAccountPolicyBroker* broker = | 1802 DeviceLocalAccountPolicyBroker* broker = |
1800 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( | 1803 connector->GetDeviceLocalAccountPolicyService()->GetBrokerForUser( |
1801 user_id_1_); | 1804 user_id_1_.GetUserEmail()); |
1802 ASSERT_TRUE(broker); | 1805 ASSERT_TRUE(broker); |
1803 broker->core()->store()->Load(); | 1806 broker->core()->store()->Load(); |
1804 WaitForDisplayName(user_id_1_, kDisplayName2); | 1807 WaitForDisplayName(user_id_1_.GetUserEmail(), kDisplayName2); |
1805 | 1808 |
1806 // Verify that the new list of locales is shown in the UI. | 1809 // Verify that the new list of locales is shown in the UI. |
1807 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, | 1810 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, |
1808 get_locale_list, | 1811 get_locale_list, |
1809 &json)); | 1812 &json)); |
1810 value_ptr = base::JSONReader::Read(json); | 1813 value_ptr = base::JSONReader::Read(json); |
1811 locales = NULL; | 1814 locales = NULL; |
1812 ASSERT_TRUE(value_ptr); | 1815 ASSERT_TRUE(value_ptr); |
1813 ASSERT_TRUE(value_ptr->GetAsList(&locales)); | 1816 ASSERT_TRUE(value_ptr->GetAsList(&locales)); |
1814 EXPECT_LT(arraysize(kRecommendedLocales2), locales->GetSize()); | 1817 EXPECT_LT(arraysize(kRecommendedLocales2), locales->GetSize()); |
(...skipping 12 matching lines...) Expand all Loading... |
1827 // Manually select a different locale. | 1830 // Manually select a different locale. |
1828 ASSERT_TRUE(content::ExecuteScript( | 1831 ASSERT_TRUE(content::ExecuteScript( |
1829 contents_, | 1832 contents_, |
1830 base::StringPrintf( | 1833 base::StringPrintf( |
1831 "var languageSelect = document.getElementById('pod-row')" | 1834 "var languageSelect = document.getElementById('pod-row')" |
1832 " .getPodWithUsername_('%s').querySelector('.language-select');" | 1835 " .getPodWithUsername_('%s').querySelector('.language-select');" |
1833 "languageSelect.value = '%s';" | 1836 "languageSelect.value = '%s';" |
1834 "var event = document.createEvent('HTMLEvents');" | 1837 "var event = document.createEvent('HTMLEvents');" |
1835 "event.initEvent('change', false, true);" | 1838 "event.initEvent('change', false, true);" |
1836 "languageSelect.dispatchEvent(event);", | 1839 "languageSelect.dispatchEvent(event);", |
1837 user_id_1_.c_str(), | 1840 user_id_1_.GetUserEmail().c_str(), kPublicSessionLocale))); |
1838 kPublicSessionLocale))); | |
1839 | 1841 |
1840 // Change the list of recommended locales. | 1842 // Change the list of recommended locales. |
1841 SetRecommendedLocales(kRecommendedLocales2, arraysize(kRecommendedLocales2)); | 1843 SetRecommendedLocales(kRecommendedLocales2, arraysize(kRecommendedLocales2)); |
1842 device_local_account_policy_.payload().mutable_userdisplayname()->set_value( | 1844 device_local_account_policy_.payload().mutable_userdisplayname()->set_value( |
1843 kDisplayName1); | 1845 kDisplayName1); |
1844 UploadAndInstallDeviceLocalAccountPolicy(); | 1846 UploadAndInstallDeviceLocalAccountPolicy(); |
1845 broker->core()->store()->Load(); | 1847 broker->core()->store()->Load(); |
1846 WaitForDisplayName(user_id_1_, kDisplayName1); | 1848 WaitForDisplayName(user_id_1_.GetUserEmail(), kDisplayName1); |
1847 | 1849 |
1848 // Verify that the manually selected locale is still selected. | 1850 // Verify that the manually selected locale is still selected. |
1849 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, | 1851 ASSERT_TRUE(content::ExecuteScriptAndExtractString(contents_, |
1850 get_selected_locale, | 1852 get_selected_locale, |
1851 &selected_locale)); | 1853 &selected_locale)); |
1852 EXPECT_EQ(kPublicSessionLocale, selected_locale); | 1854 EXPECT_EQ(kPublicSessionLocale, selected_locale); |
1853 | 1855 |
1854 // The UI will request an updated list of keyboard layouts at this point. Wait | 1856 // The UI will request an updated list of keyboard layouts at this point. Wait |
1855 // for the constructions of this list to finish. | 1857 // for the constructions of this list to finish. |
1856 WaitForGetKeyboardLayoutsForLocaleToFinish(); | 1858 WaitForGetKeyboardLayoutsForLocaleToFinish(); |
1857 | 1859 |
1858 // Manually select a different keyboard layout. | 1860 // Manually select a different keyboard layout. |
1859 ASSERT_TRUE(content::ExecuteScript( | 1861 ASSERT_TRUE(content::ExecuteScript( |
1860 contents_, | 1862 contents_, |
1861 base::StringPrintf( | 1863 base::StringPrintf( |
1862 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 1864 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
1863 " .querySelector('.keyboard-select').value = '%s';", | 1865 " .querySelector('.keyboard-select').value = '%s';", |
1864 user_id_1_.c_str(), | 1866 user_id_1_.GetUserEmail().c_str(), |
1865 public_session_input_method_id_.c_str()))); | 1867 public_session_input_method_id_.c_str()))); |
1866 | 1868 |
1867 // Click on a different pod, causing focus to shift away and the pod to | 1869 // Click on a different pod, causing focus to shift away and the pod to |
1868 // contract. | 1870 // contract. |
1869 ASSERT_TRUE(content::ExecuteScript( | 1871 ASSERT_TRUE(content::ExecuteScript( |
1870 contents_, | 1872 contents_, |
1871 base::StringPrintf( | 1873 base::StringPrintf( |
1872 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 1874 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
1873 " .click();", | 1875 " .click();", |
1874 user_id_2_.c_str()))); | 1876 user_id_2_.GetUserEmail().c_str()))); |
1875 | 1877 |
1876 // Click on the pod again, causing it to expand again. Verify that the pod has | 1878 // Click on the pod again, causing it to expand again. Verify that the pod has |
1877 // kept all its state (the advanced form is being shown, the manually selected | 1879 // kept all its state (the advanced form is being shown, the manually selected |
1878 // locale and keyboard layout are selected). | 1880 // locale and keyboard layout are selected). |
1879 ASSERT_TRUE(content::ExecuteScriptAndExtractString( | 1881 ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
1880 contents_, | 1882 contents_, |
1881 base::StringPrintf( | 1883 base::StringPrintf( |
1882 "var pod =" | 1884 "var pod =" |
1883 " document.getElementById('pod-row').getPodWithUsername_('%s');" | 1885 " document.getElementById('pod-row').getPodWithUsername_('%s');" |
1884 "pod.click();" | 1886 "pod.click();" |
1885 "var state = {};" | 1887 "var state = {};" |
1886 "state.advanced = pod.classList.contains('advanced');" | 1888 "state.advanced = pod.classList.contains('advanced');" |
1887 "state.locale = pod.querySelector('.language-select').value;" | 1889 "state.locale = pod.querySelector('.language-select').value;" |
1888 "state.keyboardLayout = pod.querySelector('.keyboard-select').value;" | 1890 "state.keyboardLayout = pod.querySelector('.keyboard-select').value;" |
1889 "console.log(JSON.stringify(state));" | 1891 "console.log(JSON.stringify(state));" |
1890 "domAutomationController.send(JSON.stringify(state));", | 1892 "domAutomationController.send(JSON.stringify(state));", |
1891 user_id_1_.c_str()), | 1893 user_id_1_.GetUserEmail().c_str()), |
1892 &json)); | 1894 &json)); |
1893 LOG(ERROR) << json; | 1895 LOG(ERROR) << json; |
1894 value_ptr = base::JSONReader::Read(json); | 1896 value_ptr = base::JSONReader::Read(json); |
1895 const base::DictionaryValue* state = NULL; | 1897 const base::DictionaryValue* state = NULL; |
1896 ASSERT_TRUE(value_ptr); | 1898 ASSERT_TRUE(value_ptr); |
1897 ASSERT_TRUE(value_ptr->GetAsDictionary(&state)); | 1899 ASSERT_TRUE(value_ptr->GetAsDictionary(&state)); |
1898 bool advanced = false; | 1900 bool advanced = false; |
1899 EXPECT_TRUE(state->GetBoolean("advanced", &advanced)); | 1901 EXPECT_TRUE(state->GetBoolean("advanced", &advanced)); |
1900 EXPECT_TRUE(advanced); | 1902 EXPECT_TRUE(advanced); |
1901 EXPECT_TRUE(state->GetString("locale", &selected_locale)); | 1903 EXPECT_TRUE(state->GetString("locale", &selected_locale)); |
1902 EXPECT_EQ(kPublicSessionLocale, selected_locale); | 1904 EXPECT_EQ(kPublicSessionLocale, selected_locale); |
1903 std::string selected_keyboard_layout; | 1905 std::string selected_keyboard_layout; |
1904 EXPECT_TRUE(state->GetString("keyboardLayout", &selected_keyboard_layout)); | 1906 EXPECT_TRUE(state->GetString("keyboardLayout", &selected_keyboard_layout)); |
1905 EXPECT_EQ(public_session_input_method_id_, selected_keyboard_layout); | 1907 EXPECT_EQ(public_session_input_method_id_, selected_keyboard_layout); |
1906 | 1908 |
1907 // Click the enter button to start the session. | 1909 // Click the enter button to start the session. |
1908 ASSERT_TRUE(content::ExecuteScript( | 1910 ASSERT_TRUE(content::ExecuteScript( |
1909 contents_, | 1911 contents_, |
1910 base::StringPrintf( | 1912 base::StringPrintf( |
1911 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 1913 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
1912 " .querySelector('.enter-button').click();", | 1914 " .querySelector('.enter-button').click();", |
1913 user_id_1_.c_str()))); | 1915 user_id_1_.GetUserEmail().c_str()))); |
1914 | 1916 |
1915 WaitForSessionStart(); | 1917 WaitForSessionStart(); |
1916 | 1918 |
1917 // Verify that the locale and keyboard layout have been applied. | 1919 // Verify that the locale and keyboard layout have been applied. |
1918 EXPECT_EQ(kPublicSessionLocale, g_browser_process->GetApplicationLocale()); | 1920 EXPECT_EQ(kPublicSessionLocale, g_browser_process->GetApplicationLocale()); |
1919 EXPECT_EQ(l10n_util::GetLanguage(kPublicSessionLocale), | 1921 EXPECT_EQ(l10n_util::GetLanguage(kPublicSessionLocale), |
1920 icu::Locale::getDefault().getLanguage()); | 1922 icu::Locale::getDefault().getLanguage()); |
1921 EXPECT_EQ(public_session_input_method_id_, | 1923 EXPECT_EQ(public_session_input_method_id_, |
1922 chromeos::input_method::InputMethodManager::Get() | 1924 chromeos::input_method::InputMethodManager::Get() |
1923 ->GetActiveIMEState() | 1925 ->GetActiveIMEState() |
(...skipping 13 matching lines...) Expand all Loading... |
1937 // Click on the pod to expand it. Verify that the pod expands to its basic | 1939 // Click on the pod to expand it. Verify that the pod expands to its basic |
1938 // form as there is only one recommended locale. | 1940 // form as there is only one recommended locale. |
1939 bool advanced = false; | 1941 bool advanced = false; |
1940 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( | 1942 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
1941 contents_, | 1943 contents_, |
1942 base::StringPrintf( | 1944 base::StringPrintf( |
1943 "var pod =" | 1945 "var pod =" |
1944 " document.getElementById('pod-row').getPodWithUsername_('%s');" | 1946 " document.getElementById('pod-row').getPodWithUsername_('%s');" |
1945 "pod.click();" | 1947 "pod.click();" |
1946 "domAutomationController.send(pod.classList.contains('advanced'));", | 1948 "domAutomationController.send(pod.classList.contains('advanced'));", |
1947 user_id_1_.c_str()), | 1949 user_id_1_.GetUserEmail().c_str()), |
1948 &advanced)); | 1950 &advanced)); |
1949 EXPECT_FALSE(advanced); | 1951 EXPECT_FALSE(advanced); |
1950 EXPECT_EQ(l10n_util::GetLanguage(initial_locale_), | 1952 EXPECT_EQ(l10n_util::GetLanguage(initial_locale_), |
1951 icu::Locale::getDefault().getLanguage()); | 1953 icu::Locale::getDefault().getLanguage()); |
1952 | 1954 |
1953 // Click the enter button to start the session. | 1955 // Click the enter button to start the session. |
1954 ASSERT_TRUE(content::ExecuteScript( | 1956 ASSERT_TRUE(content::ExecuteScript( |
1955 contents_, | 1957 contents_, |
1956 base::StringPrintf( | 1958 base::StringPrintf( |
1957 "document.getElementById('pod-row').getPodWithUsername_('%s')" | 1959 "document.getElementById('pod-row').getPodWithUsername_('%s')" |
1958 " .querySelector('.enter-button').click();", | 1960 " .querySelector('.enter-button').click();", |
1959 user_id_1_.c_str()))); | 1961 user_id_1_.GetUserEmail().c_str()))); |
1960 | 1962 |
1961 WaitForSessionStart(); | 1963 WaitForSessionStart(); |
1962 | 1964 |
1963 // Verify that since the recommended locale was invalid, the locale has not | 1965 // Verify that since the recommended locale was invalid, the locale has not |
1964 // changed and the first keyboard layout applicable to the locale was chosen. | 1966 // changed and the first keyboard layout applicable to the locale was chosen. |
1965 EXPECT_EQ(initial_locale_, g_browser_process->GetApplicationLocale()); | 1967 EXPECT_EQ(initial_locale_, g_browser_process->GetApplicationLocale()); |
1966 EXPECT_EQ(l10n_util::GetLanguage(initial_locale_), | 1968 EXPECT_EQ(l10n_util::GetLanguage(initial_locale_), |
1967 icu::Locale::getDefault().getLanguage()); | 1969 icu::Locale::getDefault().getLanguage()); |
1968 VerifyKeyboardLayoutMatchesLocale(); | 1970 VerifyKeyboardLayoutMatchesLocale(); |
1969 } | 1971 } |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2042 // Select a different locale. | 2044 // Select a different locale. |
2043 ASSERT_TRUE(content::ExecuteScript( | 2045 ASSERT_TRUE(content::ExecuteScript( |
2044 contents_, | 2046 contents_, |
2045 base::StringPrintf( | 2047 base::StringPrintf( |
2046 "var languageSelect = document.getElementById('pod-row')" | 2048 "var languageSelect = document.getElementById('pod-row')" |
2047 " .getPodWithUsername_('%s').querySelector('.language-select');" | 2049 " .getPodWithUsername_('%s').querySelector('.language-select');" |
2048 "languageSelect.value = '%s';" | 2050 "languageSelect.value = '%s';" |
2049 "var event = document.createEvent('HTMLEvents');" | 2051 "var event = document.createEvent('HTMLEvents');" |
2050 "event.initEvent('change', false, true);" | 2052 "event.initEvent('change', false, true);" |
2051 "languageSelect.dispatchEvent(event);", | 2053 "languageSelect.dispatchEvent(event);", |
2052 user_id_1_.c_str(), | 2054 user_id_1_.GetUserEmail().c_str(), kPublicSessionLocale))); |
2053 kPublicSessionLocale))); | |
2054 | 2055 |
2055 // The UI will have requested an updated list of keyboard layouts at this | 2056 // The UI will have requested an updated list of keyboard layouts at this |
2056 // point. Wait for the constructions of this list to finish. | 2057 // point. Wait for the constructions of this list to finish. |
2057 WaitForGetKeyboardLayoutsForLocaleToFinish(); | 2058 WaitForGetKeyboardLayoutsForLocaleToFinish(); |
2058 | 2059 |
2059 // Set up an observer that will quit the message loop when login has succeeded | 2060 // Set up an observer that will quit the message loop when login has succeeded |
2060 // and the first wizard screen, if any, is being shown. | 2061 // and the first wizard screen, if any, is being shown. |
2061 base::RunLoop login_wait_run_loop; | 2062 base::RunLoop login_wait_run_loop; |
2062 chromeos::MockAuthStatusConsumer login_status_consumer; | 2063 chromeos::MockAuthStatusConsumer login_status_consumer; |
2063 EXPECT_CALL(login_status_consumer, OnAuthSuccess(_)).Times(1).WillOnce( | 2064 EXPECT_CALL(login_status_consumer, OnAuthSuccess(_)).Times(1).WillOnce( |
2064 InvokeWithoutArgs(&login_wait_run_loop, &base::RunLoop::Quit)); | 2065 InvokeWithoutArgs(&login_wait_run_loop, &base::RunLoop::Quit)); |
2065 chromeos::ExistingUserController* controller = | 2066 chromeos::ExistingUserController* controller = |
2066 chromeos::ExistingUserController::current_controller(); | 2067 chromeos::ExistingUserController::current_controller(); |
2067 ASSERT_TRUE(controller); | 2068 ASSERT_TRUE(controller); |
2068 controller->set_login_status_consumer(&login_status_consumer); | 2069 controller->set_login_status_consumer(&login_status_consumer); |
2069 | 2070 |
2070 // Manually select a different keyboard layout and click the enter button to | 2071 // Manually select a different keyboard layout and click the enter button to |
2071 // start the session. | 2072 // start the session. |
2072 ASSERT_TRUE(content::ExecuteScript( | 2073 ASSERT_TRUE(content::ExecuteScript( |
2073 contents_, | 2074 contents_, |
2074 base::StringPrintf( | 2075 base::StringPrintf( |
2075 "var pod =" | 2076 "var pod =" |
2076 " document.getElementById('pod-row').getPodWithUsername_('%s');" | 2077 " document.getElementById('pod-row').getPodWithUsername_('%s');" |
2077 "pod.querySelector('.keyboard-select').value = '%s';" | 2078 "pod.querySelector('.keyboard-select').value = '%s';" |
2078 "pod.querySelector('.enter-button').click();", | 2079 "pod.querySelector('.enter-button').click();", |
2079 user_id_1_.c_str(), | 2080 user_id_1_.GetUserEmail().c_str(), |
2080 public_session_input_method_id_.c_str()))); | 2081 public_session_input_method_id_.c_str()))); |
2081 | 2082 |
2082 // Spin the loop until the login observer fires. Then, unregister the | 2083 // Spin the loop until the login observer fires. Then, unregister the |
2083 // observer. | 2084 // observer. |
2084 login_wait_run_loop.Run(); | 2085 login_wait_run_loop.Run(); |
2085 controller->set_login_status_consumer(NULL); | 2086 controller->set_login_status_consumer(NULL); |
2086 | 2087 |
2087 // Verify that the Terms of Service screen is being shown. | 2088 // Verify that the Terms of Service screen is being shown. |
2088 chromeos::WizardController* wizard_controller = | 2089 chromeos::WizardController* wizard_controller = |
2089 chromeos::WizardController::default_controller(); | 2090 chromeos::WizardController::default_controller(); |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2383 ASSERT_TRUE(content::ExecuteScript(contents_, | 2384 ASSERT_TRUE(content::ExecuteScript(contents_, |
2384 "$('tos-accept-button').click();")); | 2385 "$('tos-accept-button').click();")); |
2385 | 2386 |
2386 WaitForSessionStart(); | 2387 WaitForSessionStart(); |
2387 } | 2388 } |
2388 | 2389 |
2389 INSTANTIATE_TEST_CASE_P(TermsOfServiceDownloadTestInstance, | 2390 INSTANTIATE_TEST_CASE_P(TermsOfServiceDownloadTestInstance, |
2390 TermsOfServiceDownloadTest, testing::Bool()); | 2391 TermsOfServiceDownloadTest, testing::Bool()); |
2391 | 2392 |
2392 } // namespace policy | 2393 } // namespace policy |
OLD | NEW |