#include "base/base_paths.h"
#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/task/thread_pool/thread_pool_instance.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/threading/thread_restrictions.h"
#include "build/build_config.h"
#include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
#include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_key.h"
#include "chrome/browser/translate/translate_model_service_factory.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/metrics/content/subprocess_metrics_provider.h"
#include "components/optimization_guide/core/model_util.h"
#include "components/optimization_guide/core/optimization_guide_features.h"
#include "components/optimization_guide/core/optimization_guide_test_util.h"
#include "components/optimization_guide/core/test_model_info_builder.h"
#include "components/optimization_guide/proto/models.pb.h"
#include "components/translate/core/common/translate_util.h"
#include "components/translate/core/language_detection/language_detection_model.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "net/dns/mock_host_resolver.h"
#include "net/http/http_status_code.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace translate {
namespace {
int GetTotalHistogramSamples(const base::HistogramTester* histogram_tester,
const std::string& histogram_name) { … }
int RetryForHistogramUntilCountReached(
const base::HistogramTester* histogram_tester,
const std::string& histogram_name,
int count) { … }
class TranslateModelServiceDisabledBrowserTest : public InProcessBrowserTest { … };
IN_PROC_BROWSER_TEST_F(TranslateModelServiceDisabledBrowserTest,
TranslateModelServiceDisabled) { … }
class TranslateModelServiceWithoutOptimizationGuideBrowserTest
: public TranslateModelServiceDisabledBrowserTest { … };
IN_PROC_BROWSER_TEST_F(TranslateModelServiceWithoutOptimizationGuideBrowserTest,
TranslateModelServiceEnabled) { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceDisabledBrowserTest,
LanguageDetectionModelNotCreated) { … }
class TranslateModelServiceBrowserTest
: public TranslateModelServiceDisabledBrowserTest { … };
base::FilePath model_file_path() { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
TranslateModelServiceEnabled) { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
TranslateModelServiceEnabled_OffTheRecord) { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
LanguageDetectionModelReadyOnRequest) { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
LanguageDetectionModelLoadedAfterRequest) { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
InvalidModelWhenLoading) { … }
#if BUILDFLAG(IS_CHROMEOS)
#define MAYBE_LanguageDetectionModelAvailableForDetection …
#else
#define MAYBE_LanguageDetectionModelAvailableForDetection …
#endif
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
MAYBE_LanguageDetectionModelAvailableForDetection) { … }
#if (BUILDFLAG(IS_CHROMEOS) && !defined(NDEBUG)) || \
(BUILDFLAG(IS_LINUX) && BUILDFLAG(IS_MAC)) || \
(BUILDFLAG(IS_LINUX) && defined(ADDRESS_SANITIZER)) || \
(BUILDFLAG(IS_MAC) && defined(ADDRESS_SANITIZER)) || BUILDFLAG(IS_WIN)
#define MAYBE_LanguageDetectionWithBackgroundTab …
#else
#define MAYBE_LanguageDetectionWithBackgroundTab …
#endif
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
MAYBE_LanguageDetectionWithBackgroundTab) { … }
IN_PROC_BROWSER_TEST_F(TranslateModelServiceBrowserTest,
ModelUpdateFromOptimizationGuide) { … }
}
}