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 "apps/app_window.h" | 5 #include "apps/app_window.h" |
6 #include "apps/app_window_registry.h" | 6 #include "apps/app_window_registry.h" |
7 #include "apps/ui/native_app_window.h" | 7 #include "apps/ui/native_app_window.h" |
8 #include "ash/desktop_background/desktop_background_controller.h" | 8 #include "ash/desktop_background/desktop_background_controller.h" |
9 #include "ash/desktop_background/desktop_background_controller_observer.h" | 9 #include "ash/desktop_background/desktop_background_controller_observer.h" |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 31 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
32 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" | 32 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" |
33 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h
" | 33 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h
" |
34 #include "chrome/browser/extensions/extension_service.h" | 34 #include "chrome/browser/extensions/extension_service.h" |
35 #include "chrome/browser/extensions/extension_test_message_listener.h" | 35 #include "chrome/browser/extensions/extension_test_message_listener.h" |
36 #include "chrome/browser/profiles/profile_impl.h" | 36 #include "chrome/browser/profiles/profile_impl.h" |
37 #include "chrome/browser/profiles/profiles_state.h" | 37 #include "chrome/browser/profiles/profiles_state.h" |
38 #include "chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.h" | 38 #include "chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.h" |
39 #include "chrome/common/chrome_constants.h" | 39 #include "chrome/common/chrome_constants.h" |
40 #include "chrome/common/chrome_paths.h" | 40 #include "chrome/common/chrome_paths.h" |
41 #include "chrome/common/chrome_switches.h" | |
42 #include "chrome/common/pref_names.h" | 41 #include "chrome/common/pref_names.h" |
43 #include "chromeos/chromeos_switches.h" | 42 #include "chromeos/chromeos_switches.h" |
44 #include "chromeos/dbus/cryptohome_client.h" | 43 #include "chromeos/dbus/cryptohome_client.h" |
45 #include "components/signin/core/common/signin_pref_names.h" | 44 #include "components/signin/core/common/signin_pref_names.h" |
46 #include "content/public/browser/notification_observer.h" | 45 #include "content/public/browser/notification_observer.h" |
47 #include "content/public/browser/notification_registrar.h" | 46 #include "content/public/browser/notification_registrar.h" |
48 #include "content/public/browser/notification_service.h" | 47 #include "content/public/browser/notification_service.h" |
49 #include "content/public/test/browser_test_utils.h" | 48 #include "content/public/test/browser_test_utils.h" |
50 #include "extensions/browser/extension_system.h" | 49 #include "extensions/browser/extension_system.h" |
51 #include "google_apis/gaia/gaia_constants.h" | 50 #include "google_apis/gaia/gaia_constants.h" |
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
863 // Show kiosk enable screen again. | 862 // Show kiosk enable screen again. |
864 GetLoginUI()->CallJavascriptFunction("cr.ui.Oobe.handleAccelerator", | 863 GetLoginUI()->CallJavascriptFunction("cr.ui.Oobe.handleAccelerator", |
865 base::StringValue("kiosk_enable")); | 864 base::StringValue("kiosk_enable")); |
866 | 865 |
867 // And it should show up. | 866 // And it should show up. |
868 content::WindowedNotificationObserver( | 867 content::WindowedNotificationObserver( |
869 chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE, | 868 chrome::NOTIFICATION_KIOSK_ENABLE_WARNING_VISIBLE, |
870 content::NotificationService::AllSources()).Wait(); | 869 content::NotificationService::AllSources()).Wait(); |
871 } | 870 } |
872 | 871 |
873 class KioskUpdateTest : public KioskTest, | 872 class KioskUpdateTest : public KioskTest { |
874 public testing::WithParamInterface<bool> { | |
875 public: | 873 public: |
876 KioskUpdateTest() {} | 874 KioskUpdateTest() {} |
877 virtual ~KioskUpdateTest() {} | 875 virtual ~KioskUpdateTest() {} |
878 | 876 |
879 protected: | 877 protected: |
880 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 878 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
881 // Needs background networking so that ExtensionDownloader works. | 879 // Needs background networking so that ExtensionDownloader works. |
882 needs_background_networking_ = true; | 880 needs_background_networking_ = true; |
883 | |
884 KioskTest::SetUpCommandLine(command_line); | 881 KioskTest::SetUpCommandLine(command_line); |
885 if (GetParam()) | |
886 command_line->AppendSwitch(::switches::kMultiProfiles); | |
887 } | 882 } |
888 | 883 |
889 virtual void SetUpOnMainThread() OVERRIDE { | 884 virtual void SetUpOnMainThread() OVERRIDE { |
890 KioskTest::SetUpOnMainThread(); | 885 KioskTest::SetUpOnMainThread(); |
891 } | 886 } |
892 | 887 |
893 private: | 888 private: |
894 | 889 |
895 DISALLOW_COPY_AND_ASSIGN(KioskUpdateTest); | 890 DISALLOW_COPY_AND_ASSIGN(KioskUpdateTest); |
896 }; | 891 }; |
897 | 892 |
898 IN_PROC_BROWSER_TEST_P(KioskUpdateTest, LaunchOfflineEnabledAppNoNetwork) { | 893 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchOfflineEnabledAppNoNetwork) { |
899 set_test_app_id(kTestOfflineEnabledKioskApp); | 894 set_test_app_id(kTestOfflineEnabledKioskApp); |
900 | 895 |
901 PrepareAppLaunch(); | 896 PrepareAppLaunch(); |
902 SimulateNetworkOffline(); | 897 SimulateNetworkOffline(); |
903 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); | 898 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); |
904 | 899 |
905 LaunchApp(test_app_id(), false); | 900 LaunchApp(test_app_id(), false); |
906 WaitForAppLaunchSuccess(); | 901 WaitForAppLaunchSuccess(); |
907 } | 902 } |
908 | 903 |
909 IN_PROC_BROWSER_TEST_P(KioskUpdateTest, LaunchOfflineEnabledAppNoUpdate) { | 904 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchOfflineEnabledAppNoUpdate) { |
910 set_test_app_id(kTestOfflineEnabledKioskApp); | 905 set_test_app_id(kTestOfflineEnabledKioskApp); |
911 | 906 |
912 fake_cws()->SetNoUpdate(test_app_id()); | 907 fake_cws()->SetNoUpdate(test_app_id()); |
913 | 908 |
914 PrepareAppLaunch(); | 909 PrepareAppLaunch(); |
915 SimulateNetworkOnline(); | 910 SimulateNetworkOnline(); |
916 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); | 911 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); |
917 | 912 |
918 LaunchApp(test_app_id(), false); | 913 LaunchApp(test_app_id(), false); |
919 WaitForAppLaunchSuccess(); | 914 WaitForAppLaunchSuccess(); |
920 | 915 |
921 EXPECT_EQ("1.0.0", GetInstalledAppVersion().GetString()); | 916 EXPECT_EQ("1.0.0", GetInstalledAppVersion().GetString()); |
922 } | 917 } |
923 | 918 |
924 IN_PROC_BROWSER_TEST_P(KioskUpdateTest, LaunchOfflineEnabledAppHasUpdate) { | 919 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, LaunchOfflineEnabledAppHasUpdate) { |
925 set_test_app_id(kTestOfflineEnabledKioskApp); | 920 set_test_app_id(kTestOfflineEnabledKioskApp); |
926 | 921 |
927 fake_cws()->SetUpdateCrx( | 922 fake_cws()->SetUpdateCrx( |
928 test_app_id(), "ajoggoflpgplnnjkjamcmbepjdjdnpdp.crx", "2.0.0"); | 923 test_app_id(), "ajoggoflpgplnnjkjamcmbepjdjdnpdp.crx", "2.0.0"); |
929 | 924 |
930 PrepareAppLaunch(); | 925 PrepareAppLaunch(); |
931 SimulateNetworkOnline(); | 926 SimulateNetworkOnline(); |
932 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); | 927 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); |
933 | 928 |
934 LaunchApp(test_app_id(), false); | 929 LaunchApp(test_app_id(), false); |
935 WaitForAppLaunchSuccess(); | 930 WaitForAppLaunchSuccess(); |
936 | 931 |
937 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); | 932 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); |
938 } | 933 } |
939 | 934 |
940 IN_PROC_BROWSER_TEST_P(KioskUpdateTest, PermissionChange) { | 935 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PermissionChange) { |
941 set_test_app_id(kTestOfflineEnabledKioskApp); | 936 set_test_app_id(kTestOfflineEnabledKioskApp); |
942 | 937 |
943 fake_cws()->SetUpdateCrx( | 938 fake_cws()->SetUpdateCrx( |
944 test_app_id(), | 939 test_app_id(), |
945 "ajoggoflpgplnnjkjamcmbepjdjdnpdp_v2_permission_change.crx", | 940 "ajoggoflpgplnnjkjamcmbepjdjdnpdp_v2_permission_change.crx", |
946 "2.0.0"); | 941 "2.0.0"); |
947 | 942 |
948 PrepareAppLaunch(); | 943 PrepareAppLaunch(); |
949 SimulateNetworkOnline(); | 944 SimulateNetworkOnline(); |
950 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); | 945 SetupAppProfile("chromeos/app_mode/offline_enabled_app_profile"); |
951 | 946 |
952 LaunchApp(test_app_id(), false); | 947 LaunchApp(test_app_id(), false); |
953 WaitForAppLaunchSuccess(); | 948 WaitForAppLaunchSuccess(); |
954 | 949 |
955 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); | 950 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); |
956 } | 951 } |
957 | 952 |
958 IN_PROC_BROWSER_TEST_P(KioskUpdateTest, PRE_PreserveLocalData) { | 953 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PRE_PreserveLocalData) { |
959 // Installs v1 app and writes some local data. | 954 // Installs v1 app and writes some local data. |
960 set_test_app_id(kTestLocalFsKioskApp); | 955 set_test_app_id(kTestLocalFsKioskApp); |
961 | 956 |
962 ResultCatcher catcher; | 957 ResultCatcher catcher; |
963 StartAppLaunchFromLoginScreen(SimulateNetworkOnlineClosure()); | 958 StartAppLaunchFromLoginScreen(SimulateNetworkOnlineClosure()); |
964 WaitForAppLaunchSuccess(); | 959 WaitForAppLaunchSuccess(); |
965 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); | 960 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
966 } | 961 } |
967 | 962 |
968 IN_PROC_BROWSER_TEST_P(KioskUpdateTest, PreserveLocalData) { | 963 IN_PROC_BROWSER_TEST_F(KioskUpdateTest, PreserveLocalData) { |
969 // Update existing v1 app installed in PRE_PreserveLocalData to v2 | 964 // Update existing v1 app installed in PRE_PreserveLocalData to v2 |
970 // that reads and verifies the local data. | 965 // that reads and verifies the local data. |
971 set_test_app_id(kTestLocalFsKioskApp); | 966 set_test_app_id(kTestLocalFsKioskApp); |
972 | 967 |
973 fake_cws()->SetUpdateCrx( | 968 fake_cws()->SetUpdateCrx( |
974 test_app_id(), | 969 test_app_id(), |
975 "bmbpicmpniaclbbpdkfglgipkkebnbjf_v2_read_and_verify_data.crx", | 970 "bmbpicmpniaclbbpdkfglgipkkebnbjf_v2_read_and_verify_data.crx", |
976 "2.0.0"); | 971 "2.0.0"); |
977 | 972 |
978 ResultCatcher catcher; | 973 ResultCatcher catcher; |
979 StartAppLaunchFromLoginScreen(SimulateNetworkOnlineClosure()); | 974 StartAppLaunchFromLoginScreen(SimulateNetworkOnlineClosure()); |
980 WaitForAppLaunchSuccess(); | 975 WaitForAppLaunchSuccess(); |
981 | 976 |
982 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); | 977 EXPECT_EQ("2.0.0", GetInstalledAppVersion().GetString()); |
983 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); | 978 ASSERT_TRUE(catcher.GetNextResult()) << catcher.message(); |
984 } | 979 } |
985 | 980 |
986 // TODO(xiyuan): Remove this after multi profile is turned on by default. | |
987 INSTANTIATE_TEST_CASE_P(KioskUpdateTestInstantiation, | |
988 KioskUpdateTest, | |
989 testing::Bool()); | |
990 | |
991 class KioskEnterpriseTest : public KioskTest { | 981 class KioskEnterpriseTest : public KioskTest { |
992 protected: | 982 protected: |
993 KioskEnterpriseTest() {} | 983 KioskEnterpriseTest() {} |
994 | 984 |
995 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 985 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
996 device_policy_test_helper_.MarkAsEnterpriseOwned(); | 986 device_policy_test_helper_.MarkAsEnterpriseOwned(); |
997 device_policy_test_helper_.InstallOwnerKey(); | 987 device_policy_test_helper_.InstallOwnerKey(); |
998 | 988 |
999 KioskTest::SetUpInProcessBrowserTestFixture(); | 989 KioskTest::SetUpInProcessBrowserTestFixture(); |
1000 } | 990 } |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1196 content::WindowedNotificationObserver( | 1186 content::WindowedNotificationObserver( |
1197 chrome::NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_VISIBLE, | 1187 chrome::NOTIFICATION_KIOSK_AUTOLAUNCH_WARNING_VISIBLE, |
1198 content::NotificationService::AllSources()).Wait(); | 1188 content::NotificationService::AllSources()).Wait(); |
1199 | 1189 |
1200 // Wait for the wallpaper to load. | 1190 // Wait for the wallpaper to load. |
1201 WaitForWallpaper(); | 1191 WaitForWallpaper(); |
1202 EXPECT_TRUE(wallpaper_loaded()); | 1192 EXPECT_TRUE(wallpaper_loaded()); |
1203 } | 1193 } |
1204 | 1194 |
1205 } // namespace chromeos | 1195 } // namespace chromeos |
OLD | NEW |