Backed out changeset cbde1c9e78d5 (bug 1318605) for failing test_reader_view.html and test_session_scroll_position.html on Android. r=backout

This commit is contained in:
Sebastian Hengst 2016-11-29 18:25:46 +01:00
Родитель 0f7459dfc2
Коммит e65067f730
3 изменённых файлов: 32 добавлений и 33 удалений

Просмотреть файл

@ -16,10 +16,9 @@ this.EXPORTED_SYMBOLS = ["NarrateControls"];
var gStrings = Services.strings.createBundle("chrome://global/locale/narrate.properties");
function NarrateControls(mm, win, languagePromise) {
function NarrateControls(mm, win) {
this._mm = mm;
this._winRef = Cu.getWeakReference(win);
this._languagePromise = languagePromise;
win.addEventListener("unload", this);
@ -111,7 +110,7 @@ function NarrateControls(mm, win, languagePromise) {
<div class="dropdown-arrow"></div>
</li>`;
this.narrator = new Narrator(win, languagePromise);
this.narrator = new Narrator(win);
let branch = Services.prefs.getBranch("narrate.");
let selectLabel = gStrings.GetStringFromName("selectvoicelabel");
@ -164,7 +163,7 @@ NarrateControls.prototype = {
* Returns true if synth voices are available.
*/
_setupVoices: function() {
return this._languagePromise.then(language => {
return this.narrator.languagePromise.then(language => {
this.voiceSelect.clear();
let win = this._win;
let voicePrefs = this._getVoicePref();
@ -228,7 +227,7 @@ NarrateControls.prototype = {
_onVoiceChange: function() {
let voice = this.voice;
this.narrator.setVoice(voice);
this._languagePromise.then(language => {
this.narrator.languagePromise.then(language => {
if (language) {
let voicePref = this._getVoicePref();
voicePref[language || "default"] = voice;

Просмотреть файл

@ -8,6 +8,8 @@ const { interfaces: Ci, utils: Cu } = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "LanguageDetector",
"resource:///modules/translation/LanguageDetector.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Services",
"resource://gre/modules/Services.jsm");
@ -22,13 +24,29 @@ const kTextStylesRules = ["font-family", "font-kerning", "font-size",
"line-height", "letter-spacing", "text-orientation",
"text-transform", "word-spacing"];
function Narrator(win, languagePromise) {
function Narrator(win) {
this._winRef = Cu.getWeakReference(win);
this._languagePromise = languagePromise;
this._inTest = Services.prefs.getBoolPref("narrate.test");
this._speechOptions = {};
this._startTime = 0;
this._stopped = false;
this.languagePromise = new Promise(resolve => {
let detect = () => {
win.document.removeEventListener("AboutReaderContentReady", detect);
let sampleText = this._doc.getElementById(
"moz-reader-content").textContent.substring(0, 60 * 1024);
LanguageDetector.detectLanguage(sampleText).then(result => {
resolve(result.confident ? result.language : null);
});
};
if (win.document.body.classList.contains("loaded")) {
detect();
} else {
win.document.addEventListener("AboutReaderContentReady", detect);
}
});
}
Narrator.prototype = {
@ -248,7 +266,7 @@ Narrator.prototype = {
};
this._stopped = false;
return this._languagePromise.then(language => {
return this.languagePromise.then(language => {
if (!this._speechOptions.voice) {
this._speechOptions.lang = language;
}

Просмотреть файл

@ -17,7 +17,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "NarrateControls", "resource://gre/modul
XPCOMUtils.defineLazyModuleGetter(this, "Rect", "resource://gre/modules/Geometry.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Task", "resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "UITelemetry", "resource://gre/modules/UITelemetry.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "LanguageDetector", "resource:///modules/translation/LanguageDetector.jsm");
var gStrings = Services.strings.createBundle("chrome://global/locale/aboutReader.properties");
@ -46,9 +45,6 @@ var AboutReader = function(mm, win, articlePromise) {
.getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID;
this._article = null;
this._languagePromise = new Promise(resolve => {
this._foundLanguage = resolve;
});
if (articlePromise) {
this._articlePromise = articlePromise;
@ -118,7 +114,7 @@ var AboutReader = function(mm, win, articlePromise) {
this._setupLineHeightButtons();
if (win.speechSynthesis && Services.prefs.getBoolPref("narrate.enabled")) {
new NarrateControls(mm, win, this._languagePromise);
new NarrateControls(mm, win);
}
this._loadArticle();
@ -717,19 +713,12 @@ AboutReader.prototype = {
},
_maybeSetTextDirection: function Read_maybeSetTextDirection(article) {
if (article.dir) {
// Set "dir" attribute on content
this._contentElement.setAttribute("dir", article.dir);
this._headerElement.setAttribute("dir", article.dir);
} else {
this._languagePromise.then(language => {
// TODO: Remove the hardcoded language codes below once bug 1320265 is resolved.
if (["ar", "fa", "he", "ug", "ur"].includes(language)) {
this._contentElement.setAttribute("dir", "rtl");
this._headerElement.setAttribute("dir", "rtl");
}
});
}
if (!article.dir)
return;
// Set "dir" attribute on content
this._contentElement.setAttribute("dir", article.dir);
this._headerElement.setAttribute("dir", article.dir);
},
_fixLocalLinks() {
@ -799,7 +788,6 @@ AboutReader.prototype = {
this._contentElement.innerHTML = "";
this._contentElement.appendChild(contentFragment);
this._fixLocalLinks();
this._findLanguage(article.textContent);
this._maybeSetTextDirection(article);
this._contentElement.style.display = "block";
@ -816,12 +804,6 @@ AboutReader.prototype = {
new this._win.CustomEvent("AboutReaderContentReady", { bubbles: true, cancelable: false }));
},
_findLanguage: function(textContent) {
LanguageDetector.detectLanguage(textContent).then(result => {
this._foundLanguage(result.confident ? result.language : null);
});
},
_hideContent: function() {
this._headerElement.style.display = "none";
this._contentElement.style.display = "none";