forked from mirrors/gecko-dev
		
	This change adds and integrates a Preferences UI for Firefox Reality on Desktop. This simple page supports 3 behaviors: - Viewing the privacy policy - Toggly Telemetry - Clearing User Data The latter two have an impact on the desktop install of Firefox associated with this instance of FxR. Subsequent changes will update the UI to design specifications as well as migrate the strings to Fluent. Differential Revision: https://phabricator.services.mozilla.com/D48186 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			119 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 | 
						|
 * 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/. */
 | 
						|
 | 
						|
/* import-globals-from common.js */
 | 
						|
 | 
						|
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 | 
						|
 | 
						|
var { AppConstants } = ChromeUtils.import(
 | 
						|
  "resource://gre/modules/AppConstants.jsm"
 | 
						|
);
 | 
						|
 | 
						|
const PREF_UPLOAD_ENABLED = "datareporting.healthreport.uploadEnabled";
 | 
						|
 | 
						|
window.addEventListener(
 | 
						|
  "DOMContentLoaded",
 | 
						|
  () => {
 | 
						|
    initAboutInfo();
 | 
						|
    initClearAllData();
 | 
						|
    initSubmitHealthReport();
 | 
						|
    initParentDependencies();
 | 
						|
  },
 | 
						|
  { once: true }
 | 
						|
);
 | 
						|
 | 
						|
function initAboutInfo() {
 | 
						|
  // Bug 1586294 - Update FxR Desktop Settings to use Fluent
 | 
						|
  document.getElementById("eFxrVersion").textContent = "version 0.9";
 | 
						|
  document.getElementById("eFxrDate").textContent = "(2019-10-22)";
 | 
						|
  document.getElementById("eFxVersion").textContent =
 | 
						|
    "Firefox version " + Services.appinfo.version;
 | 
						|
}
 | 
						|
 | 
						|
function initClearAllData() {
 | 
						|
  let eClearPrompt = document.getElementById("eClearPrompt");
 | 
						|
 | 
						|
  let eClearTry = document.getElementById("eClearTry");
 | 
						|
  eClearTry.addEventListener("click", () => {
 | 
						|
    showModalContainer(eClearPrompt);
 | 
						|
  });
 | 
						|
 | 
						|
  // Note: the calls to clearModalContainer below return eClearPrompt
 | 
						|
  // back to <body> to be reused later, because it is moved into anothe
 | 
						|
  // element in showModalContainer.
 | 
						|
 | 
						|
  let eClearCancel = document.getElementById("eClearCancel");
 | 
						|
  eClearCancel.addEventListener("click", () => {
 | 
						|
    document.body.appendChild(clearModalContainer());
 | 
						|
  });
 | 
						|
 | 
						|
  // When the confirm option is visible, do the work to actually clear the data
 | 
						|
  document.getElementById("eClearConfirm").addEventListener("click", () => {
 | 
						|
    Services.clearData.deleteData(Ci.nsIClearDataService.CLEAR_ALL, function(
 | 
						|
      aFailedFlags
 | 
						|
    ) {
 | 
						|
      if (aFailedFlags == 0) {
 | 
						|
        eClearTry.textContent = "Data cleared";
 | 
						|
        eClearTry.disabled = true;
 | 
						|
        document.body.appendChild(clearModalContainer());
 | 
						|
      } else {
 | 
						|
        eClearTry.textContent = "Error";
 | 
						|
      }
 | 
						|
    });
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
// Based on https://searchfox.org/mozilla-central/source/browser/components/preferences/in-content/privacy.js
 | 
						|
function initSubmitHealthReport() {
 | 
						|
  let checkbox = document.getElementById("eCrashConfig");
 | 
						|
 | 
						|
  // Telemetry is only sending data if MOZ_TELEMETRY_REPORTING is defined.
 | 
						|
  // We still want to display the preferences panel if that's not the case, but
 | 
						|
  // we want it to be disabled and unchecked.
 | 
						|
  if (
 | 
						|
    Services.prefs.prefIsLocked(PREF_UPLOAD_ENABLED) ||
 | 
						|
    !AppConstants.MOZ_TELEMETRY_REPORTING
 | 
						|
  ) {
 | 
						|
    checkbox.disabled = true;
 | 
						|
  } else {
 | 
						|
    checkbox.addEventListener("change", updateSubmitHealthReport);
 | 
						|
 | 
						|
    checkbox.checked =
 | 
						|
      Services.prefs.getBoolPref(PREF_UPLOAD_ENABLED) &&
 | 
						|
      AppConstants.MOZ_TELEMETRY_REPORTING;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Update the health report preference with state from checkbox.
 | 
						|
 */
 | 
						|
function updateSubmitHealthReport() {
 | 
						|
  let checkbox = document.getElementById("eCrashConfig");
 | 
						|
  Services.prefs.setBoolPref(PREF_UPLOAD_ENABLED, checkbox.checked);
 | 
						|
}
 | 
						|
 | 
						|
// prefs.html can be loaded as another <browser> from fxrui.html. In this
 | 
						|
// scenario, some actions are propogated to the parent
 | 
						|
function initParentDependencies() {
 | 
						|
  if (window.parent != window) {
 | 
						|
    // Close the <browser> instance that loaded this page
 | 
						|
    document.getElementById("eCloseSettings").addEventListener("click", () => {
 | 
						|
      window.parent.closeSettings();
 | 
						|
    });
 | 
						|
 | 
						|
    // Load the relevant URLs into the top UI's <browser>
 | 
						|
    document.getElementById("ePrivacyPolicy").addEventListener("click", () => {
 | 
						|
      window.parent.showPrivacyPolicy();
 | 
						|
    });
 | 
						|
 | 
						|
    document.getElementById("eLicenseInfo").addEventListener("click", () => {
 | 
						|
      window.parent.showLicenseInfo();
 | 
						|
    });
 | 
						|
 | 
						|
    document.getElementById("eReportIssue").addEventListener("click", () => {
 | 
						|
      window.parent.showReportIssue();
 | 
						|
    });
 | 
						|
  }
 | 
						|
}
 |