// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_PROFILES_PROFILE_TEST_UTIL_H_ #define CHROME_BROWSER_PROFILES_PROFILE_TEST_UTIL_H_ #include "base/files/file_path.h" #include "base/memory/raw_ptr.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "chrome/browser/profiles/profile_selections.h" #if BUILDFLAG(IS_CHROMEOS_LACROS) #include "chromeos/crosapi/mojom/crosapi.mojom.h" #endif // BUILDFLAG(IS_CHROMEOS_LACROS) class Profile; class ProfileKeyedServiceFactory; class ProfileManager; namespace profiles::testing { // Helper to call `ProfileManager::CreateProfileAsync` synchronously during // tests. Returns the created `Profile`. Profile& CreateProfileSync(ProfileManager* profile_manager, const base::FilePath& path); #if !BUILDFLAG(IS_ANDROID) // Helper to call `::profiles::SwitchToProfile()` synchronously during tests. void SwitchToProfileSync(const base::FilePath& path, bool always_create = true); // Sets `policy::BrowserPolicyConnector::non_managed_domain_for_testing` to the // provided domain, and clears it when this object goes out of scope. class ScopedNonEnterpriseDomainSetterForTesting { … }; #endif // BUILDFLAG(IS_ANDROID) // Overrides the ProfileSelections that a ProfileKeyedServiceFactory uses to // determine which profiles to create a service for. class ScopedProfileSelectionsForFactoryTesting { … }; // A testing wrapper to simulate a logged-in managed guest session. // These sessions are only available for ChromeOS in Ash and Lacros modes. class ScopedTestManagedGuestSession { … }; } // namespace profiles::testing #endif // CHROME_BROWSER_PROFILES_PROFILE_TEST_UTIL_H_