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

Unified Diff: chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.cc

Issue 2919343005: Remove tests for deprecated Options UI (Closed)
Patch Set: and more Created 3 years, 6 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/ui/webui/options/chromeos/shared_options_browsertest.cc
diff --git a/chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.cc b/chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.cc
deleted file mode 100644
index 7e7b7fa708fe8f4e290a2ec903ec376df3baa6cb..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/options/chromeos/shared_options_browsertest.cc
+++ /dev/null
@@ -1,467 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <stddef.h>
-
-#include "base/compiler_specific.h"
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "base/strings/stringprintf.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/chromeos/login/login_manager_test.h"
-#include "chrome/browser/chromeos/login/startup_utils.h"
-#include "chrome/browser/chromeos/login/ui/user_adding_screen.h"
-#include "chrome/browser/chromeos/profiles/profile_helper.h"
-#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_commands.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "chromeos/settings/cros_settings_names.h"
-#if defined(GOOGLE_CHROME_BUILD)
-#include "components/spellcheck/browser/pref_names.h"
-#endif
-#include "components/prefs/pref_service.h"
-#include "components/signin/core/browser/signin_manager.h"
-#include "components/user_manager/user_manager.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-
-namespace chromeos {
-
-namespace {
-
-// Because policy is not needed in this test it is better to use e-mails that
-// are definitely not enterprise. This lets us to avoid faking of policy fetch
-// procedure.
-const char* kTestOwner = "test-owner@gmail.com";
-const char* kTestNonOwner = "test-user1@gmail.com";
-
-const char* kKnownSettings[] = {
- kDeviceOwner,
- kAccountsPrefAllowGuest,
- kAccountsPrefAllowNewUser,
- kAccountsPrefDeviceLocalAccounts,
- kAccountsPrefShowUserNamesOnSignIn,
- kAccountsPrefSupervisedUsersEnabled,
-};
-
-// Stub settings provider that only handles the settings we need to control.
-// StubCrosSettingsProvider handles more settings but leaves many of them unset
-// which the Settings page doesn't expect.
-class StubAccountSettingsProvider : public StubCrosSettingsProvider {
- public:
- StubAccountSettingsProvider() {
- }
-
- ~StubAccountSettingsProvider() override {}
-
- // StubCrosSettingsProvider implementation.
- bool HandlesSetting(const std::string& path) const override {
- const char** end = kKnownSettings + arraysize(kKnownSettings);
- return std::find(kKnownSettings, end, path) != end;
- }
-};
-
-struct PrefTest {
- const char* pref_name;
- bool owner_only;
- bool indicator;
-};
-
-const PrefTest kPrefTests[] = {
- { kSystemTimezone, false, false },
- { prefs::kUse24HourClock, false, false },
- { kAttestationForContentProtectionEnabled, true, true },
- { kAccountsPrefAllowGuest, true, false },
- { kAccountsPrefAllowNewUser, true, false },
- { kAccountsPrefShowUserNamesOnSignIn, true, false },
- { kAccountsPrefSupervisedUsersEnabled, true, false },
-#if defined(GOOGLE_CHROME_BUILD)
- { kStatsReportingPref, true, true },
- { spellcheck::prefs::kSpellCheckUseSpellingService, false, false },
-#endif
-};
-
-} // namespace
-
-class SharedOptionsTest : public LoginManagerTest {
- public:
- SharedOptionsTest()
- : LoginManagerTest(false),
- stub_settings_provider_(base::MakeUnique<StubCrosSettingsProvider>()),
- stub_settings_provider_ptr_(static_cast<StubCrosSettingsProvider*>(
- stub_settings_provider_.get())),
- test_owner_account_id_(AccountId::FromUserEmail(kTestOwner)),
- test_non_owner_account_id_(AccountId::FromUserEmail(kTestNonOwner)) {
- stub_settings_provider_->Set(kDeviceOwner, base::Value(kTestOwner));
- }
-
- ~SharedOptionsTest() override {}
-
- void SetUpOnMainThread() override {
- LoginManagerTest::SetUpOnMainThread();
-
- CrosSettings* settings = CrosSettings::Get();
-
- // Add the stub settings provider, moving the device settings provider
- // behind it so our stub takes precedence.
- std::unique_ptr<CrosSettingsProvider> device_settings_provider =
- settings->RemoveSettingsProvider(settings->GetProvider(kDeviceOwner));
- settings->AddSettingsProvider(std::move(stub_settings_provider_));
- settings->AddSettingsProvider(std::move(device_settings_provider));
-
- // Notify ChromeUserManager of ownership change.
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_OWNERSHIP_STATUS_CHANGED,
- content::Source<SharedOptionsTest>(this),
- content::NotificationService::NoDetails());
- }
-
- void TearDownOnMainThread() override {
- CrosSettings* settings = CrosSettings::Get();
- settings->RemoveSettingsProvider(stub_settings_provider_ptr_);
- LoginManagerTest::TearDownOnMainThread();
- }
-
- protected:
- void CheckOptionsUI(const user_manager::User* user,
- bool is_owner,
- bool is_primary) {
- ASSERT_NE(nullptr, user);
- Browser* browser = CreateBrowserForUser(user);
- content::WebContents* contents =
- browser->tab_strip_model()->GetActiveWebContents();
-
- for (size_t i = 0; i < sizeof(kPrefTests) / sizeof(kPrefTests[0]); i++) {
- bool disabled = !is_owner && kPrefTests[i].owner_only;
- if (strcmp(kPrefTests[i].pref_name, kSystemTimezone) == 0) {
- disabled = ProfileHelper::Get()
- ->GetProfileByUser(user)
- ->GetPrefs()
- ->GetBoolean(prefs::kResolveTimezoneByGeolocation);
- }
-
- CheckPreference(
- contents, kPrefTests[i].pref_name, disabled,
- !is_owner && kPrefTests[i].indicator ? "owner" : std::string());
- }
- CheckBanner(contents, is_primary);
- CheckSharedSections(contents, is_primary);
- CheckAccountsOverlay(contents, is_owner);
- }
-
- // Creates a browser and navigates to the Settings page.
- Browser* CreateBrowserForUser(const user_manager::User* user) {
- Profile* profile = ProfileHelper::Get()->GetProfileByUser(user);
- SigninManagerFactory::GetForProfile(profile)->SetAuthenticatedAccountInfo(
- GetGaiaIDForUserID(user->GetAccountId().GetUserEmail()),
- user->GetAccountId().GetUserEmail());
-
- ui_test_utils::BrowserAddedObserver observer;
- Browser* browser = CreateBrowser(profile);
- observer.WaitForSingleNewBrowser();
-
- ui_test_utils::NavigateToURL(browser,
- GURL("chrome://settings-frame"));
- return browser;
- }
-
- // Verifies a preference's disabled state and controlled-by indicator.
- void CheckPreference(content::WebContents* contents,
- std::string pref_name,
- bool disabled,
- std::string controlled_by) {
- bool success;
- std::string js_expression = base::StringPrintf(
- "var prefSelector = '[pref=\"%s\"]';"
- "var controlledBy = '%s';"
- "var input = document.querySelector("
- " 'input' + prefSelector + ', select' + prefSelector);"
- "var success = false;"
- "if (input) {"
- " success = input.disabled == %d;"
- " var indicator = input.parentNode.parentNode.querySelector("
- " '.controlled-setting-indicator');"
- " if (controlledBy) {"
- " success = success && indicator &&"
- " indicator.getAttribute('controlled-by') == controlledBy;"
- " } else {"
- " success = success && (!indicator ||"
- " !indicator.hasAttribute('controlled-by') ||"
- " indicator.getAttribute('controlled-by') == '')"
- " }"
- "}"
- "window.domAutomationController.send(!!success);",
- pref_name.c_str(), controlled_by.c_str(), disabled);
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- contents, js_expression, &success));
- EXPECT_TRUE(success);
- }
-
- // Verifies a checkbox's disabled state, controlled-by indicator and value.
- void CheckBooleanPreference(content::WebContents* contents,
- std::string pref_name,
- bool disabled,
- std::string controlled_by,
- bool expected_value) {
- CheckPreference(contents, pref_name, disabled, controlled_by);
- bool actual_value;
- std::string js_expression = base::StringPrintf(
- "window.domAutomationController.send(document.querySelector('"
- " input[type=\"checkbox\"][pref=\"%s\"]').checked);",
- pref_name.c_str());
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- contents, js_expression, &actual_value));
- EXPECT_EQ(expected_value, actual_value);
- }
-
- // Verifies that the shared settings banner is visible only for
- // secondary users.
- void CheckBanner(content::WebContents* contents,
- bool is_primary) {
- bool banner_visible;
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- contents,
- "var e = $('secondary-user-banner');"
- "window.domAutomationController.send(e && !e.hidden);",
- &banner_visible));
- EXPECT_EQ(!is_primary, banner_visible);
- }
-
- // Verifies that sections of shared settings have the appropriate indicator.
- void CheckSharedSections(content::WebContents* contents,
- bool is_primary) {
- // This only applies to the Internet options section.
- std::string controlled_by;
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- contents,
- "var e = document.querySelector("
- " '#network-section-header span.controlled-setting-indicator');"
- "if (!e || !e.getAttribute('controlled-by')) {"
- " window.domAutomationController.send('');"
- "} else {"
- " window.domAutomationController.send("
- " e.getAttribute('controlled-by'));"
- "}",
- &controlled_by));
- EXPECT_EQ(!is_primary ? "shared" : std::string(), controlled_by);
- }
-
- // Checks the Accounts header and non-checkbox inputs.
- void CheckAccountsOverlay(content::WebContents* contents, bool is_owner) {
- // Set cros.accounts.allowGuest to false so we can test the accounts list.
- // This has to be done after the PRE_* test or we can't add the owner.
- stub_settings_provider_ptr_->Set(kAccountsPrefAllowNewUser,
- base::Value(false));
-
- bool success;
- std::string js_expression = base::StringPrintf(
- "var controlled = %d;"
- "var warning = $('ownerOnlyWarning');"
- "var userList = $('userList');"
- "var input = $('userNameEdit');"
- "var success;"
- "if (controlled)"
- " success = warning && !warning.hidden && userList.disabled &&"
- " input.disabled;"
- "else"
- " success = (!warning || warning.hidden) && !userList.disabled &&"
- " !input.disabled;"
- "window.domAutomationController.send(!!success);",
- !is_owner);
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- contents, js_expression, &success));
- EXPECT_TRUE(success) << "Accounts overlay incorrect for " <<
- (is_owner ? "owner." : "non-owner.");
- }
-
- std::unique_ptr<CrosSettingsProvider> stub_settings_provider_;
- StubCrosSettingsProvider* stub_settings_provider_ptr_;
-
- const AccountId test_owner_account_id_;
- const AccountId test_non_owner_account_id_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(SharedOptionsTest);
-};
-
-IN_PROC_BROWSER_TEST_F(SharedOptionsTest, PRE_SharedOptions) {
- RegisterUser(test_owner_account_id_.GetUserEmail());
- RegisterUser(test_non_owner_account_id_.GetUserEmail());
- StartupUtils::MarkOobeCompleted();
-}
-
-IN_PROC_BROWSER_TEST_F(SharedOptionsTest, SharedOptions) {
- // Log in the owner first, then add a secondary user.
- LoginUser(test_owner_account_id_.GetUserEmail());
- UserAddingScreen::Get()->Start();
- content::RunAllPendingInMessageLoop();
- AddUser(test_non_owner_account_id_.GetUserEmail());
-
- user_manager::UserManager* manager = user_manager::UserManager::Get();
- ASSERT_EQ(2u, manager->GetLoggedInUsers().size());
- {
- SCOPED_TRACE("Checking settings for owner, primary user.");
- CheckOptionsUI(manager->FindUser(manager->GetOwnerAccountId()), true, true);
- }
- {
- SCOPED_TRACE("Checking settings for non-owner, secondary user.");
- CheckOptionsUI(manager->FindUser(test_non_owner_account_id_), false, false);
- }
- // TODO(michaelpg): Add tests for non-primary owner and primary non-owner
- // when the owner-only multiprofile restriction is removed, probably M38.
-}
-
-IN_PROC_BROWSER_TEST_F(SharedOptionsTest, PRE_ScreenLockPreferencePrimary) {
- RegisterUser(test_owner_account_id_.GetUserEmail());
- RegisterUser(test_non_owner_account_id_.GetUserEmail());
- StartupUtils::MarkOobeCompleted();
-}
-
-// Tests the shared setting indicator for the primary user's auto-lock setting
-// when the secondary user has enabled or disabled their preference.
-// (The checkbox is unset if the current user's preference is false, but if any
-// other signed-in user has enabled this preference, the shared setting
-// indicator explains this.)
-IN_PROC_BROWSER_TEST_F(SharedOptionsTest, ScreenLockPreferencePrimary) {
- LoginUser(test_owner_account_id_.GetUserEmail());
- UserAddingScreen::Get()->Start();
- content::RunAllPendingInMessageLoop();
- AddUser(test_non_owner_account_id_.GetUserEmail());
-
- user_manager::UserManager* manager = user_manager::UserManager::Get();
- const user_manager::User* user1 = manager->FindUser(test_owner_account_id_);
- const user_manager::User* user2 =
- manager->FindUser(test_non_owner_account_id_);
-
- PrefService* prefs1 =
- ProfileHelper::Get()->GetProfileByUser(user1)->GetPrefs();
- PrefService* prefs2 =
- ProfileHelper::Get()->GetProfileByUser(user2)->GetPrefs();
-
- // Set both users' preference to false, then change the secondary user's to
- // true. We'll do the opposite in the next test. Doesn't provide 100% coverage
- // but reloading the settings page is super slow on debug builds.
- prefs1->SetBoolean(prefs::kEnableAutoScreenLock, false);
- prefs2->SetBoolean(prefs::kEnableAutoScreenLock, false);
-
- Browser* browser = CreateBrowserForUser(user1);
- content::WebContents* contents =
- browser->tab_strip_model()->GetActiveWebContents();
-
- bool disabled = false;
- bool expected_value;
- std::string empty_controlled;
- std::string shared_controlled("shared");
-
- {
- SCOPED_TRACE("Screen lock false for both users");
- expected_value = false;
- CheckBooleanPreference(contents, prefs::kEnableAutoScreenLock, disabled,
- empty_controlled, expected_value);
- }
-
- // Set the secondary user's preference to true, and reload the primary user's
- // browser to see the updated controlled-by indicator.
- prefs2->SetBoolean(prefs::kEnableAutoScreenLock, true);
- chrome::Reload(browser, WindowOpenDisposition::CURRENT_TAB);
- content::WaitForLoadStop(contents);
- {
- SCOPED_TRACE("Screen lock false for primary user");
- expected_value = false;
- CheckBooleanPreference(contents, prefs::kEnableAutoScreenLock, disabled,
- shared_controlled, expected_value);
- }
-
- // Set the preference to true for the primary user and check that the
- // indicator disappears.
- prefs1->SetBoolean(prefs::kEnableAutoScreenLock, true);
- {
- SCOPED_TRACE("Screen lock true for both users");
- expected_value = true;
- CheckBooleanPreference(contents, prefs::kEnableAutoScreenLock, disabled,
- empty_controlled, expected_value);
- }
-}
-
-IN_PROC_BROWSER_TEST_F(SharedOptionsTest, PRE_ScreenLockPreferenceSecondary) {
- RegisterUser(test_owner_account_id_.GetUserEmail());
- RegisterUser(test_non_owner_account_id_.GetUserEmail());
- StartupUtils::MarkOobeCompleted();
-}
-
-// Tests the shared setting indicator for the secondary user's auto-lock setting
-// when the primary user has enabled or disabled their preference.
-// (The checkbox is unset if the current user's preference is false, but if any
-// other signed-in user has enabled this preference, the shared setting
-// indicator explains this.)
-IN_PROC_BROWSER_TEST_F(SharedOptionsTest, ScreenLockPreferenceSecondary) {
- LoginUser(test_owner_account_id_.GetUserEmail());
- UserAddingScreen::Get()->Start();
- content::RunAllPendingInMessageLoop();
- AddUser(test_non_owner_account_id_.GetUserEmail());
-
- user_manager::UserManager* manager = user_manager::UserManager::Get();
- const user_manager::User* user1 = manager->FindUser(test_owner_account_id_);
- const user_manager::User* user2 =
- manager->FindUser(test_non_owner_account_id_);
-
- PrefService* prefs1 =
- ProfileHelper::Get()->GetProfileByUser(user1)->GetPrefs();
- PrefService* prefs2 =
- ProfileHelper::Get()->GetProfileByUser(user2)->GetPrefs();
-
- // Set both users' preference to true, then change the secondary user's to
- // false.
- prefs1->SetBoolean(prefs::kEnableAutoScreenLock, true);
- prefs2->SetBoolean(prefs::kEnableAutoScreenLock, true);
-
- Browser* browser = CreateBrowserForUser(user2);
- content::WebContents* contents =
- browser->tab_strip_model()->GetActiveWebContents();
-
- bool disabled = false;
- bool expected_value;
- std::string empty_controlled;
- std::string shared_controlled("shared");
-
- {
- SCOPED_TRACE("Screen lock true for both users");
- expected_value = true;
- CheckBooleanPreference(contents, prefs::kEnableAutoScreenLock, disabled,
- empty_controlled, expected_value);
- }
-
- // Set the secondary user's preference to false and check that the
- // controlled-by indicator is shown.
- prefs2->SetBoolean(prefs::kEnableAutoScreenLock, false);
- {
- SCOPED_TRACE("Screen lock false for secondary user");
- expected_value = false;
- CheckBooleanPreference(contents, prefs::kEnableAutoScreenLock, disabled,
- shared_controlled, expected_value);
- }
-
- // Set the preference to false for the primary user and check that the
- // indicator disappears.
- prefs1->SetBoolean(prefs::kEnableAutoScreenLock, false);
- chrome::Reload(browser, WindowOpenDisposition::CURRENT_TAB);
- content::WaitForLoadStop(contents);
- {
- SCOPED_TRACE("Screen lock false for both users");
- expected_value = false;
- CheckBooleanPreference(contents, prefs::kEnableAutoScreenLock, disabled,
- empty_controlled, expected_value);
- }
-}
-
-} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698