bug 555939 - Make about: link SeaMonkey website and relnotes, override toolkit's about: and do our own version with the necessary privs, r=Callek sr=Neil
authorRobert Kaiser <kairo@kairo.at>
Sat, 31 Jul 2010 18:38:20 +0200
changeset 6051 fa58a55a530bc3771fd1be02699e1567e7f882ec
parent 6050 1b2850b4247ee3b18952bf06eb06eb5571ce47bd
child 6052 f65689d441a50d0fd049e506d77e2a747c23ff32
push id4676
push userkairo@kairo.at
push dateSat, 31 Jul 2010 16:38:31 +0000
treeherdercomm-central@fa58a55a530b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersCallek, Neil
bugs555939
bug 555939 - Make about: link SeaMonkey website and relnotes, override toolkit's about: and do our own version with the necessary privs, r=Callek sr=Neil
suite/common/Makefile.in
suite/common/about.xhtml
suite/common/jar.mn
suite/common/src/Makefile.in
suite/common/src/SuiteCommon.manifest
suite/common/src/nsAbout.js
--- a/suite/common/Makefile.in
+++ b/suite/common/Makefile.in
@@ -53,9 +53,12 @@ include $(topsrcdir)/config/rules.mk
 abs_srcdir = $(call core_abspath,$(srcdir))
 
 CHROME_DEPS += $(abs_srcdir)/app-license.html
 
 # DEFINES for preprocessing
 # Use suite/common/app-license.html as input when generating 
 # chrome://content/communicator/license.html to override 
 # chrome://global/content/license.html (about:license)
-DEFINES += -DAPP_EULA_BLOCK=$(abs_srcdir)/app-license.html
+DEFINES += -DAPP_EULA_BLOCK=$(abs_srcdir)/app-license.html \
+           -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \
+           $(NULL)
+
new file mode 100644
--- /dev/null
+++ b/suite/common/about.xhtml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+%brandDTD;
+<!ENTITY % aboutDTD SYSTEM "chrome://global/locale/about.dtd" >
+%aboutDTD;
+<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+%globalDTD;
+]>
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+   - 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
+   - http://www.mozilla.org/MPL/
+   -
+   - 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 Mozilla Communicator client code, released
+   - March 31, 1998.
+   -
+   - The Initial Developer of the Original Code is
+   - Netscape Communications Corporation.
+   - Portions created by the Initial Developer are Copyright (C) 1998-1999
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s):
+   -   Henrik Gemal <mozilla@gemal.dk>
+   -   Daniel Veditz <dveditz@netscape.com>
+   -   Alexey Chernyak <alexeyc@bigfoot.com>
+   -   Steffen Wilberg <steffen.wilberg@web.de>
+   -
+   - 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 ***** -->
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>About:</title>
+  <link rel="stylesheet" href="chrome://global/skin/about.css" type="text/css"/>
+</head>
+
+<body dir="&locale.dir;">
+  <div id="aboutLogoContainer">
+    <a id="vendorURL" href="http://www.seamonkey-project.org/">
+      <img src="about:logo" alt="&brandShortName;"/>
+#expand <p id="version">&about.version; __MOZ_APP_VERSION__</p>
+    </a>
+  </div>
+
+  <ul id="aboutPageList">
+    <li>&about.credits.beforeLink;<a href="about:credits">&about.credits.linkTitle;</a>&about.credits.afterLink;</li>
+    <li>&about.license.beforeTheLink;<a href="about:license">&about.license.linkTitle;</a>&about.license.afterTheLink;</li>
+    <li>&about.relnotes.beforeTheLink;<a id="releaseNotesURL" href="">&about.relnotes.linkTitle;</a>&about.relnotes.afterTheLink;</li>
+    <li>&about.buildconfig.beforeTheLink;<a href="about:buildconfig">&about.buildconfig.linkTitle;</a>&about.buildconfig.afterTheLink;</li>
+    <script type="application/javascript">
+      // get release notes URL from prefs
+      var formatter = Components.classes["@mozilla.org/toolkit/URLFormatterService;1"]
+                                .getService(Components.interfaces.nsIURLFormatter);
+      var releaseNotesURL = formatter.formatURLPref("app.releaseNotesURL");
+      var relnotes = document.getElementById("releaseNotesURL");
+      relnotes.setAttribute("href", releaseNotesURL);
+
+      var vendorURL = formatter.formatURLPref("app.vendorURL");
+      var vendor = document.getElementById("vendorURL");
+      vendor.setAttribute("href", vendorURL);
+
+      var ua = navigator.userAgent;
+      if (ua) {
+        var list = document.getElementById("aboutPageList");
+        var listItem = list.appendChild(document.createElement("li"));
+        listItem.appendChild(document.createTextNode("&about.buildIdentifier;"));
+        listItem.appendChild(document.createTextNode(ua));
+      }
+    </script>
+  </ul>
+
+</body>
+</html>
--- a/suite/common/jar.mn
+++ b/suite/common/jar.mn
@@ -42,16 +42,17 @@ comm.jar:
 % overlay chrome://messenger/content/msgSelectOffline.xul chrome://communicator/content/helpMessengerOverlay.xul
 % overlay chrome://messenger/content/subscribe.xul chrome://communicator/content/helpMessengerOverlay.xul
 % overlay chrome://messenger/content/mailViewList.xul chrome://communicator/content/helpMessengerOverlay.xul
 % overlay chrome://messenger/content/mailViewSetup.xul chrome://communicator/content/helpMessengerOverlay.xul
 % overlay chrome://messenger-smime/content/msgCompSecurityInfo.xul chrome://communicator/content/helpMessengerOverlay.xul
 % overlay chrome://messenger-smime/content/msgReadSecurityInfo.xul chrome://communicator/content/helpMessengerOverlay.xul
 % content communicator-platform %content/communicator-platform/ platform
 % content communicator-region %content/communicator-region/
+*  content/communicator/about.xhtml
    content/communicator/aboutSessionRestore.js
    content/communicator/aboutSessionRestore.xhtml
    content/communicator/askViewZoom.xul
    content/communicator/askViewZoom.js
    content/communicator/browserBindings.xul
    content/communicator/certError.xhtml
    content/communicator/communicator.css
    content/communicator/consoleOverlay.xul
--- a/suite/common/src/Makefile.in
+++ b/suite/common/src/Makefile.in
@@ -40,16 +40,17 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= suitecommon
 
 EXTRA_COMPONENTS = \
+	nsAbout.js \
 	nsAboutCertError.js \
 	nsAboutSessionRestore.js \
 	nsSessionStartup.js \
 	nsSidebar.js \
 	SuiteCommon.manifest \
 	nsSuiteDownloadManagerUI.js \
 	nsSuiteGlue.js \
 	$(NULL)
--- a/suite/common/src/SuiteCommon.manifest
+++ b/suite/common/src/SuiteCommon.manifest
@@ -1,10 +1,12 @@
 component {08bbb4af-7bff-4b16-8ff7-d62f3ec5aa0c} nsSuiteDownloadManagerUI.js
 contract @mozilla.org/download-manager-ui;1 {08bbb4af-7bff-4b16-8ff7-d62f3ec5aa0c}
+component {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f} nsAbout.js
+contract @mozilla.org/network/protocol/about;1?what= {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
 component {b24861fb-e91a-40dd-886d-68d26a9586c7} nsAboutCertError.js
 contract @mozilla.org/network/protocol/about;1?what=certerror {b24861fb-e91a-40dd-886d-68d26a9586c7}
 component {a03c813e-abe8-41de-8d0c-5aa85f877696} nsAboutSessionRestore.js
 contract @mozilla.org/network/protocol/about;1?what=sessionrestore {a03c813e-abe8-41de-8d0c-5aa85f877696}
 component {4e6c1112-57b6-44ba-adf9-99fb573b0a30} nsSessionStartup.js
 contract @mozilla.org/suite/sessionstartup;1 {4e6c1112-57b6-44ba-adf9-99fb573b0a30}
 category app-startup SessionStartup service,@mozilla.org/suite/sessionstartup;1
 component {d37ccdf1-496f-4135-9575-037180af010d} nsSessionStore.js
new file mode 100644
--- /dev/null
+++ b/suite/common/src/nsAbout.js
@@ -0,0 +1,57 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * 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
+ * http://www.mozilla.org/MPL/
+ *
+ * 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 the nsSessionStore component.
+ *
+ * The Initial Developer of the Original Code is
+ * Simon B├╝nzli <zeniko@gmail.com>
+ * 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 ***** */
+
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+function About() { }
+About.prototype = {
+  classID: Components.ID("{d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}"),
+  QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIAboutModule]),
+
+  getURIFlags: function(aURI) {
+    return Components.interfaces.nsIAboutModule.ALLOW_SCRIPT;
+  },
+
+  newChannel: function(aURI) {
+    let ios = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
+    let channel = ios.newChannel("chrome://communicator/content/about.xhtml",
+                                 null, null);
+    channel.originalURI = aURI;
+    return channel;
+  }
+};
+
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([About]);