|
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #include "nsIFactory.h" |
|
7 #include "nsISupports.h" |
|
8 #include "nsIComponentManager.h" |
|
9 #include "mozilla/ModuleUtils.h" |
|
10 |
|
11 #include "nsWidgetsCID.h" |
|
12 |
|
13 #include "nsChildView.h" |
|
14 #include "nsCocoaWindow.h" |
|
15 #include "nsAppShell.h" |
|
16 #include "nsAppShellSingleton.h" |
|
17 #include "nsFilePicker.h" |
|
18 #include "nsColorPicker.h" |
|
19 |
|
20 #include "nsClipboard.h" |
|
21 #include "nsClipboardHelper.h" |
|
22 #include "nsTransferable.h" |
|
23 #include "nsHTMLFormatConverter.h" |
|
24 #include "nsDragService.h" |
|
25 #include "nsToolkit.h" |
|
26 |
|
27 #include "nsLookAndFeel.h" |
|
28 |
|
29 #include "nsSound.h" |
|
30 #include "nsIdleServiceX.h" |
|
31 #include "NativeKeyBindings.h" |
|
32 #include "OSXNotificationCenter.h" |
|
33 |
|
34 #include "nsScreenManagerCocoa.h" |
|
35 #include "nsDeviceContextSpecX.h" |
|
36 #include "nsPrintOptionsX.h" |
|
37 #include "nsPrintDialogX.h" |
|
38 #include "nsPrintSession.h" |
|
39 #include "nsToolkitCompsCID.h" |
|
40 |
|
41 #include "mozilla/Module.h" |
|
42 |
|
43 using namespace mozilla; |
|
44 using namespace mozilla::widget; |
|
45 |
|
46 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCocoaWindow) |
|
47 NS_GENERIC_FACTORY_CONSTRUCTOR(nsChildView) |
|
48 NS_GENERIC_FACTORY_CONSTRUCTOR(nsFilePicker) |
|
49 NS_GENERIC_FACTORY_CONSTRUCTOR(nsColorPicker) |
|
50 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSound) |
|
51 NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransferable) |
|
52 NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTMLFormatConverter) |
|
53 NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboard) |
|
54 NS_GENERIC_FACTORY_CONSTRUCTOR(nsClipboardHelper) |
|
55 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDragService) |
|
56 NS_GENERIC_FACTORY_CONSTRUCTOR(nsScreenManagerCocoa) |
|
57 NS_GENERIC_FACTORY_CONSTRUCTOR(nsDeviceContextSpecX) |
|
58 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrintOptionsX, Init) |
|
59 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrintDialogServiceX, Init) |
|
60 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrintSession, Init) |
|
61 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIdleServiceX, nsIdleServiceX::GetInstance) |
|
62 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(OSXNotificationCenter, Init) |
|
63 |
|
64 #include "nsMenuBarX.h" |
|
65 NS_GENERIC_FACTORY_CONSTRUCTOR(nsNativeMenuServiceX) |
|
66 |
|
67 #include "nsBidiKeyboard.h" |
|
68 NS_GENERIC_FACTORY_CONSTRUCTOR(nsBidiKeyboard) |
|
69 |
|
70 #include "nsNativeThemeCocoa.h" |
|
71 NS_GENERIC_FACTORY_CONSTRUCTOR(nsNativeThemeCocoa) |
|
72 |
|
73 #include "nsMacDockSupport.h" |
|
74 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMacDockSupport) |
|
75 |
|
76 #include "nsMacWebAppUtils.h" |
|
77 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMacWebAppUtils) |
|
78 |
|
79 #include "nsStandaloneNativeMenu.h" |
|
80 NS_GENERIC_FACTORY_CONSTRUCTOR(nsStandaloneNativeMenu) |
|
81 |
|
82 #include "GfxInfo.h" |
|
83 namespace mozilla { |
|
84 namespace widget { |
|
85 // This constructor should really be shared with all platforms. |
|
86 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(GfxInfo, Init) |
|
87 } |
|
88 } |
|
89 |
|
90 NS_DEFINE_NAMED_CID(NS_WINDOW_CID); |
|
91 NS_DEFINE_NAMED_CID(NS_POPUP_CID); |
|
92 NS_DEFINE_NAMED_CID(NS_CHILD_CID); |
|
93 NS_DEFINE_NAMED_CID(NS_FILEPICKER_CID); |
|
94 NS_DEFINE_NAMED_CID(NS_COLORPICKER_CID); |
|
95 NS_DEFINE_NAMED_CID(NS_APPSHELL_CID); |
|
96 NS_DEFINE_NAMED_CID(NS_SOUND_CID); |
|
97 NS_DEFINE_NAMED_CID(NS_TRANSFERABLE_CID); |
|
98 NS_DEFINE_NAMED_CID(NS_HTMLFORMATCONVERTER_CID); |
|
99 NS_DEFINE_NAMED_CID(NS_CLIPBOARD_CID); |
|
100 NS_DEFINE_NAMED_CID(NS_CLIPBOARDHELPER_CID); |
|
101 NS_DEFINE_NAMED_CID(NS_DRAGSERVICE_CID); |
|
102 NS_DEFINE_NAMED_CID(NS_BIDIKEYBOARD_CID); |
|
103 NS_DEFINE_NAMED_CID(NS_THEMERENDERER_CID); |
|
104 NS_DEFINE_NAMED_CID(NS_SCREENMANAGER_CID); |
|
105 NS_DEFINE_NAMED_CID(NS_DEVICE_CONTEXT_SPEC_CID); |
|
106 NS_DEFINE_NAMED_CID(NS_PRINTSESSION_CID); |
|
107 NS_DEFINE_NAMED_CID(NS_PRINTSETTINGSSERVICE_CID); |
|
108 NS_DEFINE_NAMED_CID(NS_PRINTDIALOGSERVICE_CID); |
|
109 NS_DEFINE_NAMED_CID(NS_IDLE_SERVICE_CID); |
|
110 NS_DEFINE_NAMED_CID(NS_SYSTEMALERTSSERVICE_CID); |
|
111 NS_DEFINE_NAMED_CID(NS_NATIVEMENUSERVICE_CID); |
|
112 NS_DEFINE_NAMED_CID(NS_MACDOCKSUPPORT_CID); |
|
113 NS_DEFINE_NAMED_CID(NS_MACWEBAPPUTILS_CID); |
|
114 NS_DEFINE_NAMED_CID(NS_STANDALONENATIVEMENU_CID); |
|
115 NS_DEFINE_NAMED_CID(NS_GFXINFO_CID); |
|
116 |
|
117 static const mozilla::Module::CIDEntry kWidgetCIDs[] = { |
|
118 { &kNS_WINDOW_CID, false, NULL, nsCocoaWindowConstructor }, |
|
119 { &kNS_POPUP_CID, false, NULL, nsCocoaWindowConstructor }, |
|
120 { &kNS_CHILD_CID, false, NULL, nsChildViewConstructor }, |
|
121 { &kNS_FILEPICKER_CID, false, NULL, nsFilePickerConstructor, |
|
122 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
123 { &kNS_COLORPICKER_CID, false, NULL, nsColorPickerConstructor, |
|
124 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
125 { &kNS_APPSHELL_CID, false, NULL, nsAppShellConstructor }, |
|
126 { &kNS_SOUND_CID, false, NULL, nsSoundConstructor, |
|
127 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
128 { &kNS_TRANSFERABLE_CID, false, NULL, nsTransferableConstructor }, |
|
129 { &kNS_HTMLFORMATCONVERTER_CID, false, NULL, nsHTMLFormatConverterConstructor }, |
|
130 { &kNS_CLIPBOARD_CID, false, NULL, nsClipboardConstructor, |
|
131 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
132 { &kNS_CLIPBOARDHELPER_CID, false, NULL, nsClipboardHelperConstructor }, |
|
133 { &kNS_DRAGSERVICE_CID, false, NULL, nsDragServiceConstructor, |
|
134 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
135 { &kNS_BIDIKEYBOARD_CID, false, NULL, nsBidiKeyboardConstructor }, |
|
136 { &kNS_THEMERENDERER_CID, false, NULL, nsNativeThemeCocoaConstructor }, |
|
137 { &kNS_SCREENMANAGER_CID, false, NULL, nsScreenManagerCocoaConstructor }, |
|
138 { &kNS_DEVICE_CONTEXT_SPEC_CID, false, NULL, nsDeviceContextSpecXConstructor, |
|
139 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
140 { &kNS_PRINTSESSION_CID, false, NULL, nsPrintSessionConstructor, |
|
141 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
142 { &kNS_PRINTSETTINGSSERVICE_CID, false, NULL, nsPrintOptionsXConstructor }, |
|
143 { &kNS_PRINTDIALOGSERVICE_CID, false, NULL, nsPrintDialogServiceXConstructor, |
|
144 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
145 { &kNS_IDLE_SERVICE_CID, false, NULL, nsIdleServiceXConstructor }, |
|
146 { &kNS_SYSTEMALERTSSERVICE_CID, false, NULL, OSXNotificationCenterConstructor }, |
|
147 { &kNS_NATIVEMENUSERVICE_CID, false, NULL, nsNativeMenuServiceXConstructor }, |
|
148 { &kNS_MACDOCKSUPPORT_CID, false, NULL, nsMacDockSupportConstructor }, |
|
149 { &kNS_MACWEBAPPUTILS_CID, false, NULL, nsMacWebAppUtilsConstructor }, |
|
150 { &kNS_STANDALONENATIVEMENU_CID, false, NULL, nsStandaloneNativeMenuConstructor }, |
|
151 { &kNS_GFXINFO_CID, false, NULL, mozilla::widget::GfxInfoConstructor }, |
|
152 { NULL } |
|
153 }; |
|
154 |
|
155 static const mozilla::Module::ContractIDEntry kWidgetContracts[] = { |
|
156 { "@mozilla.org/widgets/window/mac;1", &kNS_WINDOW_CID }, |
|
157 { "@mozilla.org/widgets/popup/mac;1", &kNS_POPUP_CID }, |
|
158 { "@mozilla.org/widgets/childwindow/mac;1", &kNS_CHILD_CID }, |
|
159 { "@mozilla.org/filepicker;1", &kNS_FILEPICKER_CID, |
|
160 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
161 { "@mozilla.org/colorpicker;1", &kNS_COLORPICKER_CID, |
|
162 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
163 { "@mozilla.org/widget/appshell/mac;1", &kNS_APPSHELL_CID }, |
|
164 { "@mozilla.org/sound;1", &kNS_SOUND_CID, |
|
165 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
166 { "@mozilla.org/widget/transferable;1", &kNS_TRANSFERABLE_CID }, |
|
167 { "@mozilla.org/widget/htmlformatconverter;1", &kNS_HTMLFORMATCONVERTER_CID }, |
|
168 { "@mozilla.org/widget/clipboard;1", &kNS_CLIPBOARD_CID, |
|
169 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
170 { "@mozilla.org/widget/clipboardhelper;1", &kNS_CLIPBOARDHELPER_CID }, |
|
171 { "@mozilla.org/widget/dragservice;1", &kNS_DRAGSERVICE_CID, |
|
172 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
173 { "@mozilla.org/widget/bidikeyboard;1", &kNS_BIDIKEYBOARD_CID }, |
|
174 { "@mozilla.org/chrome/chrome-native-theme;1", &kNS_THEMERENDERER_CID }, |
|
175 { "@mozilla.org/gfx/screenmanager;1", &kNS_SCREENMANAGER_CID }, |
|
176 { "@mozilla.org/gfx/devicecontextspec;1", &kNS_DEVICE_CONTEXT_SPEC_CID, |
|
177 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
178 { "@mozilla.org/gfx/printsession;1", &kNS_PRINTSESSION_CID, |
|
179 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
180 { "@mozilla.org/gfx/printsettings-service;1", &kNS_PRINTSETTINGSSERVICE_CID }, |
|
181 { NS_PRINTDIALOGSERVICE_CONTRACTID, &kNS_PRINTDIALOGSERVICE_CID, |
|
182 mozilla::Module::MAIN_PROCESS_ONLY }, |
|
183 { "@mozilla.org/widget/idleservice;1", &kNS_IDLE_SERVICE_CID }, |
|
184 { "@mozilla.org/system-alerts-service;1", &kNS_SYSTEMALERTSSERVICE_CID }, |
|
185 { "@mozilla.org/widget/nativemenuservice;1", &kNS_NATIVEMENUSERVICE_CID }, |
|
186 { "@mozilla.org/widget/macdocksupport;1", &kNS_MACDOCKSUPPORT_CID }, |
|
187 { "@mozilla.org/widget/mac-web-app-utils;1", &kNS_MACWEBAPPUTILS_CID }, |
|
188 { "@mozilla.org/widget/standalonenativemenu;1", &kNS_STANDALONENATIVEMENU_CID }, |
|
189 { "@mozilla.org/gfx/info;1", &kNS_GFXINFO_CID }, |
|
190 { NULL } |
|
191 }; |
|
192 |
|
193 static void |
|
194 nsWidgetCocoaModuleDtor() |
|
195 { |
|
196 NativeKeyBindings::Shutdown(); |
|
197 nsLookAndFeel::Shutdown(); |
|
198 nsToolkit::Shutdown(); |
|
199 nsAppShellShutdown(); |
|
200 } |
|
201 |
|
202 static const mozilla::Module kWidgetModule = { |
|
203 mozilla::Module::kVersion, |
|
204 kWidgetCIDs, |
|
205 kWidgetContracts, |
|
206 NULL, |
|
207 NULL, |
|
208 nsAppShellInit, |
|
209 nsWidgetCocoaModuleDtor |
|
210 }; |
|
211 |
|
212 NSMODULE_DEFN(nsWidgetMacModule) = &kWidgetModule; |