From eef30d6c77efb4dde4d60c812210b3c4f5af1658 Mon Sep 17 00:00:00 2001 From: Kathy Brade Date: Wed, 13 Feb 2019 11:32:13 -0500 Subject: [PATCH] Bug 27486 Avoid about:blank tabs when opening onboarding pages. Instead of using a simple , 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". --- browser/extensions/onboarding/bootstrap.js | 17 +++++++++-------- .../onboarding/content/Onboarding.jsm | 12 +++++++++++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/browser/extensions/onboarding/bootstrap.js b/browser/extensions/onboarding/bootstrap.js index 830b5c93f3d0c..712d8037f300a 100644 --- a/browser/extensions/onboarding/bootstrap.js +++ b/browser/extensions/onboarding/bootstrap.js @@ -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; - let b = tabBrowser.getBrowserForTab(tab); - b.messageManager.loadFrameScript(kFrameScript, true); + + if (aFrameScript) { + let b = tabBrowser.getBrowserForTab(tab); + 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. diff --git a/browser/extensions/onboarding/content/Onboarding.jsm b/browser/extensions/onboarding/content/Onboarding.jsm index aa23deb85c75a..86e5d8d5af871 100644 --- a/browser/extensions/onboarding/content/Onboarding.jsm +++ b/browser/extensions/onboarding/content/Onboarding.jsm @@ -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")) { -- GitLab