author Jonas Sicking <>
Sat, 21 Aug 2010 18:49:27 +0200
changeset 51165 1fb7b57d30266d96ee0da3b9934531dafc5d3fa3
parent 51157 ee6fb954cbc3de0f76e84cad6bdff452116e1b03
child 53739 4e868145aa6bac0f9e7d0a09cbdae870671d7dd3
permissions -rw-r--r--
Bug 546857 Part 4b: Fix some errors in previous patch to not use XUL on error pages. r=dao a=blocker

<?xml version="1.0" encoding="UTF-8"?>
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
# The Original Code is Private Browsing.
# The Initial Developer of the Original Code is
# Ehsan Akhgari <>
# Portions created by the Initial Developer are Copyright (C) 2008
# the Initial Developer. All Rights Reserved.
# Contributor(s):
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
# ***** END LICENSE BLOCK *****
<!DOCTYPE html [
  <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
  <!ENTITY % netErrorDTD SYSTEM "chrome://global/locale/netError.dtd">
  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
  <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd">
  <!ENTITY % privatebrowsingpageDTD SYSTEM "chrome://browser/locale/aboutPrivateBrowsing.dtd">

<html xmlns="">
    <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all"/>
    <link rel="stylesheet" href="chrome://browser/skin/aboutPrivateBrowsing.css" type="text/css" media="all"/>
    <style type="text/css"><![CDATA[
      body.normal .showPrivate,
      body.private .showNormal {
        display: none;
    <script type="application/javascript;version=1.7"><![CDATA[
      const Cc = Components.classes;
      const Ci = Components.interfaces;

      var pb = Cc[";1"].

      if (!pb.privateBrowsingEnabled) {
        document.title = "]]>&privatebrowsingpage.title.normal;<![CDATA[";
      } else {
#ifndef XP_MACOSX
        document.title = "]]>&privatebrowsingpage.title;<![CDATA[";

      var mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor)

      // Focus the location bar

      function openSanitizeDialog() {
        let browserGlue = Cc[";1"].

      function setFavIcon(url) {
        var icon = document.createElement("link");
        icon.setAttribute("rel", "icon");
        icon.setAttribute("type", "image/png");
        icon.setAttribute("href", url);
        var head = document.getElementsByTagName("head")[0];
        head.insertBefore(icon, head.firstChild);

      document.addEventListener("DOMContentLoaded", function () {
        if (!pb.privateBrowsingEnabled) {
          document.body.setAttribute("class", "normal");

        // Set up the help link
        let moreInfoURL = Cc[";1"].
        let moreInfoLink = document.getElementById("moreInfoLink");
        if (moreInfoLink)
          moreInfoLink.setAttribute("href", moreInfoURL + "private-browsing");
      }, false);
      function togglePrivateBrowsing() {

  <body dir="&locale.dir;"

    <!-- PAGE CONTAINER (for styling purposes only) -->
    <div id="errorPageContainer">

      <!-- Error Title -->
      <div id="errorTitle">
        <h1 id="errorTitleText" class="showPrivate">&privatebrowsingpage.title;</h1>
        <h1 id="errorTitleTextNormal" class="showNormal">&privatebrowsingpage.title.normal;</h1>

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

        <!-- Short Description -->
        <div id="errorShortDesc">
          <p id="errorShortDescText" class="showPrivate">&privatebrowsingpage.issueDesc;</p>
          <p id="errorShortDescTextNormal" class="showNormal">&privatebrowsingpage.issueDesc.normal;</p>

        <!-- Long Description -->
        <div id="errorLongDesc">
          <p id="errorLongDescText">&privatebrowsingpage.description;</p>

        <!-- Start Private Browsing -->
        <div id="startPrivateBrowsingDesc" class="showNormal">
          <button xmlns=""
                  id="startPrivateBrowsing" label="&privatebrowsingpage.startPrivateBrowsing.label;"

        <!-- Footer -->
        <div id="footerDesc">
          <p id="footerText" class="showPrivate">&privatebrowsingpage.howToStop;</p>
          <p id="footerTextNormal" class="showNormal">&privatebrowsingpage.howToStart;</p>

        <!-- More Info -->
        <div id="moreInfo" class="showPrivate">
          <p id="moreInfoText">
          <p id="moreInfoLinkContainer">
            <a id="moreInfoLink" target="_blank">&privatebrowsingpage.learnMore;</a>