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

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

Issue 882043006: Prevent single-app kiosk mode auto-launch if device is disabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/ui/login_display_host_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/login/kiosk_browsertest.cc
diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc
index 079e93733b332c4b66c0e130fee7b46d512070d4..37a3ae7a4a48750eb4549d4bd0b5b1e54bfe756c 100644
--- a/chrome/browser/chromeos/login/kiosk_browsertest.cc
+++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc
@@ -9,12 +9,16 @@
#include "base/bind_helpers.h"
#include "base/files/file_util.h"
#include "base/location.h"
+#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/path_service.h"
#include "base/prefs/pref_service.h"
+#include "base/run_loop.h"
+#include "base/single_thread_task_runner.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/synchronization/lock.h"
+#include "base/thread_task_runner_handle.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/app_mode/fake_cws.h"
#include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h"
@@ -25,6 +29,8 @@
#include "chrome/browser/chromeos/login/test/app_window_waiter.h"
#include "chrome/browser/chromeos/login/test/oobe_base_test.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
+#include "chrome/browser/chromeos/login/ui/login_display_host.h"
+#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
#include "chrome/browser/chromeos/login/users/fake_user_manager.h"
#include "chrome/browser/chromeos/login/users/mock_user_manager.h"
#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
@@ -32,6 +38,7 @@
#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/profiles/profile_helper.h"
+#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/device_oauth2_token_service.h"
#include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
@@ -47,6 +54,7 @@
#include "chromeos/chromeos_switches.h"
#include "chromeos/dbus/cryptohome_client.h"
#include "chromeos/disks/disk_mount_manager.h"
+#include "chromeos/settings/cros_settings_provider.h"
#include "components/signin/core/browser/signin_manager.h"
#include "components/signin/core/common/signin_pref_names.h"
#include "content/public/browser/browser_thread.h"
@@ -395,6 +403,68 @@ class AppDataLoadWaiter : public KioskAppManagerObserver {
DISALLOW_COPY_AND_ASSIGN(AppDataLoadWaiter);
};
+class CrosSettingsPermanentlyUntrustedMaker :
+ public DeviceSettingsService::Observer {
+ public:
+ CrosSettingsPermanentlyUntrustedMaker();
+
+ // DeviceSettingsService::Observer:
+ void OwnershipStatusChanged() override;
+ void DeviceSettingsUpdated() override;
+ void OnDeviceSettingsServiceShutdown() override;
+
+ private:
+ bool untrusted_check_running_;
+ base::RunLoop run_loop_;
+
+ void CheckIfUntrusted();
+
+ DISALLOW_COPY_AND_ASSIGN(CrosSettingsPermanentlyUntrustedMaker);
+};
+
+CrosSettingsPermanentlyUntrustedMaker::CrosSettingsPermanentlyUntrustedMaker()
+ : untrusted_check_running_(false) {
+ DeviceSettingsService::Get()->AddObserver(this);
+
+ policy::DevicePolicyCrosTestHelper().InstallOwnerKey();
+ DeviceSettingsService::Get()->OwnerKeySet(true);
+
+ run_loop_.Run();
+}
+
+void CrosSettingsPermanentlyUntrustedMaker::OwnershipStatusChanged() {
+ if (untrusted_check_running_)
+ return;
+
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&CrosSettingsPermanentlyUntrustedMaker::CheckIfUntrusted,
+ base::Unretained(this)));
+}
+
+void CrosSettingsPermanentlyUntrustedMaker::DeviceSettingsUpdated() {
+}
+
+void CrosSettingsPermanentlyUntrustedMaker::OnDeviceSettingsServiceShutdown() {
+}
+
+void CrosSettingsPermanentlyUntrustedMaker::CheckIfUntrusted() {
+ untrusted_check_running_ = true;
+ const CrosSettingsProvider::TrustedStatus trusted_status =
+ CrosSettings::Get()->PrepareTrustedValues(
+ base::Bind(&CrosSettingsPermanentlyUntrustedMaker::CheckIfUntrusted,
+ base::Unretained(this)));
+ if (trusted_status == CrosSettingsProvider::TEMPORARILY_UNTRUSTED)
+ return;
+ untrusted_check_running_ = false;
+
+ if (trusted_status == CrosSettingsProvider::TRUSTED)
+ return;
+
+ DeviceSettingsService::Get()->RemoveObserver(this);
+ run_loop_.Quit();
+}
+
} // namespace
class KioskTest : public OobeBaseTest {
@@ -703,11 +773,6 @@ class KioskTest : public OobeBaseTest {
return auto_lock.Pass();
}
- void MakeCrosSettingsPermanentlyUntrusted() {
- policy::DevicePolicyCrosTestHelper().InstallOwnerKey();
- DeviceSettingsService::Get()->OwnerKeySet(true);
- }
-
MockUserManager* mock_user_manager() { return mock_user_manager_.get(); }
void set_test_app_id(const std::string& test_app_id) {
@@ -1135,7 +1200,7 @@ IN_PROC_BROWSER_TEST_F(KioskTest, DoNotLaunchWhenUntrusted) {
SimulateNetworkOnline();
// Make cros settings untrusted.
- MakeCrosSettingsPermanentlyUntrusted();
+ CrosSettingsPermanentlyUntrustedMaker();
// Check that the attempt to start a kiosk app fails with an error.
LaunchApp(test_app_id(), false);
@@ -1153,7 +1218,9 @@ IN_PROC_BROWSER_TEST_F(KioskTest, DoNotLaunchWhenUntrusted) {
&ignored));
}
-IN_PROC_BROWSER_TEST_F(KioskTest, NoAutoLaunchWhenUntrusted) {
+// Verifies that a consumer device does not auto-launch kiosk mode when cros
+// settings are untrusted.
+IN_PROC_BROWSER_TEST_F(KioskTest, NoConsumerAutoLaunchWhenUntrusted) {
EnableConsumerKioskMode();
// Wait for and confirm the auto-launch warning.
@@ -1172,12 +1239,32 @@ IN_PROC_BROWSER_TEST_F(KioskTest, NoAutoLaunchWhenUntrusted) {
base::FundamentalValue(true));
// Make cros settings untrusted.
- MakeCrosSettingsPermanentlyUntrusted();
+ CrosSettingsPermanentlyUntrustedMaker();
// Check that the attempt to auto-launch a kiosk app fails with an error.
OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait();
}
+// Verifies that an enterprise device does not auto-launch kiosk mode when cros
+// settings are untrusted.
+IN_PROC_BROWSER_TEST_F(KioskTest, NoEnterpriseAutoLaunchWhenUntrusted) {
+ PrepareAppLaunch();
+ SimulateNetworkOnline();
+
+ // Make cros settings untrusted.
+ CrosSettingsPermanentlyUntrustedMaker();
+
+ // Trigger the code that handles auto-launch on enterprise devices. This would
+ // normally be called from ShowLoginWizard(), which runs so early that it is
+ // not to inject an auto-launch policy before it runs.
+ LoginDisplayHost* login_display_host = LoginDisplayHostImpl::default_host();
+ ASSERT_TRUE(login_display_host);
+ login_display_host->StartAppLaunch(test_app_id(), false);
+
+ // Check that no launch has started.
+ EXPECT_FALSE(login_display_host->GetAppLaunchController());
+}
+
class KioskUpdateTest : public KioskTest {
public:
KioskUpdateTest() {}
« no previous file with comments | « no previous file | chrome/browser/chromeos/login/ui/login_display_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698