зеркало из https://github.com/mozilla/gecko-dev.git
125 строки
3.9 KiB
Plaintext
125 строки
3.9 KiB
Plaintext
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.h"
|
|
#include "mozilla/Components.h"
|
|
#include "mozilla/ModuleUtils.h"
|
|
#include "mozilla/WidgetUtils.h"
|
|
|
|
#include "nsWidgetsCID.h"
|
|
|
|
#include "nsChildView.h"
|
|
#include "nsAppShell.h"
|
|
#include "nsAppShellSingleton.h"
|
|
#include "nsFilePicker.h"
|
|
#include "nsColorPicker.h"
|
|
|
|
#include "nsClipboard.h"
|
|
#include "nsClipboardHelper.h"
|
|
#include "HeadlessClipboard.h"
|
|
#include "gfxPlatform.h"
|
|
#include "nsTransferable.h"
|
|
#include "nsHTMLFormatConverter.h"
|
|
#include "nsDragService.h"
|
|
#include "nsToolkit.h"
|
|
|
|
#include "nsLookAndFeel.h"
|
|
|
|
#include "nsSound.h"
|
|
#include "nsUserIdleServiceX.h"
|
|
#include "NativeKeyBindings.h"
|
|
#include "OSXNotificationCenter.h"
|
|
|
|
#include "nsDeviceContextSpecX.h"
|
|
#include "nsPrinterListCUPS.h"
|
|
#include "nsPrintSettingsServiceX.h"
|
|
#include "nsPrintDialogX.h"
|
|
#include "nsToolkitCompsCID.h"
|
|
|
|
#include "mozilla/widget/ScreenManager.h"
|
|
|
|
using namespace mozilla;
|
|
using namespace mozilla::widget;
|
|
|
|
NS_IMPL_COMPONENT_FACTORY(nsIClipboard) {
|
|
nsCOMPtr<nsIClipboard> inst;
|
|
if (gfxPlatform::IsHeadless()) {
|
|
inst = new HeadlessClipboard();
|
|
} else {
|
|
inst = new nsClipboard();
|
|
}
|
|
|
|
return inst.forget();
|
|
}
|
|
|
|
#define MAKE_GENERIC_CTOR(class_, iface_) \
|
|
NS_IMPL_COMPONENT_FACTORY(class_) { \
|
|
RefPtr inst = new class_(); \
|
|
return inst.forget().downcast<iface_>(); \
|
|
}
|
|
|
|
#define MAKE_GENERIC_CTOR_INIT(class_, iface_, init_) \
|
|
NS_IMPL_COMPONENT_FACTORY(class_) { \
|
|
RefPtr inst = new class_(); \
|
|
if (NS_SUCCEEDED(inst->init_())) { \
|
|
return inst.forget().downcast<iface_>(); \
|
|
} \
|
|
return nullptr; \
|
|
}
|
|
|
|
#define MAKE_GENERIC_SINGLETON_CTOR(iface_, func_) \
|
|
NS_IMPL_COMPONENT_FACTORY(iface_) { return func_(); }
|
|
|
|
MAKE_GENERIC_CTOR(nsFilePicker, nsIFilePicker)
|
|
MAKE_GENERIC_CTOR(nsColorPicker, nsIColorPicker)
|
|
MAKE_GENERIC_CTOR(nsSound, nsISound)
|
|
MAKE_GENERIC_CTOR(nsTransferable, nsITransferable)
|
|
MAKE_GENERIC_CTOR(nsHTMLFormatConverter, nsIFormatConverter)
|
|
MAKE_GENERIC_CTOR(nsClipboardHelper, nsIClipboardHelper)
|
|
MAKE_GENERIC_CTOR(nsDragService, nsIDragService)
|
|
MAKE_GENERIC_CTOR(nsDeviceContextSpecX, nsIDeviceContextSpec)
|
|
MAKE_GENERIC_CTOR(nsPrinterListCUPS, nsIPrinterList)
|
|
MAKE_GENERIC_CTOR_INIT(nsPrintSettingsServiceX, nsIPrintSettingsService, Init)
|
|
MAKE_GENERIC_CTOR_INIT(nsPrintDialogServiceX, nsIPrintDialogService, Init)
|
|
MAKE_GENERIC_SINGLETON_CTOR(nsUserIdleServiceX, nsUserIdleServiceX::GetInstance)
|
|
MAKE_GENERIC_SINGLETON_CTOR(ScreenManager, ScreenManager::GetAddRefedSingleton)
|
|
MAKE_GENERIC_CTOR_INIT(OSXNotificationCenter, nsIAlertsService, Init)
|
|
|
|
#include "nsMacDockSupport.h"
|
|
MAKE_GENERIC_CTOR(nsMacDockSupport, nsIMacDockSupport)
|
|
|
|
#include "nsMacFinderProgress.h"
|
|
MAKE_GENERIC_CTOR(nsMacFinderProgress, nsIMacFinderProgress)
|
|
|
|
#include "nsMacSharingService.h"
|
|
MAKE_GENERIC_CTOR(nsMacSharingService, nsIMacSharingService)
|
|
|
|
#include "nsMacUserActivityUpdater.h"
|
|
MAKE_GENERIC_CTOR(nsMacUserActivityUpdater, nsIMacUserActivityUpdater)
|
|
|
|
#include "nsMacWebAppUtils.h"
|
|
MAKE_GENERIC_CTOR(nsMacWebAppUtils, nsIMacWebAppUtils)
|
|
|
|
#include "nsStandaloneNativeMenu.h"
|
|
MAKE_GENERIC_CTOR(nsStandaloneNativeMenu, nsIStandaloneNativeMenu)
|
|
|
|
#include "nsSystemStatusBarCocoa.h"
|
|
MAKE_GENERIC_CTOR(nsSystemStatusBarCocoa, nsISystemStatusBar)
|
|
|
|
#include "nsTouchBarUpdater.h"
|
|
MAKE_GENERIC_CTOR(nsTouchBarUpdater, nsITouchBarUpdater)
|
|
|
|
void nsWidgetCocoaModuleCtor() { nsAppShellInit(); }
|
|
|
|
void nsWidgetCocoaModuleDtor() {
|
|
// Shutdown all XP level widget classes.
|
|
WidgetUtils::Shutdown();
|
|
|
|
NativeKeyBindings::Shutdown();
|
|
nsLookAndFeel::Shutdown();
|
|
nsToolkit::Shutdown();
|
|
nsAppShellShutdown();
|
|
}
|