Commit 648e26ff authored by Kathleen Brade's avatar Kathleen Brade Committed by Matthew Finkel
Browse files

Bug 27486 Avoid about:blank tabs when opening onboarding pages.

Instead of using a simple <a href>, programmatically open onboarding
web pages by using tabBrowser.addTab(). The same technique is now
used for "See My Path", "See FAQs", and "Visit an Onion".
parent 51280a1d
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -97,16 +97,17 @@ function setPrefs(prefs) {
  });
}

function openTorCircuitDisplayPage() {
  let kFrameScript = "resource://onboarding/onboarding-tor-circuit-display.js";
  const kOnionURL = "https://3g2upl4pq6kufc4m.onion/";	// DuckDuckGo
function openTorTab(aURL, aFrameScript) {
  let win = Services.wm.getMostRecentWindow('navigator:browser');
  if (win) {
    let tabBrowser = win.gBrowser;
    let tab = tabBrowser.addTab(kOnionURL);
    let tab = tabBrowser.addTab(aURL);
    tabBrowser.selectedTab = tab;

    if (aFrameScript) {
      let b = tabBrowser.getBrowserForTab(tab);
    b.messageManager.loadFrameScript(kFrameScript, true);
      b.messageManager.loadFrameScript(aFrameScript, true);
    }
  }
}

@@ -183,8 +184,8 @@ function initContentMessageListener() {
          isLoggedIn: syncTourChecker.isLoggedIn(),
        });
        break;
      case "tor-open-circuit-display-page":
        openTorCircuitDisplayPage();
      case "tor-open-tab":
        openTorTab(msg.data.params.url, msg.data.params.frameScriptURL);
        break;
#if 0
// No telemetry in Tor Browser.
+11 −1
Original line number Diff line number Diff line
@@ -841,6 +841,7 @@ class Onboarding {
      ({ id, classList } = target.firstChild);
    }

    const kOnionURL = "https://3g2upl4pq6kufc4m.onion/";  // DuckDuckGo
    let handledTourActionClick = false;
    switch (id) {
      case "onboarding-overlay-button":
@@ -921,7 +922,16 @@ class Onboarding {
        handledTourActionClick = true;
        break;
      case "onboarding-tour-tor-circuit-display-button":
        this.sendMessageToChrome("tor-open-circuit-display-page");
        let kFrameScript = "resource://onboarding/onboarding-tor-circuit-display.js";
        this.sendMessageToChrome("tor-open-tab",
                            {url: kOnionURL, frameScriptURL: kFrameScript});
        break;
      case "onboarding-tour-tor-expect-differences-button":
        const kFAQURL = "https://support.torproject.org/#faq";
        this.sendMessageToChrome("tor-open-tab", {url: kFAQURL});
        break;
      case "onboarding-tour-tor-onion-services-button":
        this.sendMessageToChrome("tor-open-tab", {url: kOnionURL});
        break;
    }
    if (classList.contains("onboarding-tour-item")) {