Bug 1385170 - show button string by checking if the platform support set default browser in background;r=mossop draft
authorgasolin <gasolin@gmail.com>
Fri, 28 Jul 2017 13:39:31 +0800
changeset 618767 736f843ceb898f43707e86cc323334242a097c04
parent 618757 44121dbcac6a9d3ff18ed087a09b3205e5a04db1
child 640175 6b629980feb82c4268e8e71caca373891116fb92
push id71447
push userbmo:gasolin@mozilla.com
push dateTue, 01 Aug 2017 02:54:38 +0000
reviewersmossop
bugs1385170
milestone56.0a1
Bug 1385170 - show button string by checking if the platform support set default browser in background;r=mossop MozReview-Commit-ID: E71IN3QFsqo
browser/extensions/onboarding/content/onboarding-tour-agent.js
browser/extensions/onboarding/content/onboarding.js
--- a/browser/extensions/onboarding/content/onboarding-tour-agent.js
+++ b/browser/extensions/onboarding/content/onboarding-tour-agent.js
@@ -1,33 +1,46 @@
 /* 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/. */
 
  /* globals Mozilla */
 
 "use strict";
 
+document.addEventListener("Agent:CanSetDefaultBrowserInBackground", () => {
+  Mozilla.UITour.getConfiguration("appinfo", config => {
+    let canSetInBackGround = config.canSetDefaultBrowserInBackground;
+    let btn = document.getElementById("onboarding-tour-default-browser-button");
+    btn.setAttribute("data-cansetbg", canSetInBackGround);
+    btn.textContent = canSetInBackGround ? btn.getAttribute("data-bg") : btn.getAttribute("data-panel");
+  });
+});
+
 document.getElementById("onboarding-overlay")
-                        .addEventListener("click", evt => {
+  .addEventListener("click", evt => {
   switch (evt.target.id) {
     case "onboarding-tour-addons-button":
       Mozilla.UITour.showHighlight("addons");
       break;
     case "onboarding-tour-customize-button":
       Mozilla.UITour.showHighlight("customize");
       break;
     case "onboarding-tour-default-browser-button":
       Mozilla.UITour.getConfiguration("appinfo", (config) => {
         let isDefaultBrowser = config.defaultBrowser;
         let btn = document.getElementById("onboarding-tour-default-browser-button");
         let msg = document.getElementById("onboarding-tour-is-default-browser-msg");
-        if (isDefaultBrowser) {
+        let canSetInBackGround = btn.getAttribute("data-cansetbg") === "true";
+        if (isDefaultBrowser || canSetInBackGround) {
           btn.classList.add("onboarding-hidden");
           msg.classList.remove("onboarding-hidden");
+          if (canSetInBackGround) {
+            Mozilla.UITour.setConfiguration("defaultBrowser");
+          }
         } else {
           btn.disabled = true;
           Mozilla.UITour.setConfiguration("defaultBrowser");
         }
       });
       break;
     case "onboarding-tour-library-button":
       Mozilla.UITour.showHighlight("library");
--- a/browser/extensions/onboarding/content/onboarding.js
+++ b/browser/extensions/onboarding/content/onboarding.js
@@ -157,34 +157,39 @@ var onboardingTourset = {
       return {
         title: bundle.formatStringFromName("onboarding.notification.onboarding-tour-default-browser.title", [BRAND_SHORT_NAME], 1),
         message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-default-browser.message", [BRAND_SHORT_NAME], 1),
         button: bundle.GetStringFromName("onboarding.button.learnMore"),
       };
     },
     getPage(win, bundle) {
       let div = win.document.createElement("div");
-      let defaultBrowserButtonId = win.matchMedia("(-moz-os-version: windows-win7)").matches ?
-        "onboarding.tour-default-browser.win7.button" : "onboarding.tour-default-browser.button";
+      let setFromBackGround = bundle.formatStringFromName("onboarding.tour-default-browser.win7.button", [BRAND_SHORT_NAME], 1);
+      let setFromPanel = bundle.GetStringFromName("onboarding.tour-default-browser.button");
       let isDefaultMessage = bundle.GetStringFromName("onboarding.tour-default-browser.is-default.message");
       let isDefault2ndMessage = bundle.formatStringFromName("onboarding.tour-default-browser.is-default.2nd-message", [BRAND_SHORT_NAME], 1);
       // eslint-disable-next-line no-unsanitized/property
       div.innerHTML = `
         <section class="onboarding-tour-description">
           <h1 data-l10n-id="onboarding.tour-default-browser.title2"></h1>
           <p data-l10n-id="onboarding.tour-default-browser.description2"></p>
         </section>
         <section class="onboarding-tour-content">
           <img src="resource://onboarding/img/figure_default.svg" role="presentation"/>
         </section>
         <aside class="onboarding-tour-button-container">
-          <button id="onboarding-tour-default-browser-button" class="onboarding-tour-action-button" data-l10n-id="${defaultBrowserButtonId}"></button>
+          <button id="onboarding-tour-default-browser-button" class="onboarding-tour-action-button"
+            data-bg="${setFromBackGround}" data-panel="${setFromPanel}"></button>
           <div id="onboarding-tour-is-default-browser-msg" class="onboarding-hidden">${isDefaultMessage}<br/>${isDefault2ndMessage}</div>
         </aside>
       `;
+
+      div.addEventListener("beforeshow", () => {
+        win.document.dispatchEvent(new Event("Agent:CanSetDefaultBrowserInBackground"));
+      });
       return div;
     },
   },
   "sync": {
     id: "onboarding-tour-sync",
     tourNameId: "onboarding.tour-sync2",
     getNotificationStrings(bundle) {
       return {