diff options
Diffstat (limited to 'chromium/components/translate/content')
3 files changed, 92 insertions, 13 deletions
diff --git a/chromium/components/translate/content/android/BUILD.gn b/chromium/components/translate/content/android/BUILD.gn index 6905e93d63e..027cdc553e2 100644 --- a/chromium/components/translate/content/android/BUILD.gn +++ b/chromium/components/translate/content/android/BUILD.gn @@ -13,6 +13,7 @@ android_resources("java_resources") { "java/res/drawable-xxhdpi/infobar_translate_compact.png", "java/res/drawable-xxxhdpi/infobar_translate_compact.png", "java/res/layout/infobar_translate_tab_content.xml", + "java/res/layout/translate_menu_extended_item.xml", "java/res/layout/translate_menu_item.xml", "java/res/layout/translate_menu_item_checked.xml", "java/res/values/dimens.xml", @@ -26,6 +27,7 @@ android_resources("java_resources") { android_library("java") { sources = [ + "java/src/org/chromium/components/translate/TranslateFeatureList.java", "java/src/org/chromium/components/translate/TranslateMenu.java", "java/src/org/chromium/components/translate/TranslateMenuHelper.java", "java/src/org/chromium/components/translate/TranslateOptions.java", @@ -36,33 +38,43 @@ android_library("java") { deps = [ ":java_resources", "//base:base_java", + "//base:jni_java", "//components/browser_ui/widget/android:java", - "//third_party/android_deps:androidx_annotation_annotation_java", - "//third_party/android_deps:androidx_appcompat_appcompat_java", - "//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:material_design_java", + "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/androidx:androidx_appcompat_appcompat_java", + "//third_party/androidx:androidx_core_core_java", ] + annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] } static_library("android") { sources = [ + "translate_feature_list.cc", "translate_utils.cc", "translate_utils.h", ] deps = [ + ":jni_headers", "//base", + "//components/language/core/common", "//components/metrics", "//components/translate/core/browser", ] } +generate_jni("jni_headers") { + sources = + [ "java/src/org/chromium/components/translate/TranslateFeatureList.java" ] +} + java_cpp_enum("translate_android_enums") { sources = [ "translate_utils.h" ] } android_library("translate_android_enums_java") { - deps = [ "//third_party/android_deps:androidx_annotation_annotation_java" ] + deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] srcjar_deps = [ ":translate_android_enums" ] } @@ -73,12 +85,27 @@ android_library("javatests") { [ "java/src/org/chromium/components/translate/TranslateOptionsTest.java" ] deps = [ ":java", + "//base:base_java", "//base:base_java_test_support", - "//third_party/android_deps:androidx_annotation_annotation_java", - "//third_party/android_deps:androidx_appcompat_appcompat_java", - "//third_party/android_deps:androidx_test_runner_java", "//third_party/android_support_test_runner:rules_java", "//third_party/android_support_test_runner:runner_java", + "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/androidx:androidx_appcompat_appcompat_java", + "//third_party/androidx:androidx_test_runner_java", "//third_party/junit:junit", ] } + +source_set("unit_tests") { + testonly = true + sources = [ "translate_utils_unittest.cc" ] + deps = [ + ":android", + "//base", + "//components/infobars/core", + "//components/metrics:metrics", + "//components/translate/core/browser:test_support", + "//testing/gmock", + "//testing/gtest", + ] +} diff --git a/chromium/components/translate/content/browser/BUILD.gn b/chromium/components/translate/content/browser/BUILD.gn index 1844a9ebd8d..770893c3dea 100644 --- a/chromium/components/translate/content/browser/BUILD.gn +++ b/chromium/components/translate/content/browser/BUILD.gn @@ -14,6 +14,8 @@ static_library("browser") { "content_translate_util.h", "per_frame_content_translate_driver.cc", "per_frame_content_translate_driver.h", + "translate_model_service.cc", + "translate_model_service.h", ] public_deps = [ @@ -24,7 +26,11 @@ static_library("browser") { "//content/public/browser", ] deps = [ + "//components/keyed_service/core", "//components/language/core/browser", + "//components/optimization_guide/content/browser", + "//components/optimization_guide/core", + "//components/optimization_guide/proto:optimization_guide_proto", "//components/search_engines:search_engines", "//components/services/language_detection/public/cpp", "//components/services/language_detection/public/mojom", diff --git a/chromium/components/translate/content/common/translate.mojom b/chromium/components/translate/content/common/translate.mojom index aaf8fa4e5ec..ce36b702b7d 100644 --- a/chromium/components/translate/content/common/translate.mojom +++ b/chromium/components/translate/content/common/translate.mojom @@ -4,6 +4,7 @@ module translate.mojom; +import "mojo/public/mojom/base/file.mojom"; import "mojo/public/mojom/base/time.mojom"; import "mojo/public/mojom/base/string16.mojom"; import "url/mojom/url.mojom"; @@ -23,16 +24,55 @@ enum TranslateError { TRANSLATE_ERROR_MAX, }; +// This struct is populated a TranslateAgent to inform the browser about the +// result of the language detection model. Corresponds to +// LanguageDetectionDetails defined in language_detection_details.h. struct LanguageDetectionDetails { - mojo_base.mojom.Time time; + // All the elements in this section are used for to make decisions related + // to page translation. + // + // The URL corresponding to the main frame that had its language detected. + // Used by the TranslateDriver to determine if the page is eligible for + // translation. url.mojom.Url url; - string content_language; - string cld_language; - bool is_cld_reliable; + // The calculated language based on the language detection model's prediction + // and reliability, content language, and the page language attribute. Used to + // determine if the page should be considered for translation. + string adopted_language; + // Whether no translate was specified within HTML tag to prevent + // initiating a translation for the corresponding page load. If true, + // the page content should not be translated. bool has_notranslate; + + // All the elements below are used only for debugging and metrics purposes, + // e.g., translate-internals. + // + // The time at which language the language detection was performed. Used only + // for debugging. + mojo_base.mojom.Time time; + // The intended language of the audience of the content as specified by the + // HTTP header. Used only for debugging. + string content_language; + // The language predicted by the model based on the text of the page. Used + // only for debugging. + string model_detected_language; + // Whether the language prediction from the model is considered reliable + // for use, i.e., if the model's score is above a set threshold. Used + // only for debugging. + bool is_model_reliable; + // The language of the document specified by the HTML lang attribute. + // Used only for debugging. string html_root_language; - string adopted_language; + // The content of the page that language detection has be executed on. + // Used only for debugging. mojo_base.mojom.String16 contents; + // The relability score of the language prediction made by the detection + // model, the units of the score depends on the model but generally higher is + // better. Used only for debugging and metrics. + float model_reliability_score; + // The version of the language detection model used to predict + // the language of the page. Used only for debugging. + string detection_model_version; }; // Handles language translation. This is used by the browser process to @@ -77,5 +117,11 @@ interface ContentTranslateDriver { // Notification that a new page is ready to translate, // and the language for it has been determined. RegisterPage(pending_remote<TranslateAgent> translate_agent, - LanguageDetectionDetails details, bool page_needs_translation); + LanguageDetectionDetails details, bool translation_critiera_met); + + // Request that the language detection model being loaded and returned + // for use by the TranslateAgent. + GetLanguageDetectionModel() + => (mojo_base.mojom.File? model_file); + }; |