Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "mozilla/ModuleUtils.h"
8 #include "nsDocShellCID.h"
10 #include "nsDocShell.h"
11 #include "nsDefaultURIFixup.h"
12 #include "nsWebNavigationInfo.h"
13 #include "nsAboutRedirector.h"
14 #include "nsCDefaultURIFixup.h"
16 // uriloader
17 #include "nsURILoader.h"
18 #include "nsDocLoader.h"
19 #include "nsOSHelperAppService.h"
20 #include "nsExternalProtocolHandler.h"
21 #include "nsPrefetchService.h"
22 #include "nsOfflineCacheUpdate.h"
23 #include "nsLocalHandlerApp.h"
24 #ifdef MOZ_ENABLE_DBUS
25 #include "nsDBusHandlerApp.h"
26 #endif
27 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
28 #include "nsExternalSharingAppService.h"
29 #endif
30 #if defined(MOZ_WIDGET_ANDROID)
31 #include "nsExternalURLHandlerService.h"
32 #endif
34 // session history
35 #include "nsSHEntry.h"
36 #include "nsSHEntryShared.h"
37 #include "nsSHistory.h"
38 #include "nsSHTransaction.h"
40 // download history
41 #include "nsDownloadHistory.h"
43 static bool gInitialized = false;
45 // The one time initialization for this module
46 static nsresult
47 Initialize()
48 {
49 NS_PRECONDITION(!gInitialized, "docshell module already initialized");
50 if (gInitialized) {
51 return NS_OK;
52 }
53 gInitialized = true;
55 nsresult rv = nsSHistory::Startup();
56 NS_ENSURE_SUCCESS(rv, rv);
58 nsSHEntryShared::Startup();
59 return NS_OK;
60 }
62 static void
63 Shutdown()
64 {
65 nsSHistory::Shutdown();
66 nsSHEntryShared::Shutdown();
67 gInitialized = false;
68 }
70 // docshell
71 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocShell, Init)
72 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultURIFixup)
73 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWebNavigationInfo, Init)
75 // uriloader
76 NS_GENERIC_FACTORY_CONSTRUCTOR(nsURILoader)
77 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocLoader, Init)
78 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsOSHelperAppService, Init)
79 NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalProtocolHandler)
80 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrefetchService, Init)
81 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsOfflineCacheUpdateService,
82 nsOfflineCacheUpdateService::GetInstance)
83 NS_GENERIC_FACTORY_CONSTRUCTOR(nsOfflineCacheUpdate)
84 NS_GENERIC_FACTORY_CONSTRUCTOR(PlatformLocalHandlerApp_t)
85 #ifdef MOZ_ENABLE_DBUS
86 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDBusHandlerApp)
87 #endif
88 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
89 NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalSharingAppService)
90 #endif
91 #if defined(MOZ_WIDGET_ANDROID)
92 NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalURLHandlerService)
93 #endif
95 // session history
96 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHEntry)
97 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHTransaction)
98 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHistory)
100 // download history
101 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloadHistory)
103 NS_DEFINE_NAMED_CID(NS_DOCSHELL_CID);
104 NS_DEFINE_NAMED_CID(NS_DEFAULTURIFIXUP_CID);
105 NS_DEFINE_NAMED_CID(NS_WEBNAVIGATION_INFO_CID);
106 NS_DEFINE_NAMED_CID(NS_ABOUT_REDIRECTOR_MODULE_CID);
107 NS_DEFINE_NAMED_CID(NS_URI_LOADER_CID);
108 NS_DEFINE_NAMED_CID(NS_DOCUMENTLOADER_SERVICE_CID);
109 NS_DEFINE_NAMED_CID(NS_EXTERNALHELPERAPPSERVICE_CID);
110 NS_DEFINE_NAMED_CID(NS_EXTERNALPROTOCOLHANDLER_CID);
111 NS_DEFINE_NAMED_CID(NS_PREFETCHSERVICE_CID);
112 NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATESERVICE_CID);
113 NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATE_CID);
114 NS_DEFINE_NAMED_CID(NS_LOCALHANDLERAPP_CID);
115 #ifdef MOZ_ENABLE_DBUS
116 NS_DEFINE_NAMED_CID(NS_DBUSHANDLERAPP_CID);
117 #endif
118 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
119 NS_DEFINE_NAMED_CID(NS_EXTERNALSHARINGAPPSERVICE_CID);
120 #endif
121 #if defined(MOZ_WIDGET_ANDROID)
122 NS_DEFINE_NAMED_CID(NS_EXTERNALURLHANDLERSERVICE_CID);
123 #endif
124 NS_DEFINE_NAMED_CID(NS_SHENTRY_CID);
125 NS_DEFINE_NAMED_CID(NS_SHTRANSACTION_CID);
126 NS_DEFINE_NAMED_CID(NS_SHISTORY_CID);
127 NS_DEFINE_NAMED_CID(NS_SHISTORY_INTERNAL_CID);
128 NS_DEFINE_NAMED_CID(NS_DOWNLOADHISTORY_CID);
131 const mozilla::Module::CIDEntry kDocShellCIDs[] = {
132 { &kNS_DOCSHELL_CID, false, nullptr, nsDocShellConstructor },
133 { &kNS_DEFAULTURIFIXUP_CID, false, nullptr, nsDefaultURIFixupConstructor },
134 { &kNS_WEBNAVIGATION_INFO_CID, false, nullptr, nsWebNavigationInfoConstructor },
135 { &kNS_ABOUT_REDIRECTOR_MODULE_CID, false, nullptr, nsAboutRedirector::Create },
136 { &kNS_URI_LOADER_CID, false, nullptr, nsURILoaderConstructor },
137 { &kNS_DOCUMENTLOADER_SERVICE_CID, false, nullptr, nsDocLoaderConstructor },
138 { &kNS_EXTERNALHELPERAPPSERVICE_CID, false, nullptr, nsOSHelperAppServiceConstructor },
139 { &kNS_EXTERNALPROTOCOLHANDLER_CID, false, nullptr, nsExternalProtocolHandlerConstructor },
140 { &kNS_PREFETCHSERVICE_CID, false, nullptr, nsPrefetchServiceConstructor },
141 { &kNS_OFFLINECACHEUPDATESERVICE_CID, false, nullptr, nsOfflineCacheUpdateServiceConstructor },
142 { &kNS_OFFLINECACHEUPDATE_CID, false, nullptr, nsOfflineCacheUpdateConstructor },
143 { &kNS_LOCALHANDLERAPP_CID, false, nullptr, PlatformLocalHandlerApp_tConstructor },
144 #ifdef MOZ_ENABLE_DBUS
145 { &kNS_DBUSHANDLERAPP_CID, false, nullptr, nsDBusHandlerAppConstructor },
146 #endif
147 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
148 { &kNS_EXTERNALSHARINGAPPSERVICE_CID, false, nullptr, nsExternalSharingAppServiceConstructor },
149 #endif
150 #if defined(MOZ_WIDGET_ANDROID)
151 { &kNS_EXTERNALURLHANDLERSERVICE_CID, false, nullptr, nsExternalURLHandlerServiceConstructor },
152 #endif
153 { &kNS_SHENTRY_CID, false, nullptr, nsSHEntryConstructor },
154 { &kNS_SHTRANSACTION_CID, false, nullptr, nsSHTransactionConstructor },
155 { &kNS_SHISTORY_CID, false, nullptr, nsSHistoryConstructor },
156 { &kNS_SHISTORY_INTERNAL_CID, false, nullptr, nsSHistoryConstructor },
157 { &kNS_DOWNLOADHISTORY_CID, false, nullptr, nsDownloadHistoryConstructor },
158 { nullptr }
159 };
161 const mozilla::Module::ContractIDEntry kDocShellContracts[] = {
162 { "@mozilla.org/docshell;1", &kNS_DOCSHELL_CID },
163 { NS_URIFIXUP_CONTRACTID, &kNS_DEFAULTURIFIXUP_CID },
164 { NS_WEBNAVIGATION_INFO_CONTRACTID, &kNS_WEBNAVIGATION_INFO_CID },
165 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
166 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "about", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
167 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "config", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
168 #ifdef MOZ_CRASHREPORTER
169 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "crashes", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
170 #endif
171 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "credits", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
172 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "plugins", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
173 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "mozilla", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
174 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "logo", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
175 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "buildconfig", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
176 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "license", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
177 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "neterror", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
178 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "compartments", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
179 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "memory", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
180 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "addons", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
181 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "newaddon", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
182 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "support", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
183 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "telemetry", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
184 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "networking", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
185 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "webrtc", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
186 { NS_ABOUT_MODULE_CONTRACTID_PREFIX "srcdoc", &kNS_ABOUT_REDIRECTOR_MODULE_CID },
187 { NS_URI_LOADER_CONTRACTID, &kNS_URI_LOADER_CID },
188 { NS_DOCUMENTLOADER_SERVICE_CONTRACTID, &kNS_DOCUMENTLOADER_SERVICE_CID },
189 { NS_EXTERNALHELPERAPPSERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID },
190 { NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID },
191 { NS_MIMESERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID },
192 { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"default", &kNS_EXTERNALPROTOCOLHANDLER_CID },
193 { NS_PREFETCHSERVICE_CONTRACTID, &kNS_PREFETCHSERVICE_CID },
194 { NS_OFFLINECACHEUPDATESERVICE_CONTRACTID, &kNS_OFFLINECACHEUPDATESERVICE_CID },
195 { NS_OFFLINECACHEUPDATE_CONTRACTID, &kNS_OFFLINECACHEUPDATE_CID },
196 { NS_LOCALHANDLERAPP_CONTRACTID, &kNS_LOCALHANDLERAPP_CID },
197 #ifdef MOZ_ENABLE_DBUS
198 { NS_DBUSHANDLERAPP_CONTRACTID, &kNS_DBUSHANDLERAPP_CID },
199 #endif
200 #if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_ENABLE_MEEGOTOUCHSHARE)
201 { NS_EXTERNALSHARINGAPPSERVICE_CONTRACTID, &kNS_EXTERNALSHARINGAPPSERVICE_CID },
202 #endif
203 #if defined(MOZ_WIDGET_ANDROID)
204 { NS_EXTERNALURLHANDLERSERVICE_CONTRACTID, &kNS_EXTERNALURLHANDLERSERVICE_CID },
205 #endif
206 { NS_SHENTRY_CONTRACTID, &kNS_SHENTRY_CID },
207 { NS_SHTRANSACTION_CONTRACTID, &kNS_SHTRANSACTION_CID },
208 { NS_SHISTORY_CONTRACTID, &kNS_SHISTORY_CID },
209 { NS_SHISTORY_INTERNAL_CONTRACTID, &kNS_SHISTORY_INTERNAL_CID },
210 { NS_DOWNLOADHISTORY_CONTRACTID, &kNS_DOWNLOADHISTORY_CID },
211 { nullptr }
212 };
214 static const mozilla::Module kDocShellModule = {
215 mozilla::Module::kVersion,
216 kDocShellCIDs,
217 kDocShellContracts,
218 nullptr,
219 nullptr,
220 Initialize,
221 Shutdown
222 };
224 NSMODULE_DEFN(docshell_provider) = &kDocShellModule;