1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
3 * ***** BEGIN LICENSE BLOCK *****
4 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 1.1 (the "License"); you may not use this file except in compliance with
8 * the License. You may obtain a copy of the License at
9 * http://www.mozilla.org/MPL/
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
16 * The Original Code is the Mozilla browser.
18 * The Initial Developer of the Original Code is
19 * Netscape Communications, Inc.
20 * Portions created by the Initial Developer are Copyright (C) 1999
21 * the Initial Developer. All Rights Reserved.
24 * Travis Bogard <travis@netscape.com>
26 * Alternatively, the contents of this file may be used under the terms of
27 * either of the GNU General Public License Version 2 or later (the "GPL"),
28 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29 * in which case the provisions of the GPL or the LGPL are applicable instead
30 * of those above. If you wish to allow use of your version of this file only
31 * under the terms of either the GPL or the LGPL, and not to allow others to
32 * use your version of this file under the terms of the MPL, indicate your
33 * decision by deleting the provisions above and replace them with the notice
34 * and other provisions required by the GPL or the LGPL. If you do not delete
35 * the provisions above, a recipient may use your version of this file under
36 * the terms of any one of the MPL, the GPL or the LGPL.
38 * ***** END LICENSE BLOCK ***** */
40 #include "mozilla/ModuleUtils.h"
41 #include "nsDocShellCID.h"
43 #include "nsDocShell.h"
44 #include "nsDefaultURIFixup.h"
45 #include "nsWebNavigationInfo.h"
47 #include "nsAboutRedirector.h"
50 #include "nsURILoader.h"
51 #include "nsDocLoader.h"
52 #include "nsOSHelperAppService.h"
53 #include "nsExternalProtocolHandler.h"
54 #include "nsPrefetchService.h"
55 #include "nsOfflineCacheUpdate.h"
56 #include "nsLocalHandlerApp.h"
57 #ifdef MOZ_ENABLE_DBUS
58 #include "nsDBusHandlerApp.h"
60 #if defined(ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
61 #include "nsExternalSharingAppService.h"
65 #include "nsSHEntry.h"
66 #include "nsSHistory.h"
67 #include "nsSHTransaction.h"
70 #include "nsDownloadHistory.h"
72 static PRBool gInitialized
= PR_FALSE
;
74 // The one time initialization for this module
78 NS_PRECONDITION(!gInitialized
, "docshell module already initialized");
82 gInitialized
= PR_TRUE
;
84 nsresult rv
= nsSHistory::Startup();
85 NS_ENSURE_SUCCESS(rv
, rv
);
87 rv
= nsSHEntry::Startup();
94 nsSHEntry::Shutdown();
95 gInitialized
= PR_FALSE
;
99 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocShell
, Init
)
100 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultURIFixup
)
101 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWebNavigationInfo
, Init
)
104 NS_GENERIC_FACTORY_CONSTRUCTOR(nsURILoader
)
105 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocLoader
, Init
)
106 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsOSHelperAppService
, Init
)
107 NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalProtocolHandler
)
108 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrefetchService
, Init
)
109 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsOfflineCacheUpdateService
,
110 nsOfflineCacheUpdateService::GetInstance
)
111 NS_GENERIC_FACTORY_CONSTRUCTOR(nsOfflineCacheUpdate
)
112 NS_GENERIC_FACTORY_CONSTRUCTOR(PlatformLocalHandlerApp_t
)
113 #ifdef MOZ_ENABLE_DBUS
114 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDBusHandlerApp
)
116 #if defined(ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
117 NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalSharingAppService
)
121 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHEntry
)
122 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHTransaction
)
123 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHistory
)
126 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloadHistory
)
128 NS_DEFINE_NAMED_CID(NS_DOCSHELL_CID
);
129 NS_DEFINE_NAMED_CID(NS_DEFAULTURIFIXUP_CID
);
130 NS_DEFINE_NAMED_CID(NS_WEBNAVIGATION_INFO_CID
);
131 NS_DEFINE_NAMED_CID(NS_ABOUT_REDIRECTOR_MODULE_CID
);
132 NS_DEFINE_NAMED_CID(NS_URI_LOADER_CID
);
133 NS_DEFINE_NAMED_CID(NS_DOCUMENTLOADER_SERVICE_CID
);
134 NS_DEFINE_NAMED_CID(NS_EXTERNALHELPERAPPSERVICE_CID
);
135 NS_DEFINE_NAMED_CID(NS_EXTERNALPROTOCOLHANDLER_CID
);
136 NS_DEFINE_NAMED_CID(NS_PREFETCHSERVICE_CID
);
137 NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATESERVICE_CID
);
138 NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATE_CID
);
139 NS_DEFINE_NAMED_CID(NS_LOCALHANDLERAPP_CID
);
140 #ifdef MOZ_ENABLE_DBUS
141 NS_DEFINE_NAMED_CID(NS_DBUSHANDLERAPP_CID
);
143 #if defined(ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
144 NS_DEFINE_NAMED_CID(NS_EXTERNALSHARINGAPPSERVICE_CID
);
146 NS_DEFINE_NAMED_CID(NS_SHENTRY_CID
);
147 NS_DEFINE_NAMED_CID(NS_HISTORYENTRY_CID
);
148 NS_DEFINE_NAMED_CID(NS_SHTRANSACTION_CID
);
149 NS_DEFINE_NAMED_CID(NS_SHISTORY_CID
);
150 NS_DEFINE_NAMED_CID(NS_SHISTORY_INTERNAL_CID
);
151 NS_DEFINE_NAMED_CID(NS_DOWNLOADHISTORY_CID
);
154 const mozilla::Module::CIDEntry kDocShellCIDs
[] = {
155 { &kNS_DOCSHELL_CID
, false, NULL
, nsDocShellConstructor
},
156 { &kNS_DEFAULTURIFIXUP_CID
, false, NULL
, nsDefaultURIFixupConstructor
},
157 { &kNS_WEBNAVIGATION_INFO_CID
, false, NULL
, nsWebNavigationInfoConstructor
},
158 { &kNS_ABOUT_REDIRECTOR_MODULE_CID
, false, NULL
, nsAboutRedirector::Create
},
159 { &kNS_URI_LOADER_CID
, false, NULL
, nsURILoaderConstructor
},
160 { &kNS_DOCUMENTLOADER_SERVICE_CID
, false, NULL
, nsDocLoaderConstructor
},
161 { &kNS_EXTERNALHELPERAPPSERVICE_CID
, false, NULL
, nsOSHelperAppServiceConstructor
},
162 { &kNS_EXTERNALPROTOCOLHANDLER_CID
, false, NULL
, nsExternalProtocolHandlerConstructor
},
163 { &kNS_PREFETCHSERVICE_CID
, false, NULL
, nsPrefetchServiceConstructor
},
164 { &kNS_OFFLINECACHEUPDATESERVICE_CID
, false, NULL
, nsOfflineCacheUpdateServiceConstructor
},
165 { &kNS_OFFLINECACHEUPDATE_CID
, false, NULL
, nsOfflineCacheUpdateConstructor
},
166 { &kNS_LOCALHANDLERAPP_CID
, false, NULL
, PlatformLocalHandlerApp_tConstructor
},
167 #ifdef MOZ_ENABLE_DBUS
168 { &kNS_DBUSHANDLERAPP_CID
, false, NULL
, nsDBusHandlerAppConstructor
},
170 #if defined(ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
171 { &kNS_EXTERNALSHARINGAPPSERVICE_CID
, false, NULL
, nsExternalSharingAppServiceConstructor
},
173 { &kNS_SHENTRY_CID
, false, NULL
, nsSHEntryConstructor
},
174 { &kNS_HISTORYENTRY_CID
, false, NULL
, nsSHEntryConstructor
},
175 { &kNS_SHTRANSACTION_CID
, false, NULL
, nsSHTransactionConstructor
},
176 { &kNS_SHISTORY_CID
, false, NULL
, nsSHistoryConstructor
},
177 { &kNS_SHISTORY_INTERNAL_CID
, false, NULL
, nsSHistoryConstructor
},
178 { &kNS_DOWNLOADHISTORY_CID
, false, NULL
, nsDownloadHistoryConstructor
},
182 const mozilla::Module::ContractIDEntry kDocShellContracts
[] = {
183 { "@mozilla.org/docshell;1", &kNS_DOCSHELL_CID
},
184 { NS_URIFIXUP_CONTRACTID
, &kNS_DEFAULTURIFIXUP_CID
},
185 { NS_WEBNAVIGATION_INFO_CONTRACTID
, &kNS_WEBNAVIGATION_INFO_CID
},
186 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
187 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"about", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
188 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"config", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
189 #ifdef MOZ_CRASHREPORTER
190 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"crashes", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
192 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"credits", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
193 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"plugins", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
194 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"mozilla", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
195 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"logo", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
196 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"buildconfig", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
197 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"license", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
198 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"neterror", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
199 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"memory", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
200 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"addons", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
201 { NS_ABOUT_MODULE_CONTRACTID_PREFIX
"support", &kNS_ABOUT_REDIRECTOR_MODULE_CID
},
202 { NS_URI_LOADER_CONTRACTID
, &kNS_URI_LOADER_CID
},
203 { NS_DOCUMENTLOADER_SERVICE_CONTRACTID
, &kNS_DOCUMENTLOADER_SERVICE_CID
},
204 { NS_EXTERNALHELPERAPPSERVICE_CONTRACTID
, &kNS_EXTERNALHELPERAPPSERVICE_CID
},
205 { NS_EXTERNALPROTOCOLSERVICE_CONTRACTID
, &kNS_EXTERNALHELPERAPPSERVICE_CID
},
206 { NS_MIMESERVICE_CONTRACTID
, &kNS_EXTERNALHELPERAPPSERVICE_CID
},
207 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX
"default", &kNS_EXTERNALPROTOCOLHANDLER_CID
},
208 { NS_PREFETCHSERVICE_CONTRACTID
, &kNS_PREFETCHSERVICE_CID
},
209 { NS_OFFLINECACHEUPDATESERVICE_CONTRACTID
, &kNS_OFFLINECACHEUPDATESERVICE_CID
},
210 { NS_OFFLINECACHEUPDATE_CONTRACTID
, &kNS_OFFLINECACHEUPDATE_CID
},
211 { NS_LOCALHANDLERAPP_CONTRACTID
, &kNS_LOCALHANDLERAPP_CID
},
212 #ifdef MOZ_ENABLE_DBUS
213 { NS_DBUSHANDLERAPP_CONTRACTID
, &kNS_DBUSHANDLERAPP_CID
},
215 #if defined(ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
216 { NS_EXTERNALSHARINGAPPSERVICE_CONTRACTID
, &kNS_EXTERNALSHARINGAPPSERVICE_CID
},
218 { NS_SHENTRY_CONTRACTID
, &kNS_SHENTRY_CID
},
219 { NS_HISTORYENTRY_CONTRACTID
, &kNS_HISTORYENTRY_CID
},
220 { NS_SHTRANSACTION_CONTRACTID
, &kNS_SHTRANSACTION_CID
},
221 { NS_SHISTORY_CONTRACTID
, &kNS_SHISTORY_CID
},
222 { NS_SHISTORY_INTERNAL_CONTRACTID
, &kNS_SHISTORY_INTERNAL_CID
},
223 { NS_DOWNLOADHISTORY_CONTRACTID
, &kNS_DOWNLOADHISTORY_CID
},
227 static const mozilla::Module kDocShellModule
= {
228 mozilla::Module::kVersion
,
237 NSMODULE_DEFN(docshell_provider
) = &kDocShellModule
;