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

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

Issue 1019283004: Switch to direct use of OwnerSettingsServiceChromeOS::Set() in tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 8 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/kiosk_browsertest.cc
diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc
index b583daf058d96750920cbb7594116561a9371fee..ad6d36b891f91697afc8756db32ce13e96ce4fa3 100644
--- a/chrome/browser/chromeos/login/kiosk_browsertest.cc
+++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <vector>
+
#include "ash/desktop_background/desktop_background_controller.h"
#include "ash/desktop_background/desktop_background_controller_observer.h"
#include "ash/shell.h"
@@ -14,11 +16,9 @@
#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"
@@ -35,13 +35,13 @@
#include "chrome/browser/chromeos/login/users/mock_user_manager.h"
#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/ownership/fake_owner_settings_service.h"
+#include "chrome/browser/chromeos/policy/device_local_account.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/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"
+#include "chrome/browser/chromeos/settings/scoped_cros_settings_test_helper.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile_impl.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -410,68 +410,6 @@ 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
// Boolean parameter is used to run this test for webview (true) and for
@@ -479,8 +417,10 @@ void CrosSettingsPermanentlyUntrustedMaker::CheckIfUntrusted() {
class KioskTest : public OobeBaseTest,
public testing::WithParamInterface<bool> {
public:
- KioskTest() : use_consumer_kiosk_mode_(true),
- fake_cws_(new FakeCWS) {
+ KioskTest()
+ : settings_helper_(false),
+ use_consumer_kiosk_mode_(true),
+ fake_cws_(new FakeCWS) {
set_use_webview(GetParam());
set_exit_when_last_browser_closes(false);
}
@@ -511,9 +451,13 @@ class KioskTest : public OobeBaseTest,
// Needed to avoid showing Gaia screen instead of owner signin for
// consumer network down test cases.
StartupUtils::MarkDeviceRegistered(base::Closure());
+ settings_helper_.ReplaceProvider(kAccountsPrefDeviceLocalAccounts);
+ owner_settings_service_ = settings_helper_.CreateOwnerSettingsService(
+ ProfileManager::GetPrimaryUserProfile());
}
void TearDownOnMainThread() override {
+ settings_helper_.RestoreProvider();
AppLaunchController::SetNetworkTimeoutCallbackForTesting(NULL);
AppLaunchSigninScreen::SetUserManagerForTesting(NULL);
@@ -541,8 +485,9 @@ class KioskTest : public OobeBaseTest,
SetupTestAppUpdateCheck();
// Remove then add to ensure NOTIFICATION_KIOSK_APPS_LOADED fires.
- KioskAppManager::Get()->RemoveApp(test_app_id_);
- KioskAppManager::Get()->AddApp(test_app_id_);
+ KioskAppManager::Get()->RemoveApp(test_app_id_,
+ owner_settings_service_.get());
+ KioskAppManager::Get()->AddApp(test_app_id_, owner_settings_service_.get());
}
void FireKioskAppSettingsChanged() {
@@ -559,8 +504,9 @@ class KioskTest : public OobeBaseTest,
void ReloadAutolaunchKioskApps() {
SetupTestAppUpdateCheck();
- KioskAppManager::Get()->AddApp(test_app_id_);
- KioskAppManager::Get()->SetAutoLaunchApp(test_app_id_);
+ KioskAppManager::Get()->AddApp(test_app_id_, owner_settings_service_.get());
+ KioskAppManager::Get()->SetAutoLaunchApp(test_app_id_,
+ owner_settings_service_.get());
}
void StartUIForAppLaunch() {
@@ -804,6 +750,9 @@ class KioskTest : public OobeBaseTest,
use_consumer_kiosk_mode_ = use;
}
+ ScopedCrosSettingsTestHelper settings_helper_;
+ scoped_ptr<FakeOwnerSettingsService> owner_settings_service_;
+
private:
bool use_consumer_kiosk_mode_;
std::string test_app_id_;
@@ -994,7 +943,7 @@ IN_PROC_BROWSER_TEST_P(KioskTest, LaunchAppUserCancel) {
OobeScreenWaiter splash_waiter(OobeDisplay::SCREEN_APP_LAUNCH_SPLASH);
splash_waiter.Wait();
- CrosSettings::Get()->SetBoolean(
+ settings_helper_.SetBoolean(
kAccountsPrefDeviceLocalAccountAutoLoginBailoutEnabled, true);
content::WindowedNotificationObserver signal(
chrome::NOTIFICATION_APP_TERMINATING,
@@ -1218,7 +1167,8 @@ IN_PROC_BROWSER_TEST_P(KioskTest, DoNotLaunchWhenUntrusted) {
SimulateNetworkOnline();
// Make cros settings untrusted.
- CrosSettingsPermanentlyUntrustedMaker();
+ settings_helper_.SetTrustedStatus(
+ CrosSettingsProvider::PERMANENTLY_UNTRUSTED);
// Check that the attempt to start a kiosk app fails with an error.
LaunchApp(test_app_id(), false);
@@ -1257,7 +1207,8 @@ IN_PROC_BROWSER_TEST_P(KioskTest, NoConsumerAutoLaunchWhenUntrusted) {
base::FundamentalValue(true));
// Make cros settings untrusted.
- CrosSettingsPermanentlyUntrustedMaker();
+ settings_helper_.SetTrustedStatus(
+ CrosSettingsProvider::PERMANENTLY_UNTRUSTED);
// Check that the attempt to auto-launch a kiosk app fails with an error.
OobeScreenWaiter(OobeDisplay::SCREEN_ERROR_MESSAGE).Wait();
@@ -1281,7 +1232,8 @@ IN_PROC_BROWSER_TEST_P(KioskTest, NoEnterpriseAutoLaunchWhenUntrusted) {
SimulateNetworkOnline();
// Make cros settings untrusted.
- CrosSettingsPermanentlyUntrustedMaker();
+ settings_helper_.SetTrustedStatus(
+ CrosSettingsProvider::PERMANENTLY_UNTRUSTED);
// Trigger the code that handles auto-launch on enterprise devices. This would
// normally be called from ShowLoginWizard(), which runs so early that it is
@@ -1313,7 +1265,19 @@ class KioskUpdateTest : public KioskTest {
KioskTest::TearDown();
}
- void SetUpOnMainThread() override { KioskTest::SetUpOnMainThread(); }
+ void SetUpOnMainThread() override {
+ // For update tests, we cache the app in the PRE part, and then we load it
+ // in the test, so we need to both store the apps list on teardown (so that
+ // the app manager would accept existing files in its extension cache on the
+ // next startup) and copy the list to our stub settings provider as well.
+ settings_helper_.CopyStoredValue(kAccountsPrefDeviceLocalAccounts);
+ KioskTest::SetUpOnMainThread();
+ }
+
+ void TearDownOnMainThread() override {
+ settings_helper_.StoreCachedDeviceSetting(kAccountsPrefDeviceLocalAccounts);
+ KioskTest::TearDownOnMainThread();
+ }
void PreCacheApp(const std::string& app_id,
const std::string& version,
@@ -1755,8 +1719,9 @@ class KioskEnterpriseTest : public KioskTest {
}
void SetUpInProcessBrowserTestFixture() override {
- device_policy_test_helper_.MarkAsEnterpriseOwned();
- device_policy_test_helper_.InstallOwnerKey();
+ policy::DevicePolicyCrosTestHelper::MarkAsEnterpriseOwnedBy(
+ kTestOwnerEmail);
+ settings_helper_.SetCurrentUserIsOwner(false);
KioskTest::SetUpInProcessBrowserTestFixture();
}
@@ -1799,41 +1764,21 @@ class KioskEnterpriseTest : public KioskTest {
base::RunLoop().RunUntilIdle();
}
- static void StorePolicyCallback(const base::Closure& callback, bool result) {
- ASSERT_TRUE(result);
- callback.Run();
- }
-
void ConfigureKioskAppInPolicy(const std::string& account_id,
const std::string& app_id,
const std::string& update_url) {
- em::DeviceLocalAccountsProto* accounts =
- device_policy_test_helper_.device_policy()->payload()
- .mutable_device_local_accounts();
- em::DeviceLocalAccountInfoProto* account = accounts->add_account();
- account->set_account_id(account_id);
- account->set_type(
- em::DeviceLocalAccountInfoProto::ACCOUNT_TYPE_KIOSK_APP);
- account->mutable_kiosk_app()->set_app_id(app_id);
- if (!update_url.empty())
- account->mutable_kiosk_app()->set_update_url(update_url);
- accounts->set_auto_login_id(account_id);
- em::PolicyData& policy_data =
- device_policy_test_helper_.device_policy()->policy_data();
- policy_data.set_service_account_identity(kTestEnterpriseServiceAccountId);
- device_policy_test_helper_.device_policy()->Build();
-
- base::RunLoop run_loop;
- DBusThreadManager::Get()->GetSessionManagerClient()->StoreDevicePolicy(
- device_policy_test_helper_.device_policy()->GetBlob(),
- base::Bind(&KioskEnterpriseTest::StorePolicyCallback,
- run_loop.QuitClosure()));
- run_loop.Run();
-
- DeviceSettingsService::Get()->Load();
- }
-
- policy::DevicePolicyCrosTestHelper device_policy_test_helper_;
+ settings_helper_.SetCurrentUserIsOwner(true);
+ std::vector<policy::DeviceLocalAccount> accounts;
+ accounts.push_back(
+ policy::DeviceLocalAccount(policy::DeviceLocalAccount::TYPE_KIOSK_APP,
+ account_id, app_id, update_url));
+ policy::SetDeviceLocalAccounts(owner_settings_service_.get(), accounts);
+ settings_helper_.SetString(kAccountsPrefDeviceLocalAccountAutoLoginId,
+ account_id);
+ settings_helper_.SetString(kServiceAccountIdentity,
+ kTestEnterpriseServiceAccountId);
+ settings_helper_.SetCurrentUserIsOwner(false);
+ }
private:
DISALLOW_COPY_AND_ASSIGN(KioskEnterpriseTest);

Powered by Google App Engine
This is Rietveld 408576698