/src/mozilla-central/docshell/build/nsDocShellModule.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim: set ts=8 sts=2 et sw=2 tw=80: */ |
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 "mozilla/dom/BrowsingContext.h" |
11 | | |
12 | | #include "nsDocShell.h" |
13 | | #include "nsDefaultURIFixup.h" |
14 | | #include "nsWebNavigationInfo.h" |
15 | | #include "nsAboutRedirector.h" |
16 | | #include "nsCDefaultURIFixup.h" |
17 | | |
18 | | // uriloader |
19 | | #include "nsURILoader.h" |
20 | | #include "nsDocLoader.h" |
21 | | #include "nsOSHelperAppService.h" |
22 | | #include "nsOSPermissionRequest.h" |
23 | | #include "nsExternalProtocolHandler.h" |
24 | | #include "nsPrefetchService.h" |
25 | | #include "nsOfflineCacheUpdate.h" |
26 | | #include "nsLocalHandlerApp.h" |
27 | | #include "ContentHandlerService.h" |
28 | | #ifdef MOZ_ENABLE_DBUS |
29 | | #include "nsDBusHandlerApp.h" |
30 | | #endif |
31 | | #if defined(MOZ_WIDGET_ANDROID) |
32 | | #include "nsExternalURLHandlerService.h" |
33 | | #endif |
34 | | |
35 | | // session history |
36 | | #include "nsSHEntry.h" |
37 | | #include "nsSHEntryShared.h" |
38 | | #include "nsSHistory.h" |
39 | | |
40 | | using mozilla::dom::ContentHandlerService; |
41 | | |
42 | | static bool gInitialized = false; |
43 | | |
44 | | // The one time initialization for this module |
45 | | static nsresult |
46 | | Initialize() |
47 | 3 | { |
48 | 3 | MOZ_ASSERT(!gInitialized, "docshell module already initialized"); |
49 | 3 | if (gInitialized) { |
50 | 0 | return NS_OK; |
51 | 0 | } |
52 | 3 | gInitialized = true; |
53 | 3 | |
54 | 3 | mozilla::dom::BrowsingContext::Init(); |
55 | 3 | nsresult rv = nsSHistory::Startup(); |
56 | 3 | NS_ENSURE_SUCCESS(rv, rv); |
57 | 3 | |
58 | 3 | return NS_OK; |
59 | 3 | } |
60 | | |
61 | | static void |
62 | | Shutdown() |
63 | 0 | { |
64 | 0 | nsSHistory::Shutdown(); |
65 | 0 | nsSHEntryShared::Shutdown(); |
66 | 0 | gInitialized = false; |
67 | 0 | } |
68 | | |
69 | | // docshell |
70 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocShell, Init) |
71 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultURIFixup) |
72 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWebNavigationInfo, Init) |
73 | | |
74 | | // uriloader |
75 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsURILoader) |
76 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsDocLoader, Init) |
77 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsOSHelperAppService, Init) |
78 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalProtocolHandler) |
79 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrefetchService, Init) |
80 | | NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsOfflineCacheUpdateService, |
81 | | nsOfflineCacheUpdateService::GetInstance) |
82 | | NS_GENERIC_FACTORY_CONSTRUCTOR(PlatformLocalHandlerApp_t) |
83 | | #ifdef MOZ_ENABLE_DBUS |
84 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsDBusHandlerApp) |
85 | | #endif |
86 | | #if defined(MOZ_WIDGET_ANDROID) |
87 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsExternalURLHandlerService) |
88 | | #endif |
89 | | NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(ContentHandlerService, Init) |
90 | | |
91 | | // OS access permissions |
92 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsOSPermissionRequest) |
93 | | |
94 | | // session history |
95 | | NS_GENERIC_FACTORY_CONSTRUCTOR(nsSHEntry) |
96 | | |
97 | | NS_DEFINE_NAMED_CID(NS_DOCSHELL_CID); |
98 | | NS_DEFINE_NAMED_CID(NS_DEFAULTURIFIXUP_CID); |
99 | | NS_DEFINE_NAMED_CID(NS_WEBNAVIGATION_INFO_CID); |
100 | | NS_DEFINE_NAMED_CID(NS_ABOUT_REDIRECTOR_MODULE_CID); |
101 | | NS_DEFINE_NAMED_CID(NS_URI_LOADER_CID); |
102 | | NS_DEFINE_NAMED_CID(NS_DOCUMENTLOADER_SERVICE_CID); |
103 | | NS_DEFINE_NAMED_CID(NS_EXTERNALHELPERAPPSERVICE_CID); |
104 | | NS_DEFINE_NAMED_CID(NS_EXTERNALPROTOCOLHANDLER_CID); |
105 | | NS_DEFINE_NAMED_CID(NS_PREFETCHSERVICE_CID); |
106 | | NS_DEFINE_NAMED_CID(NS_OFFLINECACHEUPDATESERVICE_CID); |
107 | | NS_DEFINE_NAMED_CID(NS_LOCALHANDLERAPP_CID); |
108 | | NS_DEFINE_NAMED_CID(NS_OSPERMISSIONREQUEST_CID); |
109 | | #ifdef MOZ_ENABLE_DBUS |
110 | | NS_DEFINE_NAMED_CID(NS_DBUSHANDLERAPP_CID); |
111 | | #endif |
112 | | #if defined(MOZ_WIDGET_ANDROID) |
113 | | NS_DEFINE_NAMED_CID(NS_EXTERNALURLHANDLERSERVICE_CID); |
114 | | #endif |
115 | | NS_DEFINE_NAMED_CID(NS_SHENTRY_CID); |
116 | | NS_DEFINE_NAMED_CID(NS_CONTENTHANDLERSERVICE_CID); |
117 | | |
118 | | const mozilla::Module::CIDEntry kDocShellCIDs[] = { |
119 | | { &kNS_DOCSHELL_CID, false, nullptr, nsDocShellConstructor }, |
120 | | { &kNS_DEFAULTURIFIXUP_CID, false, nullptr, nsDefaultURIFixupConstructor }, |
121 | | { &kNS_WEBNAVIGATION_INFO_CID, false, nullptr, nsWebNavigationInfoConstructor }, |
122 | | { &kNS_ABOUT_REDIRECTOR_MODULE_CID, false, nullptr, nsAboutRedirector::Create }, |
123 | | { &kNS_URI_LOADER_CID, false, nullptr, nsURILoaderConstructor }, |
124 | | { &kNS_DOCUMENTLOADER_SERVICE_CID, false, nullptr, nsDocLoaderConstructor }, |
125 | | { &kNS_EXTERNALHELPERAPPSERVICE_CID, false, nullptr, nsOSHelperAppServiceConstructor }, |
126 | | { &kNS_OSPERMISSIONREQUEST_CID, false, nullptr, nsOSPermissionRequestConstructor }, |
127 | | { &kNS_CONTENTHANDLERSERVICE_CID, false, nullptr, ContentHandlerServiceConstructor, |
128 | | mozilla::Module::CONTENT_PROCESS_ONLY }, |
129 | | { &kNS_EXTERNALPROTOCOLHANDLER_CID, false, nullptr, nsExternalProtocolHandlerConstructor }, |
130 | | { &kNS_PREFETCHSERVICE_CID, false, nullptr, nsPrefetchServiceConstructor }, |
131 | | { &kNS_OFFLINECACHEUPDATESERVICE_CID, false, nullptr, nsOfflineCacheUpdateServiceConstructor }, |
132 | | { &kNS_LOCALHANDLERAPP_CID, false, nullptr, PlatformLocalHandlerApp_tConstructor }, |
133 | | #ifdef MOZ_ENABLE_DBUS |
134 | | { &kNS_DBUSHANDLERAPP_CID, false, nullptr, nsDBusHandlerAppConstructor }, |
135 | | #endif |
136 | | #if defined(MOZ_WIDGET_ANDROID) |
137 | | { &kNS_EXTERNALURLHANDLERSERVICE_CID, false, nullptr, nsExternalURLHandlerServiceConstructor }, |
138 | | #endif |
139 | | { &kNS_SHENTRY_CID, false, nullptr, nsSHEntryConstructor }, |
140 | | { nullptr } |
141 | | }; |
142 | | |
143 | | const mozilla::Module::ContractIDEntry kDocShellContracts[] = { |
144 | | { "@mozilla.org/docshell;1", &kNS_DOCSHELL_CID }, |
145 | | { NS_URIFIXUP_CONTRACTID, &kNS_DEFAULTURIFIXUP_CID }, |
146 | | { NS_WEBNAVIGATION_INFO_CONTRACTID, &kNS_WEBNAVIGATION_INFO_CID }, |
147 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "about", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
148 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "addons", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
149 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "buildconfig", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
150 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "checkerboard", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
151 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "config", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
152 | | #ifdef MOZ_CRASHREPORTER |
153 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "crashes", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
154 | | #endif |
155 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "crashparent", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
156 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "crashcontent", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
157 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "credits", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
158 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "license", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
159 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "logo", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
160 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "memory", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
161 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "mozilla", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
162 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "neterror", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
163 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "networking", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
164 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "performance", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
165 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "plugins", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
166 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "serviceworkers", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
167 | | #ifndef ANDROID |
168 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "profiles", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
169 | | #endif |
170 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "srcdoc", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
171 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "support", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
172 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "telemetry", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
173 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "webrtc", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
174 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "printpreview", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
175 | | { NS_ABOUT_MODULE_CONTRACTID_PREFIX "url-classifier", &kNS_ABOUT_REDIRECTOR_MODULE_CID }, |
176 | | { NS_URI_LOADER_CONTRACTID, &kNS_URI_LOADER_CID }, |
177 | | { NS_DOCUMENTLOADER_SERVICE_CONTRACTID, &kNS_DOCUMENTLOADER_SERVICE_CID }, |
178 | | { NS_HANDLERSERVICE_CONTRACTID, &kNS_CONTENTHANDLERSERVICE_CID, mozilla::Module::CONTENT_PROCESS_ONLY }, |
179 | | { NS_EXTERNALHELPERAPPSERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID }, |
180 | | { NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID }, |
181 | | { NS_MIMESERVICE_CONTRACTID, &kNS_EXTERNALHELPERAPPSERVICE_CID }, |
182 | | { NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX"default", &kNS_EXTERNALPROTOCOLHANDLER_CID }, |
183 | | { NS_PREFETCHSERVICE_CONTRACTID, &kNS_PREFETCHSERVICE_CID }, |
184 | | { NS_OFFLINECACHEUPDATESERVICE_CONTRACTID, &kNS_OFFLINECACHEUPDATESERVICE_CID }, |
185 | | { NS_LOCALHANDLERAPP_CONTRACTID, &kNS_LOCALHANDLERAPP_CID }, |
186 | | #ifdef MOZ_ENABLE_DBUS |
187 | | { NS_DBUSHANDLERAPP_CONTRACTID, &kNS_DBUSHANDLERAPP_CID }, |
188 | | #endif |
189 | | #if defined(MOZ_WIDGET_ANDROID) |
190 | | { NS_EXTERNALURLHANDLERSERVICE_CONTRACTID, &kNS_EXTERNALURLHANDLERSERVICE_CID }, |
191 | | #endif |
192 | | { NS_SHENTRY_CONTRACTID, &kNS_SHENTRY_CID }, |
193 | | { NS_OSPERMISSIONREQUEST_CONTRACTID, &kNS_OSPERMISSIONREQUEST_CID, mozilla::Module::MAIN_PROCESS_ONLY }, |
194 | | { nullptr } |
195 | | }; |
196 | | |
197 | | static const mozilla::Module kDocShellModule = { |
198 | | mozilla::Module::kVersion, |
199 | | kDocShellCIDs, |
200 | | kDocShellContracts, |
201 | | nullptr, |
202 | | nullptr, |
203 | | Initialize, |
204 | | Shutdown |
205 | | }; |
206 | | |
207 | | NSMODULE_DEFN(docshell_provider) = &kDocShellModule; |