summaryrefslogtreecommitdiff
path: root/chromium/components/translate/content
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/translate/content')
-rw-r--r--chromium/components/translate/content/android/BUILD.gn41
-rw-r--r--chromium/components/translate/content/browser/BUILD.gn6
-rw-r--r--chromium/components/translate/content/common/translate.mojom58
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);
+
};