summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/lib/sdk/content/l10n-html.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-09 06:46:43 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-09 06:46:43 -0500
commitac46df8daea09899ce30dc8fd70986e258c746bf (patch)
tree2750d3125fc253fd5b0671e4bd268eff1fd97296 /addon-sdk/source/lib/sdk/content/l10n-html.js
parent8cecf8d5208f3945b35f879bba3015bb1a11bec6 (diff)
downloadUXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.gz
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.lz
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.tar.xz
UXP-ac46df8daea09899ce30dc8fd70986e258c746bf.zip
Move Add-on SDK source to toolkit/jetpack
Diffstat (limited to 'addon-sdk/source/lib/sdk/content/l10n-html.js')
-rw-r--r--addon-sdk/source/lib/sdk/content/l10n-html.js133
1 files changed, 0 insertions, 133 deletions
diff --git a/addon-sdk/source/lib/sdk/content/l10n-html.js b/addon-sdk/source/lib/sdk/content/l10n-html.js
deleted file mode 100644
index f324623dc..000000000
--- a/addon-sdk/source/lib/sdk/content/l10n-html.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-"use strict";
-
-module.metadata = {
- "stability": "unstable"
-};
-
-const { Ci, Cc, Cu } = require("chrome");
-const core = require("../l10n/core");
-const { loadSheet, removeSheet } = require("../stylesheet/utils");
-const { process, frames } = require("../remote/child");
-var observerService = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
-const { ShimWaiver } = Cu.import("resource://gre/modules/ShimWaiver.jsm");
-const addObserver = ShimWaiver.getProperty(observerService, "addObserver");
-const removeObserver = ShimWaiver.getProperty(observerService, "removeObserver");
-
-const assetsURI = require('../self').data.url();
-
-const hideSheetUri = "data:text/css,:root {visibility: hidden !important;}";
-
-function translateElementAttributes(element) {
- // Translateable attributes
- const attrList = ['title', 'accesskey', 'alt', 'label', 'placeholder'];
- const ariaAttrMap = {
- 'ariaLabel': 'aria-label',
- 'ariaValueText': 'aria-valuetext',
- 'ariaMozHint': 'aria-moz-hint'
- };
- const attrSeparator = '.';
-
- // Try to translate each of the attributes
- for (let attribute of attrList) {
- const data = core.get(element.dataset.l10nId + attrSeparator + attribute);
- if (data)
- element.setAttribute(attribute, data);
- }
-
- // Look for the aria attribute translations that match fxOS's aliases
- for (let attrAlias in ariaAttrMap) {
- const data = core.get(element.dataset.l10nId + attrSeparator + attrAlias);
- if (data)
- element.setAttribute(ariaAttrMap[attrAlias], data);
- }
-}
-
-// Taken from Gaia:
-// https://github.com/andreasgal/gaia/blob/04fde2640a7f40314643016a5a6c98bf3755f5fd/webapi.js#L1470
-function translateElement(element) {
- element = element || document;
-
- // check all translatable children (= w/ a `data-l10n-id' attribute)
- var children = element.querySelectorAll('*[data-l10n-id]');
- var elementCount = children.length;
- for (var i = 0; i < elementCount; i++) {
- var child = children[i];
-
- // translate the child
- var key = child.dataset.l10nId;
- var data = core.get(key);
- if (data)
- child.textContent = data;
-
- translateElementAttributes(child);
- }
-}
-exports.translateElement = translateElement;
-
-function onDocumentReady2Translate(event) {
- let document = event.target;
- document.removeEventListener("DOMContentLoaded", onDocumentReady2Translate,
- false);
-
- translateElement(document);
-
- try {
- // Finally display document when we finished replacing all text content
- if (document.defaultView)
- removeSheet(document.defaultView, hideSheetUri, 'user');
- }
- catch(e) {
- console.exception(e);
- }
-}
-
-function onContentWindow(document) {
- // Accept only HTML documents
- if (!(document instanceof Ci.nsIDOMHTMLDocument))
- return;
-
- // Bug 769483: data:URI documents instanciated with nsIDOMParser
- // have a null `location` attribute at this time
- if (!document.location)
- return;
-
- // Accept only document from this addon
- if (document.location.href.indexOf(assetsURI) !== 0)
- return;
-
- try {
- // First hide content of the document in order to have content blinking
- // between untranslated and translated states
- loadSheet(document.defaultView, hideSheetUri, 'user');
- }
- catch(e) {
- console.exception(e);
- }
- // Wait for DOM tree to be built before applying localization
- document.addEventListener("DOMContentLoaded", onDocumentReady2Translate,
- false);
-}
-
-// Listen to creation of content documents in order to translate them as soon
-// as possible in their loading process
-const ON_CONTENT = "document-element-inserted";
-let enabled = false;
-function enable() {
- if (enabled)
- return;
- addObserver(onContentWindow, ON_CONTENT, false);
- enabled = true;
-}
-process.port.on("sdk/l10n/html/enable", enable);
-
-function disable() {
- if (!enabled)
- return;
- removeObserver(onContentWindow, ON_CONTENT);
- enabled = false;
-}
-process.port.on("sdk/l10n/html/disable", disable);