1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// Copyright 2025 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_GLIC_TEST_SUPPORT_GLIC_TEST_UTIL_H_
#define CHROME_BROWSER_GLIC_TEST_SUPPORT_GLIC_TEST_UTIL_H_
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_list_observer.h"
#include "ui/views/widget/widget.h"
class Profile;
namespace glic {
namespace prefs {
enum class FreStatus;
} // namespace prefs
// Provides deterministic browser activation behavior.
// Useful in browser tests where focus is not reliable.
class BrowserActivator : public BrowserListObserver {
public:
// The different modes in which browser activation can be controlled.
enum class Mode {
// Support a single browser, crash if more than one browser is created at
// one time. Activates the browser when it is created. This is the default
// mode, to notify test authors that special consideration is necessary.
kSingleBrowser,
// Always keep the first browser active.
kFirst,
// Use SetActive() to set the active browser.
kManual,
};
BrowserActivator();
~BrowserActivator() override;
// Sets the browser activation mode.
void SetMode(Mode mode);
// Sets the active browser. Switches to `Mode::kManual`.
void SetActive(Browser* browser);
// BrowserListObserver impl.
void OnBrowserAdded(Browser* browser) override;
void OnBrowserRemoved(Browser* browser) override;
private:
void SetActivePrivate(Browser* browser);
Mode mode_ = Mode::kSingleBrowser;
base::WeakPtr<Browser> active_browser_;
std::unique_ptr<views::Widget::PaintAsActiveLock> active_lock_;
};
// Signs in a primary account, accepts the FRE, and enables model execution
// capability for that profile. browser_tests and interactive_ui_tests should
// use GlicTestEnvironment. These methods are for unit_tests.
void ForceSigninAndModelExecutionCapability(Profile* profile);
void SigninWithPrimaryAccount(Profile* profile);
void SetModelExecutionCapability(Profile* profile, bool enabled);
void SetFRECompletion(Profile* profile, prefs::FreStatus fre_status);
void InvalidateAccount(Profile* profile);
void ReauthAccount(Profile* profile);
} // namespace glic
#endif // CHROME_BROWSER_GLIC_TEST_SUPPORT_GLIC_TEST_UTIL_H_
|