mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 01:05:45 +00:00
1a8239407b
This adds support for download progress reporting via the XApp method currently used in the Cinnamon desktop, by establishing a new X11 window property to be supported/read by the window manager. See https://github.com/linuxmint/xapps/blob/master/libxapp/xapp-gtk-window.c, as well as https://github.com/linuxmint/muffin/commit/39045da0ea06f for more details. The property-setting code lives in nsWindow - it's a small and stable enough chunk that it made more sense to do this than actually depend on another external library. As nsWindow is already using x11 calls, this seemed the safest place for it, without affecting the build. The TaskbarProgress instance is initialized via the DownloadsTaskbar js module, and is handed a pointer to the current main window to call SetProgress on. Most of the javascript side of this is in line with how the other platforms are handled. Without a supporting window manager/desktop environment (currently just Cinnamon/Muffin 3.6,) the simplest way to observe working behavior is by calling 'xprop -spy' on the browser window being testing and watching for updates during a download. --HG-- extra : rebase_source : 0606f6c87116204ec290c19276072d0c1c35691e
331 lines
7.8 KiB
Python
331 lines
7.8 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("*Gfx*"):
|
|
BUG_COMPONENT = ("Core", "Graphics")
|
|
|
|
with Files("*WindowSurface*"):
|
|
BUG_COMPONENT = ("Core", "Graphics")
|
|
|
|
with Files("*FontRange*"):
|
|
BUG_COMPONENT = ("Core", "Widget: Cocoa")
|
|
|
|
toolkit = CONFIG['MOZ_WIDGET_TOOLKIT']
|
|
|
|
if toolkit in ('cocoa', 'android', 'uikit'):
|
|
DIRS += [toolkit]
|
|
|
|
if toolkit == 'windows':
|
|
DIRS += ['windows']
|
|
|
|
XPIDL_SOURCES += [
|
|
'nsIJumpListBuilder.idl',
|
|
'nsIJumpListItem.idl',
|
|
'nsIPrintSettingsWin.idl',
|
|
'nsITaskbarOverlayIconController.idl',
|
|
'nsITaskbarPreview.idl',
|
|
'nsITaskbarPreviewButton.idl',
|
|
'nsITaskbarPreviewController.idl',
|
|
'nsITaskbarProgress.idl',
|
|
'nsITaskbarTabPreview.idl',
|
|
'nsITaskbarWindowPreview.idl',
|
|
'nsIWindowsUIUtils.idl',
|
|
'nsIWinTaskbar.idl',
|
|
]
|
|
elif toolkit == 'cocoa':
|
|
XPIDL_SOURCES += [
|
|
'nsIMacDockSupport.idl',
|
|
'nsIMacWebAppUtils.idl',
|
|
'nsIStandaloneNativeMenu.idl',
|
|
'nsISystemStatusBar.idl',
|
|
'nsITaskbarProgress.idl',
|
|
]
|
|
EXPORTS += [
|
|
'nsINativeMenuService.h',
|
|
]
|
|
|
|
TEST_DIRS += ['tests']
|
|
|
|
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.
|
|
#
|
|
if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
|
|
DIRS += ['gtk']
|
|
|
|
if CONFIG['MOZ_X11']:
|
|
DIRS += ['gtkxtbin']
|
|
|
|
XPIDL_SOURCES += [
|
|
'nsIGtkTaskbarProgress.idl',
|
|
'nsITaskbarProgress.idl',
|
|
]
|
|
|
|
XPIDL_SOURCES += [
|
|
'nsIAppShell.idl',
|
|
'nsIBaseWindow.idl',
|
|
'nsIBidiKeyboard.idl',
|
|
'nsIClipboard.idl',
|
|
'nsIClipboardDragDropHookList.idl',
|
|
'nsIClipboardDragDropHooks.idl',
|
|
'nsIClipboardHelper.idl',
|
|
'nsIClipboardOwner.idl',
|
|
'nsIColorPicker.idl',
|
|
'nsIDisplayInfo.idl',
|
|
'nsIDragService.idl',
|
|
'nsIDragSession.idl',
|
|
'nsIFilePicker.idl',
|
|
'nsIFormatConverter.idl',
|
|
'nsIGfxInfo.idl',
|
|
'nsIGfxInfoDebug.idl',
|
|
'nsIIdleService.idl',
|
|
'nsIIdleServiceInternal.idl',
|
|
'nsIPrinterEnumerator.idl',
|
|
'nsIPrintSession.idl',
|
|
'nsIPrintSettings.idl',
|
|
'nsIPrintSettingsService.idl',
|
|
'nsIScreen.idl',
|
|
'nsIScreenManager.idl',
|
|
'nsISound.idl',
|
|
'nsITransferable.idl',
|
|
]
|
|
|
|
XPIDL_MODULE = 'widget'
|
|
|
|
EXPORTS += [
|
|
'GfxDriverInfo.h',
|
|
'GfxInfoBase.h',
|
|
'GfxInfoCollector.h',
|
|
'InputData.h',
|
|
'nsBaseScreen.h',
|
|
'nsBaseWidget.h',
|
|
'nsIDeviceContextSpec.h',
|
|
'nsIKeyEventInPluginCallback.h',
|
|
'nsIPluginWidget.h',
|
|
'nsIPrintDialogService.h',
|
|
'nsIRollupListener.h',
|
|
'nsIWidget.h',
|
|
'nsIWidgetListener.h',
|
|
'nsWidgetInitData.h',
|
|
'nsWidgetsCID.h',
|
|
'PuppetWidget.h',
|
|
]
|
|
|
|
EXPORTS.mozilla += [
|
|
'BasicEvents.h',
|
|
'CommandList.h',
|
|
'ContentCache.h',
|
|
'ContentEvents.h',
|
|
'EventClassList.h',
|
|
'EventForwards.h',
|
|
'EventMessageList.h',
|
|
'FontRange.h',
|
|
'LookAndFeel.h',
|
|
'MiscEvents.h',
|
|
'MouseEvents.h',
|
|
'TextEventDispatcher.h',
|
|
'TextEventDispatcherListener.h',
|
|
'TextEvents.h',
|
|
'TextRange.h',
|
|
'TouchEvents.h',
|
|
'VsyncDispatcher.h',
|
|
'WidgetUtils.h',
|
|
]
|
|
|
|
EXPORTS.mozilla.widget += [
|
|
'CompositorWidget.h',
|
|
'IMEData.h',
|
|
'InProcessCompositorWidget.h',
|
|
'nsAutoRollup.h',
|
|
'PuppetBidiKeyboard.h',
|
|
'Screen.h',
|
|
'ScreenManager.h',
|
|
'WidgetMessageUtils.h',
|
|
'WindowSurface.h'
|
|
]
|
|
|
|
UNIFIED_SOURCES += [
|
|
'CompositorWidget.cpp',
|
|
'ContentCache.cpp',
|
|
'GfxDriverInfo.cpp',
|
|
'GfxInfoBase.cpp',
|
|
'GfxInfoCollector.cpp',
|
|
'InProcessCompositorWidget.cpp',
|
|
'InputData.cpp',
|
|
'nsAutoRollup.cpp',
|
|
'nsBaseAppShell.cpp',
|
|
'nsBaseScreen.cpp',
|
|
'nsClipboardHelper.cpp',
|
|
'nsClipboardProxy.cpp',
|
|
'nsColorPickerProxy.cpp',
|
|
'nsContentProcessWidgetFactory.cpp',
|
|
'nsDragServiceProxy.cpp',
|
|
'nsFilePickerProxy.cpp',
|
|
'nsHTMLFormatConverter.cpp',
|
|
'nsIdleService.cpp',
|
|
'nsIWidgetListener.cpp',
|
|
'nsPrimitiveHelpers.cpp',
|
|
'nsPrintSettingsImpl.cpp',
|
|
'nsSoundProxy.cpp',
|
|
'nsTransferable.cpp',
|
|
'nsXPLookAndFeel.cpp',
|
|
'PuppetBidiKeyboard.cpp',
|
|
'PuppetWidget.cpp',
|
|
'Screen.cpp',
|
|
'ScreenManager.cpp',
|
|
'SharedWidgetUtils.cpp',
|
|
'TextEventDispatcher.cpp',
|
|
'VsyncDispatcher.cpp',
|
|
'WidgetEventImpl.cpp',
|
|
'WidgetUtils.cpp',
|
|
]
|
|
|
|
if CONFIG['OS_ARCH'] == 'Linux':
|
|
EXPORTS.mozilla.widget += [
|
|
'LSBUtils.h'
|
|
]
|
|
SOURCES += [
|
|
'LSBUtils.cpp'
|
|
]
|
|
|
|
if CONFIG['MOZ_XUL'] and CONFIG['NS_PRINTING']:
|
|
EXPORTS += [
|
|
'nsDeviceContextSpecProxy.h',
|
|
'nsPrintSettingsService.h',
|
|
]
|
|
UNIFIED_SOURCES += [
|
|
'nsDeviceContextSpecProxy.cpp',
|
|
'nsPrintSession.cpp',
|
|
'nsPrintSettingsService.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',
|
|
]
|
|
|
|
if CONFIG['MOZ_INSTRUMENT_EVENT_LOOP']:
|
|
EXPORTS.mozilla += [
|
|
'WidgetTraceEvent.h',
|
|
]
|
|
|
|
EXPORTS.ipc = ['nsGUIEventIPC.h']
|
|
|
|
if CONFIG['MOZ_X11']:
|
|
DIRS += ['x11']
|
|
UNIFIED_SOURCES += [
|
|
'GfxInfoX11.cpp'
|
|
]
|
|
SOURCES += [
|
|
'nsShmImage.cpp',
|
|
'WindowSurfaceX11SHM.cpp',
|
|
]
|
|
|
|
if toolkit == 'windows':
|
|
EXPORTS += [
|
|
'PluginWidgetProxy.h',
|
|
]
|
|
SOURCES += [
|
|
'PluginWidgetProxy.cpp',
|
|
]
|
|
|
|
if toolkit in ('cocoa', 'windows'):
|
|
UNIFIED_SOURCES += [
|
|
'nsBaseClipboard.cpp',
|
|
]
|
|
|
|
if toolkit in {'gtk3', 'cocoa', 'windows',
|
|
'android', 'uikit'}:
|
|
UNIFIED_SOURCES += [
|
|
'nsBaseFilePicker.cpp',
|
|
]
|
|
|
|
if toolkit in ('gtk3', 'windows', 'cocoa', 'android'):
|
|
UNIFIED_SOURCES += [
|
|
'nsNativeTheme.cpp',
|
|
]
|
|
if toolkit == 'gtk3':
|
|
XPIDL_SOURCES += [
|
|
'nsIApplicationChooser.idl',
|
|
]
|
|
|
|
DEFINES['MOZ_CROSS_PROCESS_IME'] = True
|
|
|
|
include('/ipc/chromium/chromium-config.mozbuild')
|
|
|
|
LOCAL_INCLUDES += [
|
|
'/dom/base',
|
|
'/dom/ipc',
|
|
'/layout/base',
|
|
'/layout/forms',
|
|
'/layout/generic',
|
|
'/layout/painting',
|
|
'/layout/xul',
|
|
'/view',
|
|
'/widget',
|
|
'/widget/headless',
|
|
]
|
|
|
|
if toolkit == 'windows':
|
|
IPDL_SOURCES = [
|
|
'headless/HeadlessWidgetTypes.ipdlh',
|
|
'windows/PCompositorWidget.ipdl',
|
|
'windows/PlatformWidgetTypes.ipdlh',
|
|
]
|
|
elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT'] and CONFIG['MOZ_X11']:
|
|
IPDL_SOURCES = [
|
|
'gtk/PCompositorWidget.ipdl',
|
|
'gtk/PlatformWidgetTypes.ipdlh',
|
|
'headless/HeadlessWidgetTypes.ipdlh',
|
|
]
|
|
else:
|
|
IPDL_SOURCES = [
|
|
'headless/HeadlessWidgetTypes.ipdlh',
|
|
'PCompositorWidget.ipdl',
|
|
'PlatformWidgetTypes.ipdlh',
|
|
]
|
|
|
|
widget_dir = toolkit
|
|
if widget_dir == 'gtk3':
|
|
widget_dir = 'gtk'
|
|
|
|
LOCAL_INCLUDES += [
|
|
'/widget/%s' % widget_dir,
|
|
]
|
|
FINAL_LIBRARY = 'xul'
|
|
|
|
if CONFIG['MOZ_ENABLE_D3D10_LAYER']:
|
|
DEFINES['MOZ_ENABLE_D3D10_LAYER'] = True
|
|
|
|
CXXFLAGS += CONFIG['TK_CFLAGS']
|