summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/test/mochitest/test_ext_i18n.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/webextensions/test/mochitest/test_ext_i18n.html')
-rw-r--r--toolkit/components/webextensions/test/mochitest/test_ext_i18n.html432
1 files changed, 0 insertions, 432 deletions
diff --git a/toolkit/components/webextensions/test/mochitest/test_ext_i18n.html b/toolkit/components/webextensions/test/mochitest/test_ext_i18n.html
deleted file mode 100644
index 1f7330bbb..000000000
--- a/toolkit/components/webextensions/test/mochitest/test_ext_i18n.html
+++ /dev/null
@@ -1,432 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <meta charset="utf-8">
- <title>Test for WebExtension localization APIs</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
- <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
- <script type="text/javascript" src="head.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-
-<script type="text/javascript">
-"use strict";
-
-SimpleTest.registerCleanupFunction(() => { SpecialPowers.clearUserPref("intl.accept_languages"); });
-SimpleTest.registerCleanupFunction(() => { SpecialPowers.clearUserPref("general.useragent.locale"); });
-
-add_task(function* test_i18n() {
- function runTests(assertEq) {
- let _ = browser.i18n.getMessage.bind(browser.i18n);
-
- let url = browser.runtime.getURL("/");
- assertEq(url, `moz-extension://${_("@@extension_id")}/`, "@@extension_id builtin message");
-
- assertEq("Foo.", _("Foo"), "Simple message in selected locale.");
-
- assertEq("(bar)", _("bar"), "Simple message fallback in default locale.");
-
- assertEq("", _("some-unknown-locale-string"), "Unknown locale string.");
-
- assertEq("", _("@@unknown_builtin_string"), "Unknown built-in string.");
- assertEq("", _("@@bidi_unknown_builtin_string"), "Unknown built-in bidi string.");
-
- assertEq("Føo.", _("Föo"), "Multi-byte message in selected locale.");
-
- let substitutions = [];
- substitutions[4] = "5";
- substitutions[13] = "14";
-
- assertEq("'$0' '14' '' '5' '$$$$' '$'.", _("basic_substitutions", substitutions),
- "Basic numeric substitutions");
-
- assertEq("'$0' '' 'just a string' '' '$$$$' '$'.", _("basic_substitutions", "just a string"),
- "Basic numeric substitutions, with non-array value");
-
- let values = _("named_placeholder_substitutions", ["(subst $1 $2)", "(2 $1 $2)"]).split("\n");
-
- assertEq("_foo_ (subst $1 $2) _bar_", values[0], "Named and numeric substitution");
-
- assertEq("(2 $1 $2)", values[1], "Numeric substitution amid named placeholders");
-
- assertEq("$bad name$", values[2], "Named placeholder with invalid key");
-
- assertEq("", values[3], "Named placeholder with an invalid value");
-
- assertEq("Accepted, but shouldn't break.", values[4], "Named placeholder with a strange content value");
-
- assertEq("$foo", values[5], "Non-placeholder token that should be ignored");
- }
-
- let extension = ExtensionTestUtils.loadExtension({
- manifest: {
- "default_locale": "jp",
-
- content_scripts: [
- {"matches": ["http://mochi.test/*/file_sample.html"],
- "js": ["content.js"]},
- ],
- },
-
-
- files: {
- "_locales/en_US/messages.json": {
- "foo": {
- "message": "Foo.",
- "description": "foo",
- },
-
- "föo": {
- "message": "Føo.",
- "description": "foo",
- },
-
- "basic_substitutions": {
- "message": "'$0' '$14' '$1' '$5' '$$$$$' '$$'.",
- "description": "foo",
- },
-
- "Named_placeholder_substitutions": {
- "message": "$Foo$\n$2\n$bad name$\n$bad_value$\n$bad_content_value$\n$foo",
- "description": "foo",
- "placeholders": {
- "foO": {
- "content": "_foo_ $1 _bar_",
- "description": "foo",
- },
-
- "bad name": {
- "content": "Nope.",
- "description": "bad name",
- },
-
- "bad_value": "Nope.",
-
- "bad_content_value": {
- "content": ["Accepted, but shouldn't break."],
- "description": "bad value",
- },
- },
- },
-
- "broken_placeholders": {
- "message": "$broken$",
- "description": "broken placeholders",
- "placeholders": "foo.",
- },
- },
-
- "_locales/jp/messages.json": {
- "foo": {
- "message": "(foo)",
- "description": "foo",
- },
-
- "bar": {
- "message": "(bar)",
- "description": "bar",
- },
- },
-
- "content.js": "new " + function(runTestsFn) {
- runTestsFn((...args) => {
- browser.runtime.sendMessage(["assertEq", ...args]);
- });
-
- browser.runtime.sendMessage(["content-script-finished"]);
- } + `(${runTests})`,
- },
-
- background: "new " + function(runTestsFn) {
- browser.runtime.onMessage.addListener(([msg, ...args]) => {
- if (msg == "assertEq") {
- browser.test.assertEq(...args);
- } else {
- browser.test.sendMessage(msg, ...args);
- }
- });
-
- runTestsFn(browser.test.assertEq.bind(browser.test));
- } + `(${runTests})`,
- });
-
- yield extension.startup();
-
- let win = window.open("file_sample.html");
- yield extension.awaitMessage("content-script-finished");
- win.close();
-
- yield extension.unload();
-});
-
-add_task(function* test_get_accept_languages() {
- function background() {
- function checkResults(source, results, expected) {
- browser.test.assertEq(
- expected.length,
- results.length,
- `got expected number of languages in ${source}`);
- results.forEach((lang, index) => {
- browser.test.assertEq(
- expected[index],
- lang,
- `got expected language in ${source}`);
- });
- }
-
- let tabId;
-
- browser.tabs.query({currentWindow: true, active: true}, tabs => {
- tabId = tabs[0].id;
- browser.test.sendMessage("ready");
- });
-
- browser.test.onMessage.addListener(async ([msg, expected]) => {
- let contentResults = await browser.tabs.sendMessage(tabId, "get-results");
- let backgroundResults = await browser.i18n.getAcceptLanguages();
-
- checkResults("contentScript", contentResults, expected);
- checkResults("background", backgroundResults, expected);
-
- browser.test.sendMessage("done");
- });
- }
-
- function content() {
- browser.runtime.onMessage.addListener((msg, sender, respond) => {
- browser.i18n.getAcceptLanguages(respond);
- return true;
- });
- }
-
- let extension = ExtensionTestUtils.loadExtension({
- manifest: {
- "content_scripts": [{
- "matches": ["http://mochi.test/*/file_sample.html"],
- "run_at": "document_start",
- "js": ["content_script.js"],
- }],
- },
-
- background,
-
- files: {
- "content_script.js": content,
- },
- });
-
- let win = window.open("file_sample.html");
-
- yield extension.startup();
- yield extension.awaitMessage("ready");
-
- let expectedLangs = ["en-US", "en"];
- extension.sendMessage(["expect-results", expectedLangs]);
- yield extension.awaitMessage("done");
-
- expectedLangs = ["en-US", "en", "fr-CA", "fr"];
- SpecialPowers.setCharPref("intl.accept_languages", expectedLangs.toString());
- extension.sendMessage(["expect-results", expectedLangs]);
- yield extension.awaitMessage("done");
- SpecialPowers.clearUserPref("intl.accept_languages");
-
- win.close();
-
- yield extension.unload();
-});
-
-add_task(function* test_get_ui_language() {
- function getResults() {
- return {
- getUILanguage: browser.i18n.getUILanguage(),
- getMessage: browser.i18n.getMessage("@@ui_locale"),
- };
- }
-
- function background(getResultsFn) {
- function checkResults(source, results, expected) {
- browser.test.assertEq(
- expected,
- results.getUILanguage,
- `Got expected getUILanguage result in ${source}`
- );
- browser.test.assertEq(
- expected,
- results.getMessage,
- `Got expected getMessage result in ${source}`
- );
- }
-
- let tabId;
-
- browser.test.onMessage.addListener(([msg, expected]) => {
- browser.tabs.sendMessage(tabId, "get-results", result => {
- checkResults("contentScript", result, expected);
- checkResults("background", getResultsFn(), expected);
-
- browser.test.sendMessage("done");
- });
- });
-
- browser.tabs.query({currentWindow: true, active: true}, tabs => {
- tabId = tabs[0].id;
- browser.test.sendMessage("ready");
- });
- }
-
- function content(getResultsFn) {
- browser.runtime.onMessage.addListener((msg, sender, respond) => {
- respond(getResultsFn());
- });
- }
-
- let extension = ExtensionTestUtils.loadExtension({
- manifest: {
- "content_scripts": [{
- "matches": ["http://mochi.test/*/file_sample.html"],
- "run_at": "document_start",
- "js": ["content_script.js"],
- }],
- },
-
- background: `(${background})(${getResults})`,
-
- files: {
- "content_script.js": `(${content})(${getResults})`,
- },
- });
-
- let win = window.open("file_sample.html");
-
- yield extension.startup();
- yield extension.awaitMessage("ready");
-
- extension.sendMessage(["expect-results", "en_US"]);
- yield extension.awaitMessage("done");
-
- SpecialPowers.setCharPref("general.useragent.locale", "he");
-
- extension.sendMessage(["expect-results", "he"]);
- yield extension.awaitMessage("done");
-
- win.close();
-
- yield extension.unload();
-});
-
-
-add_task(function* test_detect_language() {
- const af_string = " aam skukuza die naam beteken hy wat skoonvee of hy wat alles onderstebo keer wysig " +
- "bosveldkampe boskampe is kleiner afgeleë ruskampe wat oor min fasiliteite beskik daar is geen restaurante " +
- "of winkels nie en slegs oornagbesoekers word toegelaat bateleur";
- // String with intermixed French/English text
- const fr_en_string = "France is the largest country in Western Europe and the third-largest in Europe as a whole. " +
- "A accès aux chiens et aux frontaux qui lui ont été il peut consulter et modifier ses collections et exporter " +
- "Cet article concerne le pays européen aujourd’hui appelé République française. Pour d’autres usages du nom France, " +
- "Pour une aide rapide et effective, veuiller trouver votre aide dans le menu ci-dessus." +
- "Motoring events began soon after the construction of the first successful gasoline-fueled automobiles. The quick brown fox jumped over the lazy dog";
-
- function background() {
- function checkResult(source, result, expected) {
- browser.test.assertEq(expected.isReliable, result.isReliable, "result.confident is true");
- browser.test.assertEq(
- expected.languages.length,
- result.languages.length,
- `result.languages contains the expected number of languages in ${source}`);
- expected.languages.forEach((lang, index) => {
- browser.test.assertEq(
- lang.percentage,
- result.languages[index].percentage,
- `element ${index} of result.languages array has the expected percentage in ${source}`);
- browser.test.assertEq(
- lang.language,
- result.languages[index].language,
- `element ${index} of result.languages array has the expected language in ${source}`);
- });
- }
-
- let tabId;
-
- browser.tabs.query({currentWindow: true, active: true}, tabs => {
- tabId = tabs[0].id;
- browser.test.sendMessage("ready");
- });
-
- browser.test.onMessage.addListener(async ([msg, expected]) => {
- let backgroundResults = await browser.i18n.detectLanguage(msg);
- let contentResults = await browser.tabs.sendMessage(tabId, msg);
-
- checkResult("background", backgroundResults, expected);
- checkResult("contentScript", contentResults, expected);
-
- browser.test.sendMessage("done");
- });
- }
-
- function content() {
- browser.runtime.onMessage.addListener((msg, sender, respond) => {
- browser.i18n.detectLanguage(msg, respond);
- return true;
- });
- }
-
- let extension = ExtensionTestUtils.loadExtension({
- manifest: {
- "content_scripts": [{
- "matches": ["http://mochi.test/*/file_sample.html"],
- "run_at": "document_start",
- "js": ["content_script.js"],
- }],
- },
-
- background,
-
- files: {
- "content_script.js": content,
- },
- });
-
- let win = window.open("file_sample.html");
-
- yield extension.startup();
- yield extension.awaitMessage("ready");
-
- let expected = {
- isReliable: true,
- languages: [
- {
- language: "fr",
- percentage: 67,
- },
- {
- language: "en",
- percentage: 32,
- },
- ],
- };
- extension.sendMessage([fr_en_string, expected]);
- yield extension.awaitMessage("done");
-
- expected = {
- isReliable: true,
- languages: [
- {
- language: "af",
- percentage: 99,
- },
- ],
- };
- extension.sendMessage([af_string, expected]);
- yield extension.awaitMessage("done");
-
- win.close();
-
- yield extension.unload();
-});
-
-</script>
-
-</body>
-</html>