Coverage Report

Created: 2018-09-25 14:53

/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;