browser/base/content/aboutNetError-new.xhtml
author Johann Hofmann <jhofmann@mozilla.com>
Wed, 17 Oct 2018 13:09:27 +0000
changeset 490058 868c99ece921edeec1b06259ee4060d35adeceea
parent 490057 00562394d243152bc7a729be27ee97efd47b7183
child 490061 3c175c006e65b1c139a1070d3d00e18e0d034d49
permissions -rw-r--r--
Bug 1484873 - Add a "View Certificate" link to all cert error pages. r=nhnt11 Differential Revision: https://phabricator.services.mozilla.com/D8966

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html [
  <!ENTITY % htmlDTD
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "DTD/xhtml1-strict.dtd">
  %htmlDTD;
  <!ENTITY % netErrorDTD
    SYSTEM "chrome://browser/locale/netError.dtd">
  %netErrorDTD;
  <!ENTITY % globalDTD
    SYSTEM "chrome://global/locale/global.dtd">
  %globalDTD;
]>

<!-- 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/. -->

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Security-Policy" content="default-src chrome:" />
    <title>&loadError.label;</title>
    <link rel="stylesheet" href="chrome://browser/skin/aboutNetError-new.css" type="text/css" media="all" />
    <!-- If the location of the favicon is changed here, the FAVICON_ERRORPAGE_URL symbol in
         toolkit/components/places/src/nsFaviconService.h should be updated. -->
    <link rel="icon" id="favicon" href="chrome://global/skin/icons/warning.svg"/>
  </head>

  <body dir="&locale.dir;">
    <!-- ERROR ITEM CONTAINER (removed during loading to avoid bug 39098) -->
    <div id="errorContainer">
      <div id="errorPageTitlesContainer">
        <span id="ept_nssBadCert">&certerror.pagetitle2;</span>
        <span id="ept_nssBadCert_sts">&certerror.sts.pagetitle;</span>
        <span id="ept_captivePortal">&captivePortal.title;</span>
        <span id="ept_dnsNotFound">&dnsNotFound.pageTitle;</span>
        <span id="ept_malformedURI">&malformedURI.pageTitle;</span>
        <span id="ept_blockedByPolicy">&blockedByPolicy.title;</span>
      </div>
      <div id="errorTitlesContainer">
        <h1 id="et_generic">&generic.title;</h1>
        <h1 id="et_captivePortal">&captivePortal.title;</h1>
        <h1 id="et_dnsNotFound">&dnsNotFound.title1;</h1>
        <h1 id="et_fileNotFound">&fileNotFound.title;</h1>
        <h1 id="et_fileAccessDenied">&fileAccessDenied.title;</h1>
        <h1 id="et_malformedURI">&malformedURI.title1;</h1>
        <h1 id="et_unknownProtocolFound">&unknownProtocolFound.title;</h1>
        <h1 id="et_connectionFailure">&connectionFailure.title;</h1>
        <h1 id="et_netTimeout">&netTimeout.title;</h1>
        <h1 id="et_redirectLoop">&redirectLoop.title;</h1>
        <h1 id="et_unknownSocketType">&unknownSocketType.title;</h1>
        <h1 id="et_netReset">&netReset.title;</h1>
        <h1 id="et_notCached">&notCached.title;</h1>
        <h1 id="et_netOffline">&netOffline.title;</h1>
        <h1 id="et_netInterrupt">&netInterrupt.title;</h1>
        <h1 id="et_deniedPortAccess">&deniedPortAccess.title;</h1>
        <h1 id="et_proxyResolveFailure">&proxyResolveFailure.title;</h1>
        <h1 id="et_proxyConnectFailure">&proxyConnectFailure.title;</h1>
        <h1 id="et_contentEncodingError">&contentEncodingError.title;</h1>
        <h1 id="et_unsafeContentType">&unsafeContentType.title;</h1>
        <h1 id="et_nssFailure2">&nssFailure2.title;</h1>
        <h1 id="et_nssBadCert">&certerror.longpagetitle2;</h1>
        <h1 id="et_nssBadCert_sts">&certerror.sts.longpagetitle;</h1>
        <h1 id="et_cspBlocked">&cspBlocked.title;</h1>
        <h1 id="et_remoteXUL">&remoteXUL.title;</h1>
        <h1 id="et_corruptedContentErrorv2">&corruptedContentErrorv2.title;</h1>
        <h1 id="et_sslv3Used">&sslv3Used.title;</h1>
        <h1 id="et_inadequateSecurityError">&inadequateSecurityError.title;</h1>
        <h1 id="et_blockedByPolicy">&blockedByPolicy.title;</h1>
        <h1 id="et_clockSkewError">&clockSkewError.title;</h1>
      </div>
      <div id="errorDescriptionsContainer">
        <div id="ed_generic">&generic.longDesc;</div>
        <div id="ed_captivePortal">&captivePortal.longDesc2;</div>
        <div id="ed_dnsNotFound">&dnsNotFound.longDesc1;</div>
        <div id="ed_fileNotFound">&fileNotFound.longDesc;</div>
        <div id="ed_fileAccessDenied">&fileAccessDenied.longDesc;</div>
        <div id="ed_malformedURI"></div>
        <div id="ed_unknownProtocolFound">&unknownProtocolFound.longDesc;</div>
        <div id="ed_connectionFailure">&connectionFailure.longDesc;</div>
        <div id="ed_netTimeout">&netTimeout.longDesc;</div>
        <div id="ed_redirectLoop">&redirectLoop.longDesc;</div>
        <div id="ed_unknownSocketType">&unknownSocketType.longDesc;</div>
        <div id="ed_netReset">&netReset.longDesc;</div>
        <div id="ed_notCached">&notCached.longDesc;</div>
        <div id="ed_netOffline">&netOffline.longDesc2;</div>
        <div id="ed_netInterrupt">&netInterrupt.longDesc;</div>
        <div id="ed_deniedPortAccess">&deniedPortAccess.longDesc;</div>
        <div id="ed_proxyResolveFailure">&proxyResolveFailure.longDesc;</div>
        <div id="ed_proxyConnectFailure">&proxyConnectFailure.longDesc;</div>
        <div id="ed_contentEncodingError">&contentEncodingError.longDesc;</div>
        <div id="ed_unsafeContentType">&unsafeContentType.longDesc;</div>
        <div id="ed_nssFailure2">&nssFailure2.longDesc2;</div>
        <div id="ed_nssBadCert">&certerror.introPara2;</div>
        <div id="ed_nssBadCert_sts">&certerror.sts.introPara;</div>
        <div id="ed_cspBlocked">&cspBlocked.longDesc;</div>
        <div id="ed_remoteXUL">&remoteXUL.longDesc;</div>
        <div id="ed_corruptedContentErrorv2">&corruptedContentErrorv2.longDesc;</div>
        <div id="ed_sslv3Used">&sslv3Used.longDesc2;</div>
        <div id="ed_inadequateSecurityError">&inadequateSecurityError.longDesc;</div>
        <div id="ed_blockedByPolicy"></div>
        <div id="ed_clockSkewError">&clockSkewError.longDesc;</div>
      </div>
      <div id="errorDescriptions2Container">
          <div id="ed2_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE">&certerror.expiredCert.secondPara;</div>
      </div>
      <div id="whatCanYouDoAboutItTitleContainer">
        <div id="edd_nssBadCert"><strong>&certerror.whatCanYouDoAboutItTitle;</strong></div>
      </div>
      <div id="whatCanYouDoAboutItContainer">
        <div id="es_nssBadCert_SEC_ERROR_UNKNOWN_ISSUER">&certerror.unknownIssuer.whatCanYouDoAboutIt;</div>
        <div id="es_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
        <div id="es_nssBadCert_SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
        <div id="es_nssBadCert_SEC_ERROR_OCSP_FUTURE_RESPONSE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
        <div id="es_nssBadCert_SEC_ERROR_OCSP_OLD_RESPONSE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
        <div id="es_nssBadCert_MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
        <div id="es_nssBadCert_MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
        <div id="es_nssBadCert_SSL_ERROR_BAD_CERT_DOMAIN">&certerror.badCertDomain.whatCanYouDoAboutIt;</div>
        <div id="es_nssBadCert_SEC_ERROR_OCSP_INVALID_SIGNING_CERT">&certerror.badCertDomain.whatCanYouDoAboutIt;</div>
      </div>
      <!-- Stores an alternative text for when we don't want to add "Recommended" to the
           return button. This is one of many l10n atrocities in this file and should be
           removed when we finally switch to Fluent. -->
      <span id="stsReturnButtonText">&returnToPreviousPage.label;</span>
    </div>

    <!-- PAGE CONTAINER (for styling purposes only) -->
    <div id="errorPageContainer" class="container">
      <div id="text-container">
        <!-- Error Title -->
        <div class="title">
          <h1 class="title-text"/>
        </div>

        <!-- LONG CONTENT (the section most likely to require scrolling) -->
        <div id="errorLongContent">

          <!-- Short Description -->
          <div id="errorShortDesc">
            <p id="errorShortDescText" />
          </div>

          <div id="errorShortDesc2">
              <p id="errorShortDescText2" />
          </div>

          <div id="errorWhatToDoTitle">
              <p id="errorWhatToDoTitleText" />
          </div>

          <div id="errorWhatToDo">
              <p id="badStsCertExplanation" hidden="true">&certerror.whatShouldIDo.badStsCertExplanation1;</p>
              <p id="errorWhatToDoText" />
          </div>

          <div id="errorWhatToDo2">
              <p id="errorWhatToDoText2" />
              <p id="badStsCertExplanation" hidden="true">&certerror.whatShouldIDo.badStsCertExplanation1;</p>
          </div>

          <div id="wrongSystemTimePanel">
            &certerror.wrongSystemTime2;
          </div>

          <div id="wrongSystemTimeWithoutReferencePanel">
            &certerror.wrongSystemTimeWithoutReference;
          </div>

          <!-- Long Description (Note: See netError.dtd for used XHTML tags) -->
          <div id="errorLongDesc" />

          <div id="learnMoreContainer">
            <p><a href="https://support.mozilla.org/kb/what-does-your-connection-is-not-secure-mean" id="learnMoreLink" target="new" data-telemetry-id="learn_more_link">&errorReporting.learnMore;</a></p>
          </div>
        </div>

        <!-- UI for option to report certificate errors to Mozilla. Removed on
             init for other error types .-->
        <div id="prefChangeContainer" class="button-container">
          <p>&prefReset.longDesc;</p>
          <button id="prefResetButton" class="primary" autocomplete="off">&prefReset.label;</button>
        </div>

        <div id="certErrorAndCaptivePortalButtonContainer" class="button-container">
          <button id="returnButton" class="primary" autocomplete="off" data-telemetry-id="return_button_top">&returnToPreviousPage1.label;</button>
          <button id="openPortalLoginPageButton" class="primary" autocomplete="off">&openPortalLoginPage.label2;</button>
          <button id="errorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
          <button id="advancedButton" data-telemetry-id="advanced_button" autocomplete="off">&continue2.label;</button>
          <button id="moreInformationButton" autocomplete="off">&moreInformation.label;</button>
        </div>
      </div>

      <div id="netErrorButtonContainer" class="button-container">
        <button id="errorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
      </div>

      <div id="advancedPanelContainer">
        <div id="badCertAdvancedPanel" class="advanced-panel">
          <p id="badCertTechnicalInfo"/>
          <a id="viewCertificate" href="javascript:void(0)">&viewCertificate.label;</a>
          <div id="advancedPanelButtonContainer" class="button-container">
            <button id="advancedPanelReturnButton" class="primary" autocomplete="off" data-telemetry-id="return_button_adv">&returnToPreviousPage1.label;</button>
            <button id="advancedPanelErrorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
            <div class="exceptionDialogButtonContainer">
              <button id="exceptionDialogButton" data-telemetry-id="exception_button">&securityOverride.exceptionButton1Label;</button>
            </div>
          </div>
        </div>

        <div id="certificateErrorReporting">
            <p class="toggle-container-with-text">
                <input type="checkbox" id="automaticallyReportInFuture" role="checkbox" data-telemetry-id="auto_report_cb"/>
                <label for="automaticallyReportInFuture" id="automaticallyReportInFuture">&errorReporting.automatic2;</label>
            </p>
        </div>

        <div id="certificateErrorDebugInformation">
          <button id="copyToClipboard" data-telemetry-id="clipboard_button_top">&certerror.copyToClipboard.label;</button>
          <div id="certificateErrorText"/>
          <button id="copyToClipboard" data-telemetry-id="clipboard_button_bot">&certerror.copyToClipboard.label;</button>
        </div>
      </div>
    </div>
  </body>
  <script type="application/javascript" src="chrome://browser/content/aboutNetError.js"/>
</html>