1
/* ***** BEGIN LICENSE BLOCK *****
2
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
* The contents of this file are subject to the Mozilla Public License Version
5
* 1.1 (the "License"); you may not use this file except in compliance with
6
* the License. You may obtain a copy of the License at
7
* http://www.mozilla.org/MPL/
9
* Software distributed under the License is distributed on an "AS IS" basis,
10
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
* for the specific language governing rights and limitations under the
14
* The Original Code is about:robots
16
* The Initial Developer of the Original Code is Mozilla Foundation.
17
* Portions created by the Initial Developer are Copyright (C) 2008
18
* the Initial Developer. All Rights Reserved.
21
* Ryan Flint <rflint@mozilla.com>
22
* Justin Dolske <dolske@mozilla.com>
23
* Johnathan Nightingale <johnath@mozilla.com>
25
* Alternatively, the contents of this file may be used under the terms of
26
* either the GNU General Public License Version 2 or later (the "GPL"), or
27
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
* in which case the provisions of the GPL or the LGPL are applicable instead
29
* of those above. If you wish to allow use of your version of this file only
30
* under the terms of either the GPL or the LGPL, and not to allow others to
31
* use your version of this file under the terms of the MPL, indicate your
32
* decision by deleting the provisions above and replace them with the notice
33
* and other provisions required by the GPL or the LGPL. If you do not delete
34
* the provisions above, a recipient may use your version of this file under
35
* the terms of any one of the MPL, the GPL or the LGPL.
37
* ***** END LICENSE BLOCK ***** */
38
const Cc = Components.classes;
39
const Ci = Components.interfaces;
41
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
43
var HOMEPAGE_OFFLINE = "file:///usr/share/ubuntu-artwork/home/index.html";
44
var HOMEPAGE_OFFLINE_TMPL = "/usr/share/ubuntu-artwork/home/locales/index-"
46
var HOMEPAGE_ONLINE = "http://start.ubuntu.com/9.10/";
48
function getIsOffline() {
49
var prefs = Cc["@mozilla.org/preferences-service;1"]
50
.getService(Ci.nsIPrefBranch);
51
return prefs.getBoolPref("browser.offline");
54
function getUALocale() {
55
var prefs = Cc["@mozilla.org/preferences-service;1"]
56
.getService(Ci.nsIPrefBranch);
58
var userAgentLocale = null;
60
var userAgentLocaleLocalized = null;
63
userAgentLocaleLocalized = prefs.getComplexValue("general.useragent.locale",
64
Ci.nsIPrefLocalizedString);
67
if (userAgentLocaleLocalized) {
68
userAgentLocale = userAgentLocaleLocalized.toString();
70
userAgentLocale = prefs.getCharPref("general.useragent.locale");
72
} catch (e) { userAgentLocale = "en-US";}
74
return userAgentLocale;
77
function get_valid_offlinehomepage() {
78
var userAgentLocale = getUALocale();
79
var canonicalLangCode = userAgentLocale.replace("-","_");
81
var preferredHomepage = HOMEPAGE_OFFLINE_TMPL + canonicalLangCode + ".html";
83
var file = Components.classes['@mozilla.org/file/local;1']
84
.createInstance(Components.interfaces.nsILocalFile);
86
file.initWithPath(preferredHomepage);
89
return HOMEPAGE_OFFLINE;
91
return "file://" + preferredHomepage;
92
return preferredHomepage;
95
function AboutCertError() {}
96
AboutCertError.prototype = {
97
classDescription: "About Home",
98
contractID: "@mozilla.org/network/protocol/about;1?what=home",
99
classID: Components.ID("{7a2a7a56-827f-4b38-bdac-31aa7ec2971d}"),
100
QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]),
102
getURIFlags: function(aURI) {
103
return (Ci.nsIAboutModule.ALLOW_SCRIPT |
104
Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT);
107
newChannel: function(aURI) {
108
var ios = Cc["@mozilla.org/network/io-service;1"].
109
getService(Ci.nsIIOService);
111
var secMan = Cc["@mozilla.org/scriptsecuritymanager;1"].
112
getService(Ci.nsIScriptSecurityManager);
113
var principal = secMan.getCodebasePrincipal(aURI);
115
if (!getIsOffline()) {
116
let channel = ios.newChannel(HOMEPAGE_ONLINE, null, null);
117
channel.originalURI = aURI;
118
channel.owner = principal;
122
let channel = ios.newChannel(HOMEPAGE_OFFLINE, null, null);
123
// channel.originalURI = aURI;
124
channel.owner = principal;
129
function NSGetModule(compMgr, fileSpec) {
130
return XPCOMUtils.generateModule([AboutCertError]);