Commit 40035cf2 authored by Chris Hall's avatar Chris Hall Committed by Commit Bot

Language detection: dynamic content dump accessibility tree tests.

R=aboxhall,dmazzoni

Change-Id: I82c4687fd9923bf2669248419c7ed8616f1a7406
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2010227
Commit-Queue: Chris Hall <chrishall@chromium.org>
Reviewed-by: default avatarAlice Boxhall <aboxhall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#738486}
parent 7cfb8a92
......@@ -164,8 +164,11 @@ class DumpAccessibilityTreeTest : public DumpAccessibilityTestBase {
base::FilePath language_detection_file =
test_path.Append(base::FilePath(file_path));
// Enable language detection for both static and dynamic content.
base::CommandLine::ForCurrentProcess()->AppendSwitch(
::switches::kEnableExperimentalAccessibilityLanguageDetection);
base::CommandLine::ForCurrentProcess()->AppendSwitch(
::switches::kEnableExperimentalAccessibilityLanguageDetectionDynamic);
RunTest(language_detection_file, "accessibility/language-detection");
}
......@@ -2315,6 +2318,21 @@ IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
RunLanguageDetectionTest(FILE_PATH_LITERAL("static-basic.html"));
}
IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
LanguageDetectionLangDetectionDynamicBasic) {
RunLanguageDetectionTest(FILE_PATH_LITERAL("dynamic-basic.html"));
}
IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
LanguageDetectionLangDetectionDynamicMultipleInserts) {
RunLanguageDetectionTest(FILE_PATH_LITERAL("dynamic-multiple-inserts.html"));
}
IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
LanguageDetectionLangDetectionDynamicReparenting) {
RunLanguageDetectionTest(FILE_PATH_LITERAL("dynamic-reparenting.html"));
}
//
// These tests cover features of the testing infrastructure itself.
//
......
rootWebArea language='en-US'
++genericContainer ignored language='fr-FR'
++++genericContainer language='fr-FR'
++++++staticText language='de' name='Ein Bild ist nicht zu verwechseln mit einer Sache, die man berühren kann. Können Sie meine Pfeife stopfen? Natürlich nicht! Sie ist nur eine Darstellung. Hätte ich auf mein Bild geschrieben, dies ist eine Pfeife, so hätte ich gelogen. Das Abbild einer Marmeladenschnitte ist ganz gewiss nichts Essbares.'
AXWebArea AXLanguage='en-US'
++AXGroup AXLanguage='fr-FR'
++++AXStaticText AXValue='Ein Bild ist nicht zu verwechseln mit einer Sache, die man berühren kann. Können Sie meine Pfeife stopfen? Natürlich nicht! Sie ist nur eine Darstellung. Hätte ich auf mein Bild geschrieben, dies ist eine Pfeife, so hätte ich gelogen. Das Abbild einer Marmeladenschnitte ist ganz gewiss nichts Essbares.' AXLanguage='de'
ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE language:fr-FR
++IA2_ROLE_SECTION language:de
++++ROLE_SYSTEM_STATICTEXT name='Ein Bild ist nicht zu verwechseln mit einer Sache, die man berühren kann. Können Sie meine Pfeife stopfen? Natürlich nicht! Sie ist nur eine Darstellung. Hätte ich auf mein Bild geschrieben, dies ist eine Pfeife, so hätte ich gelogen. Das Abbild einer Marmeladenschnitte ist ganz gewiss nichts Essbares.' language:de
<!--
@BLINK-ALLOW:language=*
@BLINK-DENY-NODE:internalRole=inlineTextBox
@WIN-ALLOW:language:*
@MAC-ALLOW:AXLanguage*
@WAIT-FOR:Ein Bild ist
-->
<!DOCTYPE html>
<html lang="fr-FR">
<head>
<meta charset="utf-8">
</head>
<body>
<script>
// Perform a single dynamic update to smoke test that dynamic content
// changes are supported by language detection.
setTimeout(function() {
// Change the text of our node.
const de_text = "Ein Bild ist nicht zu verwechseln mit einer Sache, die man berühren kann. Können Sie meine Pfeife stopfen? Natürlich nicht! Sie ist nur eine Darstellung. Hätte ich auf mein Bild geschrieben, dies ist eine Pfeife, so hätte ich gelogen. Das Abbild einer Marmeladenschnitte ist ganz gewiss nichts Essbares.";
magritte.innerHTML = de_text;
}, 100);
</script>
<div id="magritte">« La fameuse pipe, me l’a-t-on assez reprochée ! Et pourtant, pouvez-vous la bourrer ma pipe ? Non, n’est-ce pas, elle n’est qu’une représentation. Donc si j’avais écrit sous mon tableau « ceci est une pipe », j’aurais menti ! »</div>
</body>
</html>
rootWebArea language='en-US'
++genericContainer ignored language='fr-FR'
++++genericContainer language='fr-FR'
++++++genericContainer language='fr-FR'
++++++++staticText language='en' name='This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection'
++++++genericContainer language='fr-FR'
++++++++staticText language='fr' name='Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.'
++++++genericContainer language='fr-FR'
++++++++staticText language='de' name='Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.'
AXWebArea AXLanguage='en-US'
++AXGroup AXLanguage='fr-FR'
++++AXGroup AXLanguage='fr-FR'
++++++AXStaticText AXValue='This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection' AXLanguage='en'
++++AXGroup AXLanguage='fr-FR'
++++++AXStaticText AXValue='Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.' AXLanguage='fr'
++++AXGroup AXLanguage='fr-FR'
++++++AXStaticText AXValue='Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.' AXLanguage='de'
ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE language:fr-FR
++IA2_ROLE_SECTION language:fr-FR
++++IA2_ROLE_SECTION language:en
++++++ROLE_SYSTEM_STATICTEXT name='This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection' language:en
++++IA2_ROLE_SECTION language:fr
++++++ROLE_SYSTEM_STATICTEXT name='Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.' language:fr
++++IA2_ROLE_SECTION language:de
++++++ROLE_SYSTEM_STATICTEXT name='Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.' language:de
<!--
@BLINK-ALLOW:language=*
@BLINK-DENY-NODE:internalRole=inlineTextBox
@WIN-ALLOW:language:*
@MAC-ALLOW:AXLanguage*
@WAIT-FOR:Dies ist ein
-->
<!DOCTYPE html>
<html lang="fr-FR">
<head>
<meta charset="utf-8">
</head>
<body>
<script>
// Perform multiple updates to content in order to exercise dynamic language
// detection.
//
// This test will likely run language detection four times. Once initially
// for static content after page load which will see no text, then
// dynamically after each of our 3 updates.
//
// This means we have covered the case of the first dynamic detection run,
// running after initial static detection, as well as the case for
// subsequent runs where dynamic detection is running multiple times on the
// same page.
//
// We want to perform at least two updates to test that dynamic language
// detection doesn't invalidate its state or prevent itself from running
// more than once (e.g. if it unregistered its Observer).
// Strings to dynamically insert into the page, one at a time.
var translated_strings = [
"This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection",
"Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.",
"Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet."
];
// Insert one string into page and, if there are more strings to insert,
// will schedule itself to re-run at a later time.
function perform_update() {
// Take first string out of array and insert it into the page.
const str = translated_strings.shift();
const new_div = document.createElement("div");
new_div.innerHTML = str;
translations.appendChild(new_div);
// If there is more work to do in the future, schedule myself to do it.
if (translated_strings.length) {
setTimeout(perform_update, 50);
}
}
setTimeout(perform_update, 50);
</script>
<div id="translations"></div>
</body>
</html>
rootWebArea language='en-US'
++genericContainer ignored language='fr-FR'
++++list language='fr-FR'
++++list language='fr-FR'
++++++listItem language='fr-FR'
++++++++listMarker language='fr-FR' name='• '
++++++++++staticText language='fr-FR' name='• '
++++++++staticText language='fr-FR' name='Placeholder listitem'
++++++listItem language='fr-FR'
++++++++listMarker language='fr-FR' name='• '
++++++++++staticText language='fr-FR' name='• '
++++++++staticText language='en' name='This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection'
++++++listItem language='fr-FR'
++++++++listMarker language='fr-FR' name='• '
++++++++++staticText language='fr-FR' name='• '
++++++++staticText language='fr' name='Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.'
++++++listItem language='fr-FR'
++++++++listMarker language='fr-FR' name='• '
++++++++++staticText language='fr-FR' name='• '
++++++++staticText language='de' name='Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.'
AXWebArea AXLanguage='en-US'
++AXList AXLanguage='fr-FR'
++AXList AXLanguage='fr-FR'
++++AXGroup AXLanguage='fr-FR'
++++++AXListMarker AXValue='• ' AXLanguage='fr-FR'
++++++++AXStaticText AXValue='• ' AXLanguage='fr-FR'
++++++AXStaticText AXValue='Placeholder listitem' AXLanguage='fr-FR'
++++AXGroup AXLanguage='fr-FR'
++++++AXListMarker AXValue='• ' AXLanguage='fr-FR'
++++++++AXStaticText AXValue='• ' AXLanguage='fr-FR'
++++++AXStaticText AXValue='This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection' AXLanguage='en'
++++AXGroup AXLanguage='fr-FR'
++++++AXListMarker AXValue='• ' AXLanguage='fr-FR'
++++++++AXStaticText AXValue='• ' AXLanguage='fr-FR'
++++++AXStaticText AXValue='Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.' AXLanguage='fr'
++++AXGroup AXLanguage='fr-FR'
++++++AXListMarker AXValue='• ' AXLanguage='fr-FR'
++++++++AXStaticText AXValue='• ' AXLanguage='fr-FR'
++++++AXStaticText AXValue='Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.' AXLanguage='de'
ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE language:fr-FR
++ROLE_SYSTEM_LIST READONLY
++ROLE_SYSTEM_LIST READONLY language:fr-FR
++++ROLE_SYSTEM_LISTITEM READONLY language:fr-FR language:fr-FR
++++++ROLE_SYSTEM_GROUPING language:fr-FR
++++++++ROLE_SYSTEM_STATICTEXT name='• ' language:fr-FR
++++++ROLE_SYSTEM_STATICTEXT name='Placeholder listitem' language:fr-FR
++++ROLE_SYSTEM_LISTITEM READONLY language:fr-FR language:en
++++++ROLE_SYSTEM_GROUPING language:fr-FR
++++++++ROLE_SYSTEM_STATICTEXT name='• ' language:fr-FR
++++++ROLE_SYSTEM_STATICTEXT name='This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection' language:en
++++ROLE_SYSTEM_LISTITEM READONLY language:fr-FR language:fr
++++++ROLE_SYSTEM_GROUPING language:fr-FR
++++++++ROLE_SYSTEM_STATICTEXT name='• ' language:fr-FR
++++++ROLE_SYSTEM_STATICTEXT name='Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.' language:fr
++++ROLE_SYSTEM_LISTITEM READONLY language:fr-FR language:de
++++++ROLE_SYSTEM_GROUPING language:fr-FR
++++++++ROLE_SYSTEM_STATICTEXT name='• ' language:fr-FR
++++++ROLE_SYSTEM_STATICTEXT name='Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.' language:de
<!--
@BLINK-ALLOW:language=*
@BLINK-DENY-NODE:internalRole=inlineTextBox
@WIN-ALLOW:language:*
@MAC-ALLOW:AXLanguage*
@WAIT-FOR:Dies ist ein
-->
<!DOCTYPE html>
<html lang="fr-FR">
<head>
<meta charset="utf-8">
</head>
<body>
<script>
// Test node re-parenting. Dynamic language detection is needed in order for
// re-parented nodes to get a language assignment, as re-parenting removes
// any previously detected language.
setTimeout(function() {
// Move all existing translations to new parent.
translations_to.append(...translations_from.childNodes);
// Add a new translation.
// This lets us use `WAIT-FOR`.
const de_text = "Dies ist ein mit Google Translate erstellter Text. Es ist unwahrscheinlich, dass er in der angegebenen Zielsprache idiomatisch ist. Dieser Text wird nur zum Testen der Spracherkennung verwendet.";
const li = document.createElement("li");
li.innerHTML = de_text;
translations_to.append(li);
}, 100);
</script>
<ul id="translations_from">
<li>This is text created using Google Translate, it is unlikely to be idiomatic in the given target language. This text is only used to test language detection</li>
<li>Ce texte a été créé avec Google Translate, il est peu probable qu'il soit idiomatique dans la langue cible indiquée Ce texte est uniquement utilisé pour tester la détection de la langue.</li>
</ul>
<ul id="translations_to">
<li>Placeholder listitem</li>
</ul>
</body>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment