blob: 77f000588df3ce04df66fbf1713f219061ef0405 [file] [log] [blame]
// 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.
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/background/glic/glic_controller.h"
#include "chrome/browser/glic/glic_profile_manager.h"
#include "chrome/browser/glic/host/glic.mojom.h"
#include "chrome/browser/glic/public/glic_keyed_service_factory.h"
#include "chrome/browser/glic/test_support/interactive_glic_test.h"
#include "chrome/browser/glic/widget/glic_window_controller.h"
#include "chrome/common/chrome_features.h"
#include "content/public/test/browser_test.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace glic {
class GlicControllerUiTest : public test::InteractiveGlicTest {
public:
GlicControllerUiTest() {
// TODO(b/453696965): Broken in multi-instance.
disable_multi_instance_feature_list_.InitAndDisableFeature(
features::kGlicMultiInstance);
}
~GlicControllerUiTest() override = default;
protected:
GlicController& glic_controller() { return glic_controller_; }
GlicController glic_controller_;
base::test::ScopedFeatureList disable_multi_instance_feature_list_;
};
IN_PROC_BROWSER_TEST_F(GlicControllerUiTest, Toggle) {
Profile* profile =
glic::GlicProfileManager::GetInstance()->GetProfileForLaunch();
GlicKeyedService* glic_keyed_service =
glic::GlicKeyedServiceFactory::GetGlicKeyedService(profile);
ASSERT_FALSE(glic_keyed_service->IsWindowShowing());
RunTestSequence(
ObserveState(test::internal::kGlicWindowControllerState,
std::ref(window_controller())),
Do([this]() {
glic_controller().Toggle(mojom::InvocationSource::kOsButton);
}),
WaitForState(test::internal::kGlicWindowControllerState,
GlicWindowController::State::kOpen),
Do([this]() {
glic_controller().Toggle(mojom::InvocationSource::kOsButton);
}),
WaitForState(test::internal::kGlicWindowControllerState,
GlicWindowController::State::kClosed));
}
// TODO (crbug.com/450563739): Re-enable when the test is fixed on Windows.
#if BUILDFLAG(IS_WIN)
#define MAYBE_Show DISABLED_Show
#else
#define MAYBE_Show Show
#endif
IN_PROC_BROWSER_TEST_F(GlicControllerUiTest, MAYBE_Show) {
Profile* profile =
glic::GlicProfileManager::GetInstance()->GetProfileForLaunch();
GlicKeyedService* glic_keyed_service =
glic::GlicKeyedServiceFactory::GetGlicKeyedService(profile);
ASSERT_FALSE(glic_keyed_service->IsWindowShowing());
RunTestSequence(ObserveState(test::internal::kGlicWindowControllerState,
std::ref(window_controller())),
Do([this]() {
glic_controller().Show(mojom::InvocationSource::kOsButton);
}),
WaitForState(test::internal::kGlicWindowControllerState,
GlicWindowController::State::kOpen),
Do([this]() {
glic_controller().Show(mojom::InvocationSource::kOsButton);
}),
WaitForState(test::internal::kGlicWindowControllerState,
GlicWindowController::State::kOpen));
}
} // namespace glic