|
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/. */ |
|
6 |
|
7 #include "mozilla/ModuleUtils.h" |
|
8 #include "nsDocShellCID.h" |
|
9 |
|
10 #include "nsDocShell.h" |
|
11 #include "nsDefaultURIFixup.h" |
|
12 #include "nsWebNavigationInfo.h" |
|
13 #include "nsAboutRedirector.h" |
|
14 #include "nsCDefaultURIFixup.h" |
|
15 |
|
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 |
|
33 |
|
34 // session history |
|
35 #include "nsSHEntry.h" |
|
36 #include "nsSHEntryShared.h" |
|
37 #include "nsSHistory.h" |
|
38 #include "nsSHTransaction.h" |
|
39 |
|
40 // download history |
|
41 #include "nsDownloadHistory.h" |
|
42 |
|
43 static bool gInitialized = false; |
|
44 |
|
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; |
|
54 |
|
55 nsresult rv = nsSHistory::Startup(); |
|
56 NS_ENSURE_SUCCESS(rv, rv); |
|
57 |
|
58 nsSHEntryShared::Startup(); |
|
59 return NS_OK; |
|
60 } |
|
61 |
|
62 static void |
|
63 Shutdown() |
|
64 { |
|
65 nsSHistory::Shutdown(); |
|
66 nsSHEntryShared::Shutdown(); |
|
67 gInitialized = false; |
|
68 } |
|
69 |
|
70 // docshell |
|
71 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocShell, Init) |
|
72 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultURIFixup) |
|
73 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWebNavigationInfo, Init) |
|
74 |
|
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 |
|
94 |
|
95 // session history |
|
96 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHEntry) |
|
97 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHTransaction) |
|
98 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHistory) |
|
99 |
|
100 // download history |
|
101 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDownloadHistory) |
|
102 |
|
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); |
|
129 |
|
130 |
|
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 }; |
|
160 |
|
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 }; |
|
213 |
|
214 static const mozilla::Module kDocShellModule = { |
|
215 mozilla::Module::kVersion, |
|
216 kDocShellCIDs, |
|
217 kDocShellContracts, |
|
218 nullptr, |
|
219 nullptr, |
|
220 Initialize, |
|
221 Shutdown |
|
222 }; |
|
223 |
|
224 NSMODULE_DEFN(docshell_provider) = &kDocShellModule; |