blob: 9a9c82f31c539625d364da8982e567f86560a455 [file] [log] [blame]
// 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.
#include "chrome/browser/accessibility/live_caption/live_caption_test_util.h"
#include <vector>
#include "base/feature_list.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/ui/browser.h"
#include "components/live_caption/pref_names.h"
#include "components/soda/constants.h"
#include "components/soda/soda_installer.h"
#include "components/sync_preferences/pref_service_syncable.h"
#include "media/base/media_switches.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "ash/constants/ash_features.h"
#endif
#if BUILDFLAG(IS_CHROMEOS_LACROS)
#include "chromeos/crosapi/mojom/crosapi.mojom.h"
#include "chromeos/lacros/lacros_service.h"
#include "chromeos/startup/browser_init_params.h"
#endif
namespace captions {
namespace {
// Chrome feature flags that gate Live Caption.
std::vector<base::test::FeatureRef> RequiredFeatureFlags() {
std::vector<base::test::FeatureRef> features = {
media::kLiveCaption, media::kLiveTranslate,
media::kLiveCaptionAutomaticLanguageDownload};
#if BUILDFLAG(IS_CHROMEOS_ASH)
features.push_back(ash::features::kOnDeviceSpeechRecognition);
#endif
return features;
}
// LaCrOS learns about ondevice-speech support via BrowserInitParams.
#if BUILDFLAG(IS_CHROMEOS_LACROS)
void SetRequiredLacrosInitParams() {
crosapi::mojom::BrowserInitParamsPtr init_params =
chromeos::BrowserInitParams::GetForTests()->Clone();
init_params->is_ondevice_speech_supported = true;
chromeos::BrowserInitParams::SetInitParamsForTests(std::move(init_params));
}
#endif
} // namespace
void LiveCaptionBrowserTest::SetUp() {
scoped_feature_list_.InitWithFeatures(RequiredFeatureFlags(), {});
InProcessBrowserTest::SetUp();
}
void LiveCaptionBrowserTest::CreatedBrowserMainParts(
content::BrowserMainParts* browser_main_parts) {
#if BUILDFLAG(IS_CHROMEOS_LACROS)
SetRequiredLacrosInitParams();
#endif
InProcessBrowserTest::CreatedBrowserMainParts(browser_main_parts);
}
void LiveCaptionBrowserTest::SetLiveCaptionEnabled(bool enabled) {
SetLiveCaptionEnabledOnProfile(enabled, browser()->profile());
}
void LiveCaptionBrowserTest::SetLiveCaptionEnabledOnProfile(bool enabled,
Profile* profile) {
profile->GetPrefs()->SetBoolean(prefs::kLiveCaptionEnabled, enabled);
if (enabled) {
speech::SodaInstaller::GetInstance()->NotifySodaInstalledForTesting(
speech::LanguageCode::kEnUs);
speech::SodaInstaller::GetInstance()->NotifySodaInstalledForTesting();
}
}
void LiveCaptionBrowserTest::SetLiveTranslateEnabled(bool enabled) {
browser()->profile()->GetPrefs()->SetBoolean(prefs::kLiveTranslateEnabled,
enabled);
browser()->profile()->GetPrefs()->SetString(prefs::kLiveCaptionLanguageCode,
"en-US");
browser()->profile()->GetPrefs()->SetString(
prefs::kLiveTranslateTargetLanguageCode, "fr-FR");
}
} // namespace captions