Skip to content

Commit

Permalink
Bug 26884 - Part 1: Move show_torbrowser_manual and
Browse files Browse the repository at this point in the history
get_general_useragent_locale to utils

On Desktop, show_torbrowser_manual is a torbutton.js method and it
is called by other components using the window.opener.

However, on mobile, the security settings is opened in a tab instead
of a modal. Thus the window.opener is nil.

This patch moves the show_torbrowser_manual to util.js allowing it
to be accessible from anywhere.
  • Loading branch information
Igor Oliveira authored and arthuredelstein committed Aug 21, 2018
1 parent d06cb31 commit 5b5931e
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 35 deletions.
4 changes: 2 additions & 2 deletions src/chrome/content/aboutTor/aboutTor-content.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var {classes: Cc, interfaces: Ci, utils: Cu} = Components;


Cu.import("resource://gre/modules/Services.jsm");
let { bindPrefAndInit } = Cu.import("resource://torbutton/modules/utils.js", {});
let { bindPrefAndInit, show_torbrowser_manual } = Cu.import("resource://torbutton/modules/utils.js", {});


var AboutTorListener = {
Expand Down Expand Up @@ -89,7 +89,7 @@ var AboutTorListener = {
else
body.removeAttribute("toron");

if (aData.showManual)
if (show_torbrowser_manual())
body.setAttribute("showmanual", "yes");
else
body.removeAttribute("showmanual");
Expand Down
4 changes: 2 additions & 2 deletions src/chrome/content/preferences.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ let { utils: Cu } = Components;
let { getBoolPref, getIntPref, setBoolPref, setIntPref, getCharPref } =
Cu.import("resource://gre/modules/Services.jsm", {}).Services.prefs;

let { getLocale } =
let { getLocale, show_torbrowser_manual } =
Cu.import("resource://torbutton/modules/utils.js", {});

// Description elements have the follow names.
Expand Down Expand Up @@ -67,7 +67,7 @@ function torbutton_save_security_settings() {
// Help Menu and on about:tor: if we have the manual available for a locale,
// let's show the "Learn more"-link, otherwise hide it.
function torbutton_set_learn_more_links() {
let show_manual = window.opener.torbutton_show_torbrowser_manual();
let show_manual = show_torbrowser_manual();
let locale = ""
if (show_manual) {
locale = getLocale();
Expand Down
4 changes: 2 additions & 2 deletions src/chrome/content/tor-circuit-display.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Cu.import("resource://gre/modules/Services.jsm");
let { controller } = Cu.import("resource://torbutton/modules/tor-control-port.js", {});

// Utility functions
let { bindPrefAndInit, observe } = Cu.import("resource://torbutton/modules/utils.js", {});
let { bindPrefAndInit, observe, getLocale } = Cu.import("resource://torbutton/modules/utils.js", {});

// Make the TorButton logger available.
let logger = Cc["@torproject.org/torbutton-logger;1"]
Expand Down Expand Up @@ -381,7 +381,7 @@ let setupGuardNote = function () {
let guardNoteString = uiString("guard_note");
let learnMoreString = uiString("learn_more");
let [noteBefore, name, noteAfter] = guardNoteString.split(/[\[\]]/);
let localeCode = torbutton_get_general_useragent_locale();
let localeCode = getLocale();
appendHtml(guardNote,
["div", {},
noteBefore, ["span", {class: "circuit-guard-name"}, name],
Expand Down
33 changes: 5 additions & 28 deletions src/chrome/content/torbutton.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
// http://kb.mozillazine.org/Links_to_local_pages_don%27t_work

let { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
let { showDialog } = Cu.import("resource://torbutton/modules/utils.js", {});
let { getLocale, unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js", {});
let { showDialog, show_torbrowser_manual } = Cu.import("resource://torbutton/modules/utils.js", {});
let { unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js", {});
let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js", {});
let NoScriptControl = Cu.import("resource://torbutton/modules/noscript-control.js", {});
let { bindPrefAndInit, observe } = Cu.import("resource://torbutton/modules/utils.js", {});
Expand Down Expand Up @@ -435,8 +435,7 @@ var torbutton_abouttor_message_handler = {
// not working.
get chromeData() {
return {
torOn: torbutton_tor_check_ok(),
showManual: torbutton_show_torbrowser_manual()
torOn: torbutton_tor_check_ok()
};
}
};
Expand Down Expand Up @@ -730,21 +729,6 @@ function torbutton_update_toolbutton()
torbutton_get_property_string(tooltipKey));
}

// Bug 1506 P3: Support code for language+uagent spoofing
function torbutton_get_general_useragent_locale() {
try {
const locale = getLocale();
if (/chrome:\/\//.test(locale)) {
return m_tb_prefs.getComplexValue("intl.locale.requested",
Components.interfaces.nsIPrefLocalizedString).data;
}
return locale;
} catch(err) {
torbutton_log(4, "Error while getting locale" + err);
return 'en-US';
}
}

// Bug 1506 P4: Control port interaction. Needed for New Identity.
function torbutton_socket_readline(input) {
var str = "";
Expand Down Expand Up @@ -2213,20 +2197,13 @@ function torbutton_update_noscript_button()
}, 0);
}

// Returns true if we should show the tor browser manual.
function torbutton_show_torbrowser_manual() {
let availableLocales = ["de", "en", "es", "fr", "nl", "pt", "tr", "vi", "zh"];
let shortLocale = torbutton_get_general_useragent_locale().substring(0, 2);
return availableLocales.indexOf(shortLocale) >= 0;
}

// Makes sure the item in the Help Menu and the link in about:tor
// for the Tor Browser User Manual are only visible when
// torbutton_show_torbrowser_manual() returns true.
// show_torbrowser_manual() returns true.
function torbutton_init_user_manual_links() {
let menuitem = document.getElementById("torBrowserUserManual");
bindPrefAndInit("intl.locale.requested", val => {
menuitem.hidden = !torbutton_show_torbrowser_manual();
menuitem.hidden = !show_torbrowser_manual();
torbutton_abouttor_message_handler.updateAllOpenPages();
});
}
Expand Down
10 changes: 9 additions & 1 deletion src/modules/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,14 @@ var unescapeTorString = function(str) {
return _torControl._strUnescape(str);
};

// Returns true if we should show the tor browser manual.
var show_torbrowser_manual = () => {
let availableLocales = ["de", "en", "es", "fr", "nl", "pt", "tr", "vi", "zh"];
let shortLocale = getLocale().substring(0, 2);
return availableLocales.indexOf(shortLocale) >= 0;
}


// Export utility functions for external use.
let EXPORTED_SYMBOLS = ["bindPref", "bindPrefAndInit", "getEnv", "getLocale",
"getPrefValue", "observe", "showDialog", "unescapeTorString"];
"getPrefValue", "observe", "showDialog", "show_torbrowser_manual", "unescapeTorString"];

0 comments on commit 5b5931e

Please sign in to comment.