Split the class inheritance trees for nsIDragService and nsIDragSession. Remember that, before the start of this patch series, the inheritance diagram was: nsDragService -> nsBaseDragService -> nsIDragService + nsIDragSession and the only instance was a singleton. We switched it to: nsDragService -> nsDragSession -> nsBaseDragService -> nsIDragService + nsBaseDragSession -> nsIDragSession and maintained the singleton. This allowed us to allow us to move things to the new classes without breaking behavior. We are done with that, so we can now change the inheritance to its final form: nsDragService -> nsBaseDragService -> nsIDragService nsDragSession -> nsBaseDragSession -> nsIDragSession Of course, we also need to properly construct and release the nsIDragSessions (formerly part of the singleton), so that is done here as well. That happens in nsBaseDrag[Service|Session] for parent process drags and in nsDrag[Service|Session]Proxy for content. This is all fairly straightforward, except in the case of gtk, where we need to change some callback behavior. Differential Revision: https://phabricator.services.mozilla.com/D211084
405 lines
10 KiB
Python
405 lines
10 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# 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/.
|
|
|
|
with Files("**"):
|
|
BUG_COMPONENT = ("Core", "Widget")
|
|
|
|
with Files("crashtests/*1128214*"):
|
|
BUG_COMPONENT = ("Core", "Layout")
|
|
|
|
with Files("crashtests/*303901*"):
|
|
BUG_COMPONENT = ("Core", "Graphics")
|
|
|
|
with Files("crashtests/*380359*"):
|
|
BUG_COMPONENT = ("Core", "Widget")
|
|
|
|
with Files("reftests/**"):
|
|
BUG_COMPONENT = ("Core", "Widget: Cocoa")
|
|
|
|
with Files("reftests/*fallback*"):
|
|
BUG_COMPONENT = ("Core", "Layout: Form Controls")
|
|
|
|
with Files("*CompositorWidget*"):
|
|
BUG_COMPONENT = ("Core", "Graphics")
|
|
|
|
with Files("*ContentCache*"):
|
|
BUG_COMPONENT = ("Core", "DOM: UI Events & Focus Handling")
|
|
|
|
with Files("*ContentData*"):
|
|
BUG_COMPONENT = ("Core", "DOM: UI Events & Focus Handling")
|
|
|
|
with Files("*Events.h"):
|
|
BUG_COMPONENT = ("Core", "DOM: UI Events & Focus Handling")
|
|
|
|
with Files("*FontRange*"):
|
|
BUG_COMPONENT = ("Core", "Widget: Cocoa")
|
|
|
|
with Files("*Gfx*"):
|
|
BUG_COMPONENT = ("Core", "Graphics")
|
|
|
|
with Files("*IMEData*"):
|
|
BUG_COMPONENT = ("Core", "DOM: UI Events & Focus Handling")
|
|
|
|
with Files("*TextEventDispatcher*"):
|
|
BUG_COMPONENT = ("Core", "DOM: UI Events & Focus Handling")
|
|
|
|
with Files("*NativeKeyBindings*"):
|
|
BUG_COMPONENT = ("Core", "DOM: UI Events & Focus Handling")
|
|
|
|
toolkit = CONFIG["MOZ_WIDGET_TOOLKIT"]
|
|
|
|
XPCOM_MANIFESTS += [
|
|
"components.conf",
|
|
]
|
|
|
|
if toolkit in ("android", "cocoa", "gtk", "uikit", "windows"):
|
|
DIRS += [toolkit]
|
|
|
|
if toolkit == "cocoa":
|
|
XPIDL_SOURCES += [
|
|
"nsIMacDockSupport.idl",
|
|
"nsIMacFinderProgress.idl",
|
|
"nsIMacSharingService.idl",
|
|
"nsIMacUserActivityUpdater.idl",
|
|
"nsIMacWebAppUtils.idl",
|
|
"nsIStandaloneNativeMenu.idl",
|
|
"nsITaskbarProgress.idl",
|
|
"nsITouchBarHelper.idl",
|
|
"nsITouchBarInput.idl",
|
|
"nsITouchBarUpdater.idl",
|
|
]
|
|
elif toolkit == "gtk":
|
|
XPIDL_SOURCES += [
|
|
"nsIApplicationChooser.idl",
|
|
"nsIGtkTaskbarProgress.idl",
|
|
"nsITaskbarProgress.idl",
|
|
]
|
|
elif toolkit == "windows":
|
|
XPIDL_SOURCES += [
|
|
"nsIJumpListBuilder.idl",
|
|
"nsIPrintSettingsWin.idl",
|
|
"nsITaskbarOverlayIconController.idl",
|
|
"nsITaskbarPreview.idl",
|
|
"nsITaskbarPreviewButton.idl",
|
|
"nsITaskbarPreviewController.idl",
|
|
"nsITaskbarProgress.idl",
|
|
"nsITaskbarTabPreview.idl",
|
|
"nsITaskbarWindowPreview.idl",
|
|
"nsIWindowsUIUtils.idl",
|
|
"nsIWinTaskbar.idl",
|
|
]
|
|
|
|
if CONFIG["NS_PRINTING"]:
|
|
# Needs to go before the XPIDL_MODULE line.
|
|
XPIDL_SOURCES += [
|
|
"nsIPrintDialogService.idl",
|
|
]
|
|
|
|
TEST_DIRS += ["tests", "tests/gtest"]
|
|
|
|
DIRS += ["headless"]
|
|
|
|
# Don't build the DSO under the 'build' directory as windows does.
|
|
#
|
|
# The DSOs get built in the toolkit dir itself. Do this so that
|
|
# multiple implementations of widget can be built on the same
|
|
# source tree.
|
|
#
|
|
|
|
XPIDL_SOURCES += [
|
|
"nsIAppShell.idl",
|
|
"nsIBaseWindow.idl",
|
|
"nsIBidiKeyboard.idl",
|
|
"nsIClipboard.idl",
|
|
"nsIClipboardHelper.idl",
|
|
"nsIClipboardOwner.idl",
|
|
"nsIColorPicker.idl",
|
|
"nsIDisplayInfo.idl",
|
|
"nsIDragService.idl",
|
|
"nsIDragSession.idl",
|
|
"nsIFilePicker.idl",
|
|
"nsIFormatConverter.idl",
|
|
"nsIGfxInfo.idl",
|
|
"nsIGfxInfoDebug.idl",
|
|
"nsIMockDragServiceController.idl",
|
|
"nsIPaper.idl",
|
|
"nsIPaperMargin.idl",
|
|
"nsIPrinter.idl",
|
|
"nsIPrinterList.idl",
|
|
"nsIPrintSettings.idl",
|
|
"nsIPrintSettingsService.idl",
|
|
"nsIScreen.idl",
|
|
"nsIScreenManager.idl",
|
|
"nsISharePicker.idl",
|
|
"nsISound.idl",
|
|
"nsISystemStatusBar.idl",
|
|
"nsITransferable.idl",
|
|
"nsIUserIdleService.idl",
|
|
"nsIUserIdleServiceInternal.idl",
|
|
]
|
|
|
|
XPIDL_MODULE = "widget"
|
|
|
|
EXPORTS += [
|
|
"GfxDriverInfo.h",
|
|
"GfxInfoBase.h",
|
|
"GfxInfoCollector.h",
|
|
"InputData.h",
|
|
"nsBaseAppShell.h",
|
|
"nsBaseClipboard.h",
|
|
"nsBaseDragService.h",
|
|
"nsBaseFilePicker.h",
|
|
"nsBaseWidget.h",
|
|
"nsDragServiceProxy.h",
|
|
"nsIDeviceContextSpec.h",
|
|
"nsIRollupListener.h",
|
|
"nsIWidget.h",
|
|
"nsIWidgetListener.h",
|
|
"nsPaper.h",
|
|
"nsPrinterListBase.h",
|
|
"nsUserIdleService.h",
|
|
"nsWidgetsCID.h",
|
|
"PuppetWidget.h",
|
|
]
|
|
|
|
EXPORTS.mozilla += [
|
|
"BasicEvents.h",
|
|
"ClipboardContentAnalysisChild.h",
|
|
"ClipboardContentAnalysisParent.h",
|
|
"ClipboardReadRequestChild.h",
|
|
"ClipboardReadRequestParent.h",
|
|
"ClipboardWriteRequestChild.h",
|
|
"ClipboardWriteRequestParent.h",
|
|
"ColorScheme.h",
|
|
"CommandList.h",
|
|
"ContentCache.h",
|
|
"ContentData.h",
|
|
"ContentEvents.h",
|
|
"DimensionRequest.h",
|
|
"EventClassList.h",
|
|
"EventForwards.h",
|
|
"EventMessageList.h",
|
|
"FontRange.h",
|
|
"LookAndFeel.h",
|
|
"MiscEvents.h",
|
|
"MouseEvents.h",
|
|
"NativeKeyBindingsType.h",
|
|
"SwipeTracker.h",
|
|
"TextEventDispatcher.h",
|
|
"TextEventDispatcherListener.h",
|
|
"TextEvents.h",
|
|
"TextRange.h",
|
|
"TouchEvents.h",
|
|
"VsyncDispatcher.h",
|
|
"WidgetUtils.h",
|
|
"WindowButtonType.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.widget += [
|
|
"CompositorWidget.h",
|
|
"IconLoader.h",
|
|
"IMEData.h",
|
|
"InitData.h",
|
|
"InProcessCompositorWidget.h",
|
|
"MediaKeysEventSourceFactory.h",
|
|
"NativeMenu.h",
|
|
"NativeMenuSupport.h",
|
|
"nsAutoRollup.h",
|
|
"nsXPLookAndFeel.h",
|
|
"PuppetBidiKeyboard.h",
|
|
"RemoteLookAndFeel.h",
|
|
"Screen.h",
|
|
"ScreenManager.h",
|
|
"TextRecognition.h",
|
|
"ThemeChangeKind.h",
|
|
"WidgetMessageUtils.h",
|
|
"WindowOcclusionState.h",
|
|
]
|
|
|
|
UNIFIED_SOURCES += [
|
|
"ClipboardContentAnalysisChild.cpp",
|
|
"ClipboardContentAnalysisParent.cpp",
|
|
"ClipboardReadRequestParent.cpp",
|
|
"ClipboardWriteRequestChild.cpp",
|
|
"ClipboardWriteRequestParent.cpp",
|
|
"CompositorWidget.cpp",
|
|
"ContentCache.cpp",
|
|
"ContentData.cpp",
|
|
"DimensionRequest.cpp",
|
|
"GfxDriverInfo.cpp",
|
|
"GfxInfoBase.cpp",
|
|
"GfxInfoCollector.cpp",
|
|
"IconLoader.cpp",
|
|
"IMEData.cpp",
|
|
"InProcessCompositorWidget.cpp",
|
|
"InputData.cpp",
|
|
"nsAutoRollup.cpp",
|
|
"nsBaseAppShell.cpp",
|
|
"nsBaseClipboard.cpp",
|
|
"nsClipboardHelper.cpp",
|
|
"nsClipboardProxy.cpp",
|
|
"nsColorPickerProxy.cpp",
|
|
"nsDragServiceProxy.cpp",
|
|
"nsFilePickerProxy.cpp",
|
|
"nsHTMLFormatConverter.cpp",
|
|
"nsIBaseWindow.cpp",
|
|
"nsIDeviceContextSpec.cpp",
|
|
"nsIWidgetListener.cpp",
|
|
"nsPrimitiveHelpers.cpp",
|
|
"nsPrintSettingsImpl.cpp",
|
|
"nsTransferable.cpp",
|
|
"nsUserIdleService.cpp",
|
|
"nsXPLookAndFeel.cpp",
|
|
"PuppetBidiKeyboard.cpp",
|
|
"PuppetWidget.cpp",
|
|
"RemoteLookAndFeel.cpp",
|
|
"Screen.cpp",
|
|
"ScrollbarDrawing.cpp",
|
|
"ScrollbarDrawingAndroid.cpp",
|
|
"ScrollbarDrawingCocoa.cpp",
|
|
"ScrollbarDrawingGTK.cpp",
|
|
"ScrollbarDrawingWin.cpp",
|
|
"ScrollbarDrawingWin11.cpp",
|
|
"SharedWidgetUtils.cpp",
|
|
"SwipeTracker.cpp",
|
|
"TextEventDispatcher.cpp",
|
|
"TextRecognition.cpp",
|
|
"Theme.cpp",
|
|
"ThemeCocoa.cpp",
|
|
"ThemeColors.cpp",
|
|
"ThemeDrawing.cpp",
|
|
"TouchResampler.cpp",
|
|
"VsyncDispatcher.cpp",
|
|
"WidgetEventImpl.cpp",
|
|
"WidgetUtils.cpp",
|
|
]
|
|
|
|
if CONFIG["OS_ARCH"] == "Linux":
|
|
EXPORTS.mozilla.widget += ["LSBUtils.h"]
|
|
SOURCES += ["LSBUtils.cpp"]
|
|
|
|
if CONFIG["NS_PRINTING"]:
|
|
EXPORTS += [
|
|
"nsDeviceContextSpecProxy.h",
|
|
"nsPrintSettingsService.h",
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
"nsDeviceContextSpecProxy.cpp",
|
|
"nsPaper.cpp",
|
|
"nsPaperMargin.cpp",
|
|
"nsPrinterBase.cpp",
|
|
"nsPrinterListBase.cpp",
|
|
"nsPrintSettingsService.cpp",
|
|
]
|
|
|
|
if toolkit in ("cocoa", "gtk"):
|
|
UNIFIED_SOURCES += [
|
|
"nsCUPSShim.cpp",
|
|
"nsPrinterCUPS.cpp",
|
|
"nsPrinterListCUPS.cpp",
|
|
]
|
|
|
|
# nsBaseWidget.cpp needs to be built separately because of name clashes in the OS X headers
|
|
# nsBaseDragService.cpp moved out of UNIFIED to fix xgill crash (bug 1259850) after moving widget/ContentHelper -> apz/util/TouchActionHelper
|
|
SOURCES += [
|
|
"nsBaseDragService.cpp",
|
|
"nsBaseWidget.cpp",
|
|
"ScreenManager.cpp",
|
|
]
|
|
|
|
if CONFIG["MOZ_INSTRUMENT_EVENT_LOOP"]:
|
|
EXPORTS.mozilla += [
|
|
"WidgetTraceEvent.h",
|
|
]
|
|
|
|
EXPORTS.ipc = [
|
|
"nsGUIEventIPC.h",
|
|
]
|
|
|
|
if CONFIG["MOZ_X11"] or CONFIG["MOZ_WAYLAND"]:
|
|
DIRS += ["x11"]
|
|
|
|
if toolkit in {"gtk", "cocoa", "windows", "android", "uikit"}:
|
|
UNIFIED_SOURCES += [
|
|
"nsBaseFilePicker.cpp",
|
|
]
|
|
|
|
if toolkit in ("gtk", "windows", "cocoa", "uikit", "android"):
|
|
UNIFIED_SOURCES += [
|
|
"nsNativeTheme.cpp",
|
|
]
|
|
|
|
DEFINES["MOZ_CROSS_PROCESS_IME"] = True
|
|
|
|
include("/ipc/chromium/chromium-config.mozbuild")
|
|
|
|
LOCAL_INCLUDES += [
|
|
"/dom/base",
|
|
"/dom/ipc",
|
|
"/gfx/2d",
|
|
"/layout/base",
|
|
"/layout/forms",
|
|
"/layout/generic",
|
|
"/layout/painting",
|
|
"/layout/xul",
|
|
"/layout/xul/tree/",
|
|
"/view",
|
|
"/widget",
|
|
"/widget/headless",
|
|
]
|
|
|
|
# We use the CUPS headers on Cocoa and GTK, but on GTK we don't depend on there being system headers.
|
|
if toolkit == "gtk":
|
|
LOCAL_INCLUDES += ["/third_party/cups/include"]
|
|
|
|
if toolkit == "windows":
|
|
IPDL_SOURCES = [
|
|
"headless/HeadlessWidgetTypes.ipdlh",
|
|
"windows/PCompositorWidget.ipdl",
|
|
"windows/PlatformWidgetTypes.ipdlh",
|
|
]
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
IPDL_SOURCES = [
|
|
"gtk/PCompositorWidget.ipdl",
|
|
"gtk/PlatformWidgetTypes.ipdlh",
|
|
"headless/HeadlessWidgetTypes.ipdlh",
|
|
]
|
|
elif toolkit == "android":
|
|
IPDL_SOURCES = [
|
|
"android/PCompositorWidget.ipdl",
|
|
"android/PlatformWidgetTypes.ipdlh",
|
|
"headless/HeadlessWidgetTypes.ipdlh",
|
|
]
|
|
else:
|
|
IPDL_SOURCES = [
|
|
"generic/PCompositorWidget.ipdl",
|
|
"generic/PlatformWidgetTypes.ipdlh",
|
|
"headless/HeadlessWidgetTypes.ipdlh",
|
|
]
|
|
|
|
IPDL_SOURCES += [
|
|
"LookAndFeelTypes.ipdlh",
|
|
"PClipboardContentAnalysis.ipdl",
|
|
"PClipboardReadRequest.ipdl",
|
|
"PClipboardWriteRequest.ipdl",
|
|
]
|
|
|
|
LOCAL_INCLUDES += [
|
|
"/widget/%s" % toolkit,
|
|
]
|
|
|
|
if CONFIG["ENABLE_TESTS"]:
|
|
UNIFIED_SOURCES += [
|
|
"MockDragServiceController.cpp",
|
|
]
|
|
|
|
FINAL_LIBRARY = "xul"
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|
|
if CONFIG["MOZ_WAYLAND"]:
|
|
CXXFLAGS += CONFIG["MOZ_WAYLAND_CFLAGS"]
|