tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

safeMode.js (2242B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 const appStartup = Services.startup;
      7 
      8 const { ResetProfile } = ChromeUtils.importESModule(
      9  "resource://gre/modules/ResetProfile.sys.mjs"
     10 );
     11 
     12 var defaultToReset = false;
     13 
     14 function showResetDialog() {
     15  // Prompt the user to confirm the reset.
     16  let retVals = {
     17    reset: false,
     18  };
     19  window.openDialog(
     20    "chrome://global/content/resetProfile.xhtml",
     21    null,
     22    "chrome,modal,centerscreen,titlebar,dialog=yes",
     23    retVals
     24  );
     25  if (!retVals.reset) {
     26    return;
     27  }
     28 
     29  ResetProfile.doReset();
     30 }
     31 
     32 function onDefaultButton(event) {
     33  if (defaultToReset) {
     34    // Prevent starting into safe mode while restarting.
     35    event.preventDefault();
     36    // Restart to reset the profile.
     37    ResetProfile.doReset();
     38  }
     39  // Dialog will be closed by default Event handler.
     40  // Continue in safe mode. No restart needed.
     41 }
     42 
     43 function onCancel() {
     44  appStartup.quit(appStartup.eForceQuit);
     45 }
     46 
     47 function onExtra1() {
     48  if (defaultToReset) {
     49    // Continue in safe mode
     50    window.close();
     51  }
     52  // The reset dialog will handle starting the reset process if the user confirms.
     53  showResetDialog();
     54 }
     55 
     56 window.addEventListener("load", () => {
     57  const dialog = document.getElementById("safeModeDialog");
     58  if (appStartup.automaticSafeModeNecessary) {
     59    document.getElementById("autoSafeMode").hidden = false;
     60    document.getElementById("safeMode").hidden = true;
     61    if (ResetProfile.resetSupported()) {
     62      document.getElementById("resetProfile").hidden = false;
     63    } else {
     64      // Hide the reset button is it's not supported.
     65      dialog.getButton("extra1").hidden = true;
     66    }
     67  } else if (!ResetProfile.resetSupported()) {
     68    // Hide the reset button and text if it's not supported.
     69    dialog.getButton("extra1").hidden = true;
     70    document.getElementById("resetProfileInstead").hidden = true;
     71  }
     72  document.addEventListener("dialogaccept", onDefaultButton);
     73  document.addEventListener("dialogcancel", onCancel);
     74  document.addEventListener("dialogextra1", onExtra1);
     75 });