mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
5000953110
--HG-- rename : widget/public/LookAndFeel.h => widget/LookAndFeel.h rename : widget/public/WidgetTraceEvent.h => widget/WidgetTraceEvent.h rename : widget/src/android/AndroidBridge.cpp => widget/android/AndroidBridge.cpp rename : widget/src/android/AndroidBridge.h => widget/android/AndroidBridge.h rename : widget/src/android/AndroidDirectTexture.cpp => widget/android/AndroidDirectTexture.cpp rename : widget/src/android/AndroidDirectTexture.h => widget/android/AndroidDirectTexture.h rename : widget/src/android/AndroidGraphicBuffer.cpp => widget/android/AndroidGraphicBuffer.cpp rename : widget/src/android/AndroidGraphicBuffer.h => widget/android/AndroidGraphicBuffer.h rename : widget/src/android/AndroidJNI.cpp => widget/android/AndroidJNI.cpp rename : widget/src/android/AndroidJavaWrappers.cpp => widget/android/AndroidJavaWrappers.cpp rename : widget/src/android/AndroidJavaWrappers.h => widget/android/AndroidJavaWrappers.h rename : widget/src/android/GfxInfo.cpp => widget/android/GfxInfo.cpp rename : widget/src/android/GfxInfo.h => widget/android/GfxInfo.h rename : widget/src/android/Makefile.in => widget/android/Makefile.in rename : widget/src/android/nsAppShell.cpp => widget/android/nsAppShell.cpp rename : widget/src/android/nsAppShell.h => widget/android/nsAppShell.h rename : widget/src/android/nsClipboard.cpp => widget/android/nsClipboard.cpp rename : widget/src/android/nsClipboard.h => widget/android/nsClipboard.h rename : widget/src/android/nsDeviceContextAndroid.cpp => widget/android/nsDeviceContextAndroid.cpp rename : widget/src/android/nsDeviceContextAndroid.h => widget/android/nsDeviceContextAndroid.h rename : widget/src/android/nsFilePicker.cpp => widget/android/nsFilePicker.cpp rename : widget/src/android/nsFilePicker.h => widget/android/nsFilePicker.h rename : widget/src/android/nsIAndroidBridge.idl => widget/android/nsIAndroidBridge.idl rename : widget/src/android/nsIMEPicker.cpp => widget/android/nsIMEPicker.cpp rename : widget/src/android/nsIMEPicker.h => widget/android/nsIMEPicker.h rename : widget/src/android/nsIdleServiceAndroid.cpp => widget/android/nsIdleServiceAndroid.cpp rename : widget/src/android/nsIdleServiceAndroid.h => widget/android/nsIdleServiceAndroid.h rename : widget/src/android/nsLookAndFeel.cpp => widget/android/nsLookAndFeel.cpp rename : widget/src/android/nsLookAndFeel.h => widget/android/nsLookAndFeel.h rename : widget/src/android/nsPrintOptionsAndroid.cpp => widget/android/nsPrintOptionsAndroid.cpp rename : widget/src/android/nsPrintOptionsAndroid.h => widget/android/nsPrintOptionsAndroid.h rename : widget/src/android/nsScreenManagerAndroid.cpp => widget/android/nsScreenManagerAndroid.cpp rename : widget/src/android/nsScreenManagerAndroid.h => widget/android/nsScreenManagerAndroid.h rename : widget/src/android/nsWidgetFactory.cpp => widget/android/nsWidgetFactory.cpp rename : widget/src/android/nsWindow.cpp => widget/android/nsWindow.cpp rename : widget/src/android/nsWindow.h => widget/android/nsWindow.h rename : widget/src/build/Makefile.in => widget/build/Makefile.in rename : widget/src/build/nsWinWidgetFactory.cpp => widget/build/nsWinWidgetFactory.cpp rename : widget/src/build/res/aliasb.cur => widget/build/res/aliasb.cur rename : widget/src/build/res/cell.cur => widget/build/res/cell.cur rename : widget/src/build/res/col_resize.cur => widget/build/res/col_resize.cur rename : widget/src/build/res/copy.cur => widget/build/res/copy.cur rename : widget/src/build/res/grab.cur => widget/build/res/grab.cur rename : widget/src/build/res/grabbing.cur => widget/build/res/grabbing.cur rename : widget/src/build/res/none.cur => widget/build/res/none.cur rename : widget/src/build/res/row_resize.cur => widget/build/res/row_resize.cur rename : widget/src/build/res/select.cur => widget/build/res/select.cur rename : widget/src/build/res/vertical_text.cur => widget/build/res/vertical_text.cur rename : widget/src/build/res/zoom_in.cur => widget/build/res/zoom_in.cur rename : widget/src/build/res/zoom_out.cur => widget/build/res/zoom_out.cur rename : widget/src/build/widget.rc => widget/build/widget.rc rename : widget/src/cocoa/ComplexTextInputPanel.h => widget/cocoa/ComplexTextInputPanel.h rename : widget/src/cocoa/ComplexTextInputPanel.mm => widget/cocoa/ComplexTextInputPanel.mm rename : widget/src/cocoa/CustomCocoaEvents.h => widget/cocoa/CustomCocoaEvents.h rename : widget/src/cocoa/GfxInfo.h => widget/cocoa/GfxInfo.h rename : widget/src/cocoa/GfxInfo.mm => widget/cocoa/GfxInfo.mm rename : widget/src/cocoa/Makefile.in => widget/cocoa/Makefile.in rename : widget/src/cocoa/TextInputHandler.h => widget/cocoa/TextInputHandler.h rename : widget/src/cocoa/TextInputHandler.mm => widget/cocoa/TextInputHandler.mm rename : widget/src/cocoa/WidgetTraceEvent.mm => widget/cocoa/WidgetTraceEvent.mm rename : widget/src/cocoa/crashtests/373122-1-inner.html => widget/cocoa/crashtests/373122-1-inner.html rename : widget/src/cocoa/crashtests/373122-1.html => widget/cocoa/crashtests/373122-1.html rename : widget/src/cocoa/crashtests/397209-1.html => widget/cocoa/crashtests/397209-1.html rename : widget/src/cocoa/crashtests/403296-1.xhtml => widget/cocoa/crashtests/403296-1.xhtml rename : widget/src/cocoa/crashtests/419737-1.html => widget/cocoa/crashtests/419737-1.html rename : widget/src/cocoa/crashtests/435223-1.html => widget/cocoa/crashtests/435223-1.html rename : widget/src/cocoa/crashtests/444260-1.xul => widget/cocoa/crashtests/444260-1.xul rename : widget/src/cocoa/crashtests/444864-1.html => widget/cocoa/crashtests/444864-1.html rename : widget/src/cocoa/crashtests/449111-1.html => widget/cocoa/crashtests/449111-1.html rename : widget/src/cocoa/crashtests/460349-1.xhtml => widget/cocoa/crashtests/460349-1.xhtml rename : widget/src/cocoa/crashtests/460387-1.html => widget/cocoa/crashtests/460387-1.html rename : widget/src/cocoa/crashtests/464589-1.html => widget/cocoa/crashtests/464589-1.html rename : widget/src/cocoa/crashtests/crashtests.list => widget/cocoa/crashtests/crashtests.list rename : widget/src/cocoa/cursors/arrowN.tiff => widget/cocoa/cursors/arrowN.tiff rename : widget/src/cocoa/cursors/arrowS.tiff => widget/cocoa/cursors/arrowS.tiff rename : widget/src/cocoa/cursors/colResize.tiff => widget/cocoa/cursors/colResize.tiff rename : widget/src/cocoa/cursors/help.tiff => widget/cocoa/cursors/help.tiff rename : widget/src/cocoa/cursors/rowResize.tiff => widget/cocoa/cursors/rowResize.tiff rename : widget/src/cocoa/cursors/sizeNE.tiff => widget/cocoa/cursors/sizeNE.tiff rename : widget/src/cocoa/cursors/sizeNESW.tiff => widget/cocoa/cursors/sizeNESW.tiff rename : widget/src/cocoa/cursors/sizeNS.tiff => widget/cocoa/cursors/sizeNS.tiff rename : widget/src/cocoa/cursors/sizeNW.tiff => widget/cocoa/cursors/sizeNW.tiff rename : widget/src/cocoa/cursors/sizeNWSE.tiff => widget/cocoa/cursors/sizeNWSE.tiff rename : widget/src/cocoa/cursors/sizeSE.tiff => widget/cocoa/cursors/sizeSE.tiff rename : widget/src/cocoa/cursors/sizeSW.tiff => widget/cocoa/cursors/sizeSW.tiff rename : widget/src/cocoa/cursors/spin1.tiff => widget/cocoa/cursors/spin1.tiff rename : widget/src/cocoa/cursors/spin2.tiff => widget/cocoa/cursors/spin2.tiff rename : widget/src/cocoa/cursors/spin3.tiff => widget/cocoa/cursors/spin3.tiff rename : widget/src/cocoa/cursors/spin4.tiff => widget/cocoa/cursors/spin4.tiff rename : widget/src/cocoa/cursors/vtIBeam.tiff => widget/cocoa/cursors/vtIBeam.tiff rename : widget/src/cocoa/cursors/zoomIn.tiff => widget/cocoa/cursors/zoomIn.tiff rename : widget/src/cocoa/cursors/zoomOut.tiff => widget/cocoa/cursors/zoomOut.tiff rename : widget/src/cocoa/mozView.h => widget/cocoa/mozView.h rename : widget/src/cocoa/nsAppShell.h => widget/cocoa/nsAppShell.h rename : widget/src/cocoa/nsAppShell.mm => widget/cocoa/nsAppShell.mm rename : widget/src/cocoa/nsBidiKeyboard.h => widget/cocoa/nsBidiKeyboard.h rename : widget/src/cocoa/nsBidiKeyboard.mm => widget/cocoa/nsBidiKeyboard.mm rename : widget/src/cocoa/nsChangeObserver.h => widget/cocoa/nsChangeObserver.h rename : widget/src/cocoa/nsChildView.h => widget/cocoa/nsChildView.h rename : widget/src/cocoa/nsChildView.mm => widget/cocoa/nsChildView.mm rename : widget/src/cocoa/nsClipboard.h => widget/cocoa/nsClipboard.h rename : widget/src/cocoa/nsClipboard.mm => widget/cocoa/nsClipboard.mm rename : widget/src/cocoa/nsCocoaFeatures.h => widget/cocoa/nsCocoaFeatures.h rename : widget/src/cocoa/nsCocoaFeatures.mm => widget/cocoa/nsCocoaFeatures.mm rename : widget/src/cocoa/nsCocoaUtils.h => widget/cocoa/nsCocoaUtils.h rename : widget/src/cocoa/nsCocoaUtils.mm => widget/cocoa/nsCocoaUtils.mm rename : widget/src/cocoa/nsCocoaWindow.h => widget/cocoa/nsCocoaWindow.h rename : widget/src/cocoa/nsCocoaWindow.mm => widget/cocoa/nsCocoaWindow.mm rename : widget/src/cocoa/nsCursorManager.h => widget/cocoa/nsCursorManager.h rename : widget/src/cocoa/nsCursorManager.mm => widget/cocoa/nsCursorManager.mm rename : widget/src/cocoa/nsDeviceContextSpecX.h => widget/cocoa/nsDeviceContextSpecX.h rename : widget/src/cocoa/nsDeviceContextSpecX.mm => widget/cocoa/nsDeviceContextSpecX.mm rename : widget/src/cocoa/nsDragService.h => widget/cocoa/nsDragService.h rename : widget/src/cocoa/nsDragService.mm => widget/cocoa/nsDragService.mm rename : widget/src/cocoa/nsFilePicker.h => widget/cocoa/nsFilePicker.h rename : widget/src/cocoa/nsFilePicker.mm => widget/cocoa/nsFilePicker.mm rename : widget/src/cocoa/nsIdleServiceX.h => widget/cocoa/nsIdleServiceX.h rename : widget/src/cocoa/nsIdleServiceX.mm => widget/cocoa/nsIdleServiceX.mm rename : widget/src/cocoa/nsLookAndFeel.h => widget/cocoa/nsLookAndFeel.h rename : widget/src/cocoa/nsLookAndFeel.mm => widget/cocoa/nsLookAndFeel.mm rename : widget/src/cocoa/nsMacCursor.h => widget/cocoa/nsMacCursor.h rename : widget/src/cocoa/nsMacCursor.mm => widget/cocoa/nsMacCursor.mm rename : widget/src/cocoa/nsMacDockSupport.h => widget/cocoa/nsMacDockSupport.h rename : widget/src/cocoa/nsMacDockSupport.mm => widget/cocoa/nsMacDockSupport.mm rename : widget/src/cocoa/nsMenuBarX.h => widget/cocoa/nsMenuBarX.h rename : widget/src/cocoa/nsMenuBarX.mm => widget/cocoa/nsMenuBarX.mm rename : widget/src/cocoa/nsMenuBaseX.h => widget/cocoa/nsMenuBaseX.h rename : widget/src/cocoa/nsMenuGroupOwnerX.h => widget/cocoa/nsMenuGroupOwnerX.h rename : widget/src/cocoa/nsMenuGroupOwnerX.mm => widget/cocoa/nsMenuGroupOwnerX.mm rename : widget/src/cocoa/nsMenuItemIconX.h => widget/cocoa/nsMenuItemIconX.h rename : widget/src/cocoa/nsMenuItemIconX.mm => widget/cocoa/nsMenuItemIconX.mm rename : widget/src/cocoa/nsMenuItemX.h => widget/cocoa/nsMenuItemX.h rename : widget/src/cocoa/nsMenuItemX.mm => widget/cocoa/nsMenuItemX.mm rename : widget/src/cocoa/nsMenuUtilsX.h => widget/cocoa/nsMenuUtilsX.h rename : widget/src/cocoa/nsMenuUtilsX.mm => widget/cocoa/nsMenuUtilsX.mm rename : widget/src/cocoa/nsMenuX.h => widget/cocoa/nsMenuX.h rename : widget/src/cocoa/nsMenuX.mm => widget/cocoa/nsMenuX.mm rename : widget/src/cocoa/nsNativeThemeCocoa.h => widget/cocoa/nsNativeThemeCocoa.h rename : widget/src/cocoa/nsNativeThemeCocoa.mm => widget/cocoa/nsNativeThemeCocoa.mm rename : widget/src/cocoa/nsNativeThemeColors.h => widget/cocoa/nsNativeThemeColors.h rename : widget/src/cocoa/nsPIWidgetCocoa.idl => widget/cocoa/nsPIWidgetCocoa.idl rename : widget/src/cocoa/nsPrintDialogX.h => widget/cocoa/nsPrintDialogX.h rename : widget/src/cocoa/nsPrintDialogX.mm => widget/cocoa/nsPrintDialogX.mm rename : widget/src/cocoa/nsPrintOptionsX.h => widget/cocoa/nsPrintOptionsX.h rename : widget/src/cocoa/nsPrintOptionsX.mm => widget/cocoa/nsPrintOptionsX.mm rename : widget/src/cocoa/nsPrintSettingsX.h => widget/cocoa/nsPrintSettingsX.h rename : widget/src/cocoa/nsPrintSettingsX.mm => widget/cocoa/nsPrintSettingsX.mm rename : widget/src/cocoa/nsScreenCocoa.h => widget/cocoa/nsScreenCocoa.h rename : widget/src/cocoa/nsScreenCocoa.mm => widget/cocoa/nsScreenCocoa.mm rename : widget/src/cocoa/nsScreenManagerCocoa.h => widget/cocoa/nsScreenManagerCocoa.h rename : widget/src/cocoa/nsScreenManagerCocoa.mm => widget/cocoa/nsScreenManagerCocoa.mm rename : widget/src/cocoa/nsSound.h => widget/cocoa/nsSound.h rename : widget/src/cocoa/nsSound.mm => widget/cocoa/nsSound.mm rename : widget/src/cocoa/nsStandaloneNativeMenu.h => widget/cocoa/nsStandaloneNativeMenu.h rename : widget/src/cocoa/nsStandaloneNativeMenu.mm => widget/cocoa/nsStandaloneNativeMenu.mm rename : widget/src/cocoa/nsToolkit.h => widget/cocoa/nsToolkit.h rename : widget/src/cocoa/nsToolkit.mm => widget/cocoa/nsToolkit.mm rename : widget/src/cocoa/nsWidgetFactory.mm => widget/cocoa/nsWidgetFactory.mm rename : widget/src/cocoa/nsWindowMap.h => widget/cocoa/nsWindowMap.h rename : widget/src/cocoa/nsWindowMap.mm => widget/cocoa/nsWindowMap.mm rename : widget/src/cocoa/resources/MainMenu.nib/classes.nib => widget/cocoa/resources/MainMenu.nib/classes.nib rename : widget/src/cocoa/resources/MainMenu.nib/info.nib => widget/cocoa/resources/MainMenu.nib/info.nib rename : widget/src/cocoa/resources/MainMenu.nib/keyedobjects.nib => widget/cocoa/resources/MainMenu.nib/keyedobjects.nib rename : widget/src/crashtests/303901-1.html => widget/crashtests/303901-1.html rename : widget/src/crashtests/303901-2.html => widget/crashtests/303901-2.html rename : widget/src/crashtests/380359-1.xhtml => widget/crashtests/380359-1.xhtml rename : widget/src/crashtests/crashtests.list => widget/crashtests/crashtests.list rename : widget/src/gonk/Framebuffer.cpp => widget/gonk/Framebuffer.cpp rename : widget/src/gonk/Framebuffer.h => widget/gonk/Framebuffer.h rename : widget/src/gonk/Makefile.in => widget/gonk/Makefile.in rename : widget/src/gonk/nsAppShell.cpp => widget/gonk/nsAppShell.cpp rename : widget/src/gonk/nsAppShell.h => widget/gonk/nsAppShell.h rename : widget/src/gonk/nsLookAndFeel.cpp => widget/gonk/nsLookAndFeel.cpp rename : widget/src/gonk/nsLookAndFeel.h => widget/gonk/nsLookAndFeel.h rename : widget/src/gonk/nsScreenManagerGonk.cpp => widget/gonk/nsScreenManagerGonk.cpp rename : widget/src/gonk/nsScreenManagerGonk.h => widget/gonk/nsScreenManagerGonk.h rename : widget/src/gonk/nsWidgetFactory.cpp => widget/gonk/nsWidgetFactory.cpp rename : widget/src/gonk/nsWindow.cpp => widget/gonk/nsWindow.cpp rename : widget/src/gonk/nsWindow.h => widget/gonk/nsWindow.h rename : widget/src/gtk2/Makefile.in => widget/gtk2/Makefile.in rename : widget/src/gtk2/WidgetTraceEvent.cpp => widget/gtk2/WidgetTraceEvent.cpp rename : widget/src/gtk2/crashtests/673390-1.html => widget/gtk2/crashtests/673390-1.html rename : widget/src/gtk2/crashtests/crashtests.list => widget/gtk2/crashtests/crashtests.list rename : widget/src/gtk2/gtk2compat.h => widget/gtk2/gtk2compat.h rename : widget/src/gtk2/gtk2drawing.c => widget/gtk2/gtk2drawing.c rename : widget/src/gtk2/gtkdrawing.h => widget/gtk2/gtkdrawing.h rename : widget/src/gtk2/maiRedundantObjectFactory.c => widget/gtk2/maiRedundantObjectFactory.c rename : widget/src/gtk2/maiRedundantObjectFactory.h => widget/gtk2/maiRedundantObjectFactory.h rename : widget/src/gtk2/mozcontainer.c => widget/gtk2/mozcontainer.c rename : widget/src/gtk2/mozcontainer.h => widget/gtk2/mozcontainer.h rename : widget/src/gtk2/nsAppShell.cpp => widget/gtk2/nsAppShell.cpp rename : widget/src/gtk2/nsAppShell.h => widget/gtk2/nsAppShell.h rename : widget/src/gtk2/nsBidiKeyboard.cpp => widget/gtk2/nsBidiKeyboard.cpp rename : widget/src/gtk2/nsBidiKeyboard.h => widget/gtk2/nsBidiKeyboard.h rename : widget/src/gtk2/nsCUPSShim.cpp => widget/gtk2/nsCUPSShim.cpp rename : widget/src/gtk2/nsCUPSShim.h => widget/gtk2/nsCUPSShim.h rename : widget/src/gtk2/nsClipboard.cpp => widget/gtk2/nsClipboard.cpp rename : widget/src/gtk2/nsClipboard.h => widget/gtk2/nsClipboard.h rename : widget/src/gtk2/nsDeviceContextSpecG.cpp => widget/gtk2/nsDeviceContextSpecG.cpp rename : widget/src/gtk2/nsDeviceContextSpecG.h => widget/gtk2/nsDeviceContextSpecG.h rename : widget/src/gtk2/nsDragService.cpp => widget/gtk2/nsDragService.cpp rename : widget/src/gtk2/nsDragService.h => widget/gtk2/nsDragService.h rename : widget/src/gtk2/nsFilePicker.cpp => widget/gtk2/nsFilePicker.cpp rename : widget/src/gtk2/nsFilePicker.h => widget/gtk2/nsFilePicker.h rename : widget/src/gtk2/nsGTKToolkit.h => widget/gtk2/nsGTKToolkit.h rename : widget/src/gtk2/nsGtkCursors.h => widget/gtk2/nsGtkCursors.h rename : widget/src/gtk2/nsGtkIMModule.cpp => widget/gtk2/nsGtkIMModule.cpp rename : widget/src/gtk2/nsGtkIMModule.h => widget/gtk2/nsGtkIMModule.h rename : widget/src/gtk2/nsGtkKeyUtils.cpp => widget/gtk2/nsGtkKeyUtils.cpp rename : widget/src/gtk2/nsGtkKeyUtils.h => widget/gtk2/nsGtkKeyUtils.h rename : widget/src/gtk2/nsIImageToPixbuf.h => widget/gtk2/nsIImageToPixbuf.h rename : widget/src/gtk2/nsIdleServiceGTK.cpp => widget/gtk2/nsIdleServiceGTK.cpp rename : widget/src/gtk2/nsIdleServiceGTK.h => widget/gtk2/nsIdleServiceGTK.h rename : widget/src/gtk2/nsImageToPixbuf.cpp => widget/gtk2/nsImageToPixbuf.cpp rename : widget/src/gtk2/nsImageToPixbuf.h => widget/gtk2/nsImageToPixbuf.h rename : widget/src/gtk2/nsLookAndFeel.cpp => widget/gtk2/nsLookAndFeel.cpp rename : widget/src/gtk2/nsLookAndFeel.h => widget/gtk2/nsLookAndFeel.h rename : widget/src/gtk2/nsNativeKeyBindings.cpp => widget/gtk2/nsNativeKeyBindings.cpp rename : widget/src/gtk2/nsNativeKeyBindings.h => widget/gtk2/nsNativeKeyBindings.h rename : widget/src/gtk2/nsNativeThemeGTK.cpp => widget/gtk2/nsNativeThemeGTK.cpp rename : widget/src/gtk2/nsNativeThemeGTK.h => widget/gtk2/nsNativeThemeGTK.h rename : widget/src/gtk2/nsPSPrinters.cpp => widget/gtk2/nsPSPrinters.cpp rename : widget/src/gtk2/nsPSPrinters.h => widget/gtk2/nsPSPrinters.h rename : widget/src/gtk2/nsPaperPS.cpp => widget/gtk2/nsPaperPS.cpp rename : widget/src/gtk2/nsPaperPS.h => widget/gtk2/nsPaperPS.h rename : widget/src/gtk2/nsPrintDialogGTK.cpp => widget/gtk2/nsPrintDialogGTK.cpp rename : widget/src/gtk2/nsPrintDialogGTK.h => widget/gtk2/nsPrintDialogGTK.h rename : widget/src/gtk2/nsPrintOptionsGTK.cpp => widget/gtk2/nsPrintOptionsGTK.cpp rename : widget/src/gtk2/nsPrintOptionsGTK.h => widget/gtk2/nsPrintOptionsGTK.h rename : widget/src/gtk2/nsPrintSettingsGTK.cpp => widget/gtk2/nsPrintSettingsGTK.cpp rename : widget/src/gtk2/nsPrintSettingsGTK.h => widget/gtk2/nsPrintSettingsGTK.h rename : widget/src/gtk2/nsScreenGtk.cpp => widget/gtk2/nsScreenGtk.cpp rename : widget/src/gtk2/nsScreenGtk.h => widget/gtk2/nsScreenGtk.h rename : widget/src/gtk2/nsScreenManagerGtk.cpp => widget/gtk2/nsScreenManagerGtk.cpp rename : widget/src/gtk2/nsScreenManagerGtk.h => widget/gtk2/nsScreenManagerGtk.h rename : widget/src/gtk2/nsSound.cpp => widget/gtk2/nsSound.cpp rename : widget/src/gtk2/nsSound.h => widget/gtk2/nsSound.h rename : widget/src/gtk2/nsToolkit.cpp => widget/gtk2/nsToolkit.cpp rename : widget/src/gtk2/nsWidgetFactory.cpp => widget/gtk2/nsWidgetFactory.cpp rename : widget/src/gtk2/nsWindow.cpp => widget/gtk2/nsWindow.cpp rename : widget/src/gtk2/nsWindow.h => widget/gtk2/nsWindow.h rename : widget/src/gtkxtbin/Makefile.in => widget/gtkxtbin/Makefile.in rename : widget/src/gtkxtbin/gtk2xtbin.c => widget/gtkxtbin/gtk2xtbin.c rename : widget/src/gtkxtbin/gtk2xtbin.h => widget/gtkxtbin/gtk2xtbin.h rename : widget/src/gtkxtbin/xembed.h => widget/gtkxtbin/xembed.h rename : widget/public/nsEvent.h => widget/nsEvent.h rename : widget/public/nsGUIEvent.h => widget/nsGUIEvent.h rename : widget/public/nsGUIEventIPC.h => widget/nsGUIEventIPC.h rename : widget/public/nsIAppShell.idl => widget/nsIAppShell.idl rename : widget/public/nsIBaseWindow.idl => widget/nsIBaseWindow.idl rename : widget/public/nsIBidiKeyboard.idl => widget/nsIBidiKeyboard.idl rename : widget/public/nsIClipboard.idl => widget/nsIClipboard.idl rename : widget/public/nsIClipboardDragDropHookList.idl => widget/nsIClipboardDragDropHookList.idl rename : widget/public/nsIClipboardDragDropHooks.idl => widget/nsIClipboardDragDropHooks.idl rename : widget/public/nsIClipboardHelper.idl => widget/nsIClipboardHelper.idl rename : widget/public/nsIClipboardOwner.idl => widget/nsIClipboardOwner.idl rename : widget/public/nsIDeviceContextSpec.h => widget/nsIDeviceContextSpec.h rename : widget/public/nsIDragService.idl => widget/nsIDragService.idl rename : widget/public/nsIDragSession.idl => widget/nsIDragSession.idl rename : widget/public/nsIDragSessionGTK.h => widget/nsIDragSessionGTK.h rename : widget/public/nsIDragSessionOS2.h => widget/nsIDragSessionOS2.h rename : widget/public/nsIFilePicker.idl => widget/nsIFilePicker.idl rename : widget/public/nsIFormatConverter.idl => widget/nsIFormatConverter.idl rename : widget/public/nsIGfxInfo.idl => widget/nsIGfxInfo.idl rename : widget/public/nsIGfxInfoDebug.idl => widget/nsIGfxInfoDebug.idl rename : widget/public/nsIIMEPicker.idl => widget/nsIIMEPicker.idl rename : widget/public/nsIIdleService.idl => widget/nsIIdleService.idl rename : widget/public/nsIJumpListBuilder.idl => widget/nsIJumpListBuilder.idl rename : widget/public/nsIJumpListItem.idl => widget/nsIJumpListItem.idl rename : widget/public/nsIMacDockSupport.idl => widget/nsIMacDockSupport.idl rename : widget/public/nsINativeKeyBindings.h => widget/nsINativeKeyBindings.h rename : widget/public/nsINativeMenuService.h => widget/nsINativeMenuService.h rename : widget/public/nsIPluginWidget.h => widget/nsIPluginWidget.h rename : widget/public/nsIPrintDialogService.h => widget/nsIPrintDialogService.h rename : widget/public/nsIPrintOptions.idl => widget/nsIPrintOptions.idl rename : widget/public/nsIPrintSession.idl => widget/nsIPrintSession.idl rename : widget/public/nsIPrintSettings.idl => widget/nsIPrintSettings.idl rename : widget/public/nsIPrintSettingsService.idl => widget/nsIPrintSettingsService.idl rename : widget/public/nsIPrintSettingsWin.idl => widget/nsIPrintSettingsWin.idl rename : widget/public/nsIRollupListener.h => widget/nsIRollupListener.h rename : widget/public/nsIRwsService.idl => widget/nsIRwsService.idl rename : widget/public/nsIScreen.idl => widget/nsIScreen.idl rename : widget/public/nsIScreenManager.idl => widget/nsIScreenManager.idl rename : widget/public/nsISound.idl => widget/nsISound.idl rename : widget/public/nsIStandaloneNativeMenu.idl => widget/nsIStandaloneNativeMenu.idl rename : widget/public/nsITaskbarOverlayIconController.idl => widget/nsITaskbarOverlayIconController.idl rename : widget/public/nsITaskbarPreview.idl => widget/nsITaskbarPreview.idl rename : widget/public/nsITaskbarPreviewButton.idl => widget/nsITaskbarPreviewButton.idl rename : widget/public/nsITaskbarPreviewController.idl => widget/nsITaskbarPreviewController.idl rename : widget/public/nsITaskbarProgress.idl => widget/nsITaskbarProgress.idl rename : widget/public/nsITaskbarTabPreview.idl => widget/nsITaskbarTabPreview.idl rename : widget/public/nsITaskbarWindowPreview.idl => widget/nsITaskbarWindowPreview.idl rename : widget/public/nsITransferable.idl => widget/nsITransferable.idl rename : widget/public/nsIWidget.h => widget/nsIWidget.h rename : widget/public/nsIWinTaskbar.idl => widget/nsIWinTaskbar.idl rename : widget/public/nsNativeWidget.h => widget/nsNativeWidget.h rename : widget/public/nsWidgetInitData.h => widget/nsWidgetInitData.h rename : widget/public/nsWidgetsCID.h => widget/nsWidgetsCID.h rename : widget/src/os2/Makefile.in => widget/os2/Makefile.in rename : widget/src/os2/MozSounds.cmd => widget/os2/MozSounds.cmd rename : widget/src/os2/README.firefox => widget/os2/README.firefox rename : widget/src/os2/README.seamonkey => widget/os2/README.seamonkey rename : widget/src/os2/README.thunderbird => widget/os2/README.thunderbird rename : widget/src/os2/nsAppShell.cpp => widget/os2/nsAppShell.cpp rename : widget/src/os2/nsAppShell.h => widget/os2/nsAppShell.h rename : widget/src/os2/nsBidiKeyboard.cpp => widget/os2/nsBidiKeyboard.cpp rename : widget/src/os2/nsBidiKeyboard.h => widget/os2/nsBidiKeyboard.h rename : widget/src/os2/nsClipboard.cpp => widget/os2/nsClipboard.cpp rename : widget/src/os2/nsClipboard.h => widget/os2/nsClipboard.h rename : widget/src/os2/nsDeviceContextSpecOS2.cpp => widget/os2/nsDeviceContextSpecOS2.cpp rename : widget/src/os2/nsDeviceContextSpecOS2.h => widget/os2/nsDeviceContextSpecOS2.h rename : widget/src/os2/nsDragService.cpp => widget/os2/nsDragService.cpp rename : widget/src/os2/nsDragService.h => widget/os2/nsDragService.h rename : widget/src/os2/nsFilePicker.cpp => widget/os2/nsFilePicker.cpp rename : widget/src/os2/nsFilePicker.h => widget/os2/nsFilePicker.h rename : widget/src/os2/nsGfxDefs.h => widget/os2/nsGfxDefs.h rename : widget/src/os2/nsIdleServiceOS2.cpp => widget/os2/nsIdleServiceOS2.cpp rename : widget/src/os2/nsIdleServiceOS2.h => widget/os2/nsIdleServiceOS2.h rename : widget/src/os2/nsLookAndFeel.cpp => widget/os2/nsLookAndFeel.cpp rename : widget/src/os2/nsLookAndFeel.h => widget/os2/nsLookAndFeel.h rename : widget/src/os2/nsOS2Uni.cpp => widget/os2/nsOS2Uni.cpp rename : widget/src/os2/nsOS2Uni.h => widget/os2/nsOS2Uni.h rename : widget/src/os2/nsPrintOS2.cpp => widget/os2/nsPrintOS2.cpp rename : widget/src/os2/nsPrintOS2.h => widget/os2/nsPrintOS2.h rename : widget/src/os2/nsPrintOptionsOS2.cpp => widget/os2/nsPrintOptionsOS2.cpp rename : widget/src/os2/nsPrintOptionsOS2.h => widget/os2/nsPrintOptionsOS2.h rename : widget/src/os2/nsPrintdOS2.h => widget/os2/nsPrintdOS2.h rename : widget/src/os2/nsRwsService.cpp => widget/os2/nsRwsService.cpp rename : widget/src/os2/nsRwsService.h => widget/os2/nsRwsService.h rename : widget/src/os2/nsScreenManagerOS2.cpp => widget/os2/nsScreenManagerOS2.cpp rename : widget/src/os2/nsScreenManagerOS2.h => widget/os2/nsScreenManagerOS2.h rename : widget/src/os2/nsScreenOS2.cpp => widget/os2/nsScreenOS2.cpp rename : widget/src/os2/nsScreenOS2.h => widget/os2/nsScreenOS2.h rename : widget/src/os2/nsSound.cpp => widget/os2/nsSound.cpp rename : widget/src/os2/nsSound.h => widget/os2/nsSound.h rename : widget/src/os2/nsWidgetFactory.cpp => widget/os2/nsWidgetFactory.cpp rename : widget/src/os2/nsWindow.cpp => widget/os2/nsWindow.cpp rename : widget/src/os2/nsWindow.h => widget/os2/nsWindow.h rename : widget/src/os2/os2FrameWindow.cpp => widget/os2/os2FrameWindow.cpp rename : widget/src/os2/os2FrameWindow.h => widget/os2/os2FrameWindow.h rename : widget/src/os2/res/aliasb.ptr => widget/os2/res/aliasb.ptr rename : widget/src/os2/res/arrow_wait.ptr => widget/os2/res/arrow_wait.ptr rename : widget/src/os2/res/cell.ptr => widget/os2/res/cell.ptr rename : widget/src/os2/res/col_resize.ptr => widget/os2/res/col_resize.ptr rename : widget/src/os2/res/copy.ptr => widget/os2/res/copy.ptr rename : widget/src/os2/res/crosshair.ptr => widget/os2/res/crosshair.ptr rename : widget/src/os2/res/dndtext.ico => widget/os2/res/dndtext.ico rename : widget/src/os2/res/dndurl.ico => widget/os2/res/dndurl.ico rename : widget/src/os2/res/grab.ptr => widget/os2/res/grab.ptr rename : widget/src/os2/res/grabbing.ptr => widget/os2/res/grabbing.ptr rename : widget/src/os2/res/help.ptr => widget/os2/res/help.ptr rename : widget/src/os2/res/none.ptr => widget/os2/res/none.ptr rename : widget/src/os2/res/row_resize.ptr => widget/os2/res/row_resize.ptr rename : widget/src/os2/res/select.ptr => widget/os2/res/select.ptr rename : widget/src/os2/res/vertical_text.ptr => widget/os2/res/vertical_text.ptr rename : widget/src/os2/res/zoom_in.ptr => widget/os2/res/zoom_in.ptr rename : widget/src/os2/res/zoom_out.ptr => widget/os2/res/zoom_out.ptr rename : widget/src/os2/rws.h => widget/os2/rws.h rename : widget/src/os2/rwserr.h => widget/os2/rwserr.h rename : widget/src/os2/wdgtos2rc.h => widget/os2/wdgtos2rc.h rename : widget/src/os2/widget.rc => widget/os2/widget.rc rename : widget/src/qt/Makefile.in => widget/qt/Makefile.in rename : widget/src/qt/faststartupqt/Makefile.in => widget/qt/faststartupqt/Makefile.in rename : widget/src/qt/faststartupqt/mozqwidgetfast.cpp => widget/qt/faststartupqt/mozqwidgetfast.cpp rename : widget/src/qt/faststartupqt/mozqwidgetfast.h => widget/qt/faststartupqt/mozqwidgetfast.h rename : widget/src/qt/faststartupqt/nsFastStartupQt.cpp => widget/qt/faststartupqt/nsFastStartupQt.cpp rename : widget/src/qt/faststartupqt/nsFastStartupQt.h => widget/qt/faststartupqt/nsFastStartupQt.h rename : widget/src/qt/mozSwipeGesture.cpp => widget/qt/mozSwipeGesture.cpp rename : widget/src/qt/mozSwipeGesture.h => widget/qt/mozSwipeGesture.h rename : widget/src/qt/moziqwidget.h => widget/qt/moziqwidget.h rename : widget/src/qt/mozqorientationsensorfilter.cpp => widget/qt/mozqorientationsensorfilter.cpp rename : widget/src/qt/mozqorientationsensorfilter.h => widget/qt/mozqorientationsensorfilter.h rename : widget/src/qt/mozqwidget.cpp => widget/qt/mozqwidget.cpp rename : widget/src/qt/mozqwidget.h => widget/qt/mozqwidget.h rename : widget/src/qt/nsAppShell.cpp => widget/qt/nsAppShell.cpp rename : widget/src/qt/nsAppShell.h => widget/qt/nsAppShell.h rename : widget/src/qt/nsBidiKeyboard.cpp => widget/qt/nsBidiKeyboard.cpp rename : widget/src/qt/nsBidiKeyboard.h => widget/qt/nsBidiKeyboard.h rename : widget/src/qt/nsClipboard.cpp => widget/qt/nsClipboard.cpp rename : widget/src/qt/nsClipboard.h => widget/qt/nsClipboard.h rename : widget/src/qt/nsCommonWidget.cpp => widget/qt/nsCommonWidget.cpp rename : widget/src/qt/nsCommonWidget.h => widget/qt/nsCommonWidget.h rename : widget/src/qt/nsDeviceContextSpecQt.cpp => widget/qt/nsDeviceContextSpecQt.cpp rename : widget/src/qt/nsDeviceContextSpecQt.h => widget/qt/nsDeviceContextSpecQt.h rename : widget/src/qt/nsDragService.cpp => widget/qt/nsDragService.cpp rename : widget/src/qt/nsDragService.h => widget/qt/nsDragService.h rename : widget/src/qt/nsFilePicker.cpp => widget/qt/nsFilePicker.cpp rename : widget/src/qt/nsFilePicker.h => widget/qt/nsFilePicker.h rename : widget/src/qt/nsIdleServiceQt.cpp => widget/qt/nsIdleServiceQt.cpp rename : widget/src/qt/nsIdleServiceQt.h => widget/qt/nsIdleServiceQt.h rename : widget/src/qt/nsLookAndFeel.cpp => widget/qt/nsLookAndFeel.cpp rename : widget/src/qt/nsLookAndFeel.h => widget/qt/nsLookAndFeel.h rename : widget/src/qt/nsMFilePicker.cpp => widget/qt/nsMFilePicker.cpp rename : widget/src/qt/nsMFilePicker.h => widget/qt/nsMFilePicker.h rename : widget/src/qt/nsNativeThemeQt.cpp => widget/qt/nsNativeThemeQt.cpp rename : widget/src/qt/nsNativeThemeQt.h => widget/qt/nsNativeThemeQt.h rename : widget/src/qt/nsPrintDialogQt.cpp => widget/qt/nsPrintDialogQt.cpp rename : widget/src/qt/nsPrintDialogQt.h => widget/qt/nsPrintDialogQt.h rename : widget/src/qt/nsPrintOptionsQt.cpp => widget/qt/nsPrintOptionsQt.cpp rename : widget/src/qt/nsPrintOptionsQt.h => widget/qt/nsPrintOptionsQt.h rename : widget/src/qt/nsPrintSettingsQt.cpp => widget/qt/nsPrintSettingsQt.cpp rename : widget/src/qt/nsPrintSettingsQt.h => widget/qt/nsPrintSettingsQt.h rename : widget/src/qt/nsQtKeyUtils.cpp => widget/qt/nsQtKeyUtils.cpp rename : widget/src/qt/nsQtKeyUtils.h => widget/qt/nsQtKeyUtils.h rename : widget/src/qt/nsScreenManagerQt.cpp => widget/qt/nsScreenManagerQt.cpp rename : widget/src/qt/nsScreenManagerQt.h => widget/qt/nsScreenManagerQt.h rename : widget/src/qt/nsScreenQt.cpp => widget/qt/nsScreenQt.cpp rename : widget/src/qt/nsScreenQt.h => widget/qt/nsScreenQt.h rename : widget/src/qt/nsSound.cpp => widget/qt/nsSound.cpp rename : widget/src/qt/nsSound.h => widget/qt/nsSound.h rename : widget/src/qt/nsWidgetFactory.cpp => widget/qt/nsWidgetFactory.cpp rename : widget/src/qt/nsWindow.cpp => widget/qt/nsWindow.cpp rename : widget/src/qt/nsWindow.h => widget/qt/nsWindow.h rename : widget/src/shared/Makefile.in => widget/shared/Makefile.in rename : widget/src/shared/WidgetUtils.cpp => widget/shared/WidgetUtils.cpp rename : widget/src/shared/WidgetUtils.h => widget/shared/WidgetUtils.h rename : widget/src/shared/nsShmImage.cpp => widget/shared/nsShmImage.cpp rename : widget/src/shared/nsShmImage.h => widget/shared/nsShmImage.h rename : widget/src/shared/x11/Makefile.in => widget/shared/x11/Makefile.in rename : widget/src/shared/x11/keysym2ucs.c => widget/shared/x11/keysym2ucs.c rename : widget/src/shared/x11/keysym2ucs.h => widget/shared/x11/keysym2ucs.h rename : widget/src/windows/AudioSession.cpp => widget/windows/AudioSession.cpp rename : widget/src/windows/AudioSession.h => widget/windows/AudioSession.h rename : widget/src/windows/GfxInfo.cpp => widget/windows/GfxInfo.cpp rename : widget/src/windows/GfxInfo.h => widget/windows/GfxInfo.h rename : widget/src/windows/IEnumFE.cpp => widget/windows/IEnumFE.cpp rename : widget/src/windows/IEnumFE.h => widget/windows/IEnumFE.h rename : widget/src/windows/JumpListBuilder.cpp => widget/windows/JumpListBuilder.cpp rename : widget/src/windows/JumpListBuilder.h => widget/windows/JumpListBuilder.h rename : widget/src/windows/JumpListItem.cpp => widget/windows/JumpListItem.cpp rename : widget/src/windows/JumpListItem.h => widget/windows/JumpListItem.h rename : widget/src/windows/KeyboardLayout.cpp => widget/windows/KeyboardLayout.cpp rename : widget/src/windows/KeyboardLayout.h => widget/windows/KeyboardLayout.h rename : widget/src/windows/LSPAnnotator.cpp => widget/windows/LSPAnnotator.cpp rename : widget/src/windows/Makefile.in => widget/windows/Makefile.in rename : widget/src/windows/TaskbarPreview.cpp => widget/windows/TaskbarPreview.cpp rename : widget/src/windows/TaskbarPreview.h => widget/windows/TaskbarPreview.h rename : widget/src/windows/TaskbarPreviewButton.cpp => widget/windows/TaskbarPreviewButton.cpp rename : widget/src/windows/TaskbarPreviewButton.h => widget/windows/TaskbarPreviewButton.h rename : widget/src/windows/TaskbarTabPreview.cpp => widget/windows/TaskbarTabPreview.cpp rename : widget/src/windows/TaskbarTabPreview.h => widget/windows/TaskbarTabPreview.h rename : widget/src/windows/TaskbarWindowPreview.cpp => widget/windows/TaskbarWindowPreview.cpp rename : widget/src/windows/TaskbarWindowPreview.h => widget/windows/TaskbarWindowPreview.h rename : widget/src/windows/WidgetTraceEvent.cpp => widget/windows/WidgetTraceEvent.cpp rename : widget/src/windows/WinTaskbar.cpp => widget/windows/WinTaskbar.cpp rename : widget/src/windows/WinTaskbar.h => widget/windows/WinTaskbar.h rename : widget/src/windows/WindowHook.cpp => widget/windows/WindowHook.cpp rename : widget/src/windows/WindowHook.h => widget/windows/WindowHook.h rename : widget/src/windows/nsAppShell.cpp => widget/windows/nsAppShell.cpp rename : widget/src/windows/nsAppShell.h => widget/windows/nsAppShell.h rename : widget/src/windows/nsBidiKeyboard.cpp => widget/windows/nsBidiKeyboard.cpp rename : widget/src/windows/nsBidiKeyboard.h => widget/windows/nsBidiKeyboard.h rename : widget/src/windows/nsClipboard.cpp => widget/windows/nsClipboard.cpp rename : widget/src/windows/nsClipboard.h => widget/windows/nsClipboard.h rename : widget/src/windows/nsDataObj.cpp => widget/windows/nsDataObj.cpp rename : widget/src/windows/nsDataObj.h => widget/windows/nsDataObj.h rename : widget/src/windows/nsDataObjCollection.cpp => widget/windows/nsDataObjCollection.cpp rename : widget/src/windows/nsDataObjCollection.h => widget/windows/nsDataObjCollection.h rename : widget/src/windows/nsDeviceContextSpecWin.cpp => widget/windows/nsDeviceContextSpecWin.cpp rename : widget/src/windows/nsDeviceContextSpecWin.h => widget/windows/nsDeviceContextSpecWin.h rename : widget/src/windows/nsDragService.cpp => widget/windows/nsDragService.cpp rename : widget/src/windows/nsDragService.h => widget/windows/nsDragService.h rename : widget/src/windows/nsFilePicker.cpp => widget/windows/nsFilePicker.cpp rename : widget/src/windows/nsFilePicker.h => widget/windows/nsFilePicker.h rename : widget/src/windows/nsIMM32Handler.cpp => widget/windows/nsIMM32Handler.cpp rename : widget/src/windows/nsIMM32Handler.h => widget/windows/nsIMM32Handler.h rename : widget/src/windows/nsIdleServiceWin.cpp => widget/windows/nsIdleServiceWin.cpp rename : widget/src/windows/nsIdleServiceWin.h => widget/windows/nsIdleServiceWin.h rename : widget/src/windows/nsImageClipboard.cpp => widget/windows/nsImageClipboard.cpp rename : widget/src/windows/nsImageClipboard.h => widget/windows/nsImageClipboard.h rename : widget/src/windows/nsLookAndFeel.cpp => widget/windows/nsLookAndFeel.cpp rename : widget/src/windows/nsLookAndFeel.h => widget/windows/nsLookAndFeel.h rename : widget/src/windows/nsNativeDragSource.cpp => widget/windows/nsNativeDragSource.cpp rename : widget/src/windows/nsNativeDragSource.h => widget/windows/nsNativeDragSource.h rename : widget/src/windows/nsNativeDragTarget.cpp => widget/windows/nsNativeDragTarget.cpp rename : widget/src/windows/nsNativeDragTarget.h => widget/windows/nsNativeDragTarget.h rename : widget/src/windows/nsNativeThemeWin.cpp => widget/windows/nsNativeThemeWin.cpp rename : widget/src/windows/nsNativeThemeWin.h => widget/windows/nsNativeThemeWin.h rename : widget/src/windows/nsPrintOptionsWin.cpp => widget/windows/nsPrintOptionsWin.cpp rename : widget/src/windows/nsPrintOptionsWin.h => widget/windows/nsPrintOptionsWin.h rename : widget/src/windows/nsPrintSettingsWin.cpp => widget/windows/nsPrintSettingsWin.cpp rename : widget/src/windows/nsPrintSettingsWin.h => widget/windows/nsPrintSettingsWin.h rename : widget/src/windows/nsScreenManagerWin.cpp => widget/windows/nsScreenManagerWin.cpp rename : widget/src/windows/nsScreenManagerWin.h => widget/windows/nsScreenManagerWin.h rename : widget/src/windows/nsScreenWin.cpp => widget/windows/nsScreenWin.cpp rename : widget/src/windows/nsScreenWin.h => widget/windows/nsScreenWin.h rename : widget/src/windows/nsSound.cpp => widget/windows/nsSound.cpp rename : widget/src/windows/nsSound.h => widget/windows/nsSound.h rename : widget/src/windows/nsTextStore.cpp => widget/windows/nsTextStore.cpp rename : widget/src/windows/nsTextStore.h => widget/windows/nsTextStore.h rename : widget/src/windows/nsToolkit.cpp => widget/windows/nsToolkit.cpp rename : widget/src/windows/nsToolkit.h => widget/windows/nsToolkit.h rename : widget/src/windows/nsUXThemeConstants.h => widget/windows/nsUXThemeConstants.h rename : widget/src/windows/nsUXThemeData.cpp => widget/windows/nsUXThemeData.cpp rename : widget/src/windows/nsUXThemeData.h => widget/windows/nsUXThemeData.h rename : widget/src/windows/nsWinGesture.cpp => widget/windows/nsWinGesture.cpp rename : widget/src/windows/nsWinGesture.h => widget/windows/nsWinGesture.h rename : widget/src/windows/nsWindow.cpp => widget/windows/nsWindow.cpp rename : widget/src/windows/nsWindow.h => widget/windows/nsWindow.h rename : widget/src/windows/nsWindowDbg.cpp => widget/windows/nsWindowDbg.cpp rename : widget/src/windows/nsWindowDbg.h => widget/windows/nsWindowDbg.h rename : widget/src/windows/nsWindowDefs.h => widget/windows/nsWindowDefs.h rename : widget/src/windows/nsWindowGfx.cpp => widget/windows/nsWindowGfx.cpp rename : widget/src/windows/nsWindowGfx.h => widget/windows/nsWindowGfx.h rename : widget/src/windows/nsdefs.h => widget/windows/nsdefs.h rename : widget/src/windows/resource.h => widget/windows/resource.h rename : widget/src/windows/tests/Makefile.in => widget/windows/tests/Makefile.in rename : widget/src/windows/tests/TestWinDND.cpp => widget/windows/tests/TestWinDND.cpp rename : widget/src/xpwidgets/GfxDriverInfo.cpp => widget/xpwidgets/GfxDriverInfo.cpp rename : widget/src/xpwidgets/GfxDriverInfo.h => widget/xpwidgets/GfxDriverInfo.h rename : widget/src/xpwidgets/GfxInfoBase.cpp => widget/xpwidgets/GfxInfoBase.cpp rename : widget/src/xpwidgets/GfxInfoBase.h => widget/xpwidgets/GfxInfoBase.h rename : widget/src/xpwidgets/GfxInfoCollector.h => widget/xpwidgets/GfxInfoCollector.h rename : widget/src/xpwidgets/GfxInfoWebGL.cpp => widget/xpwidgets/GfxInfoWebGL.cpp rename : widget/src/xpwidgets/GfxInfoWebGL.h => widget/xpwidgets/GfxInfoWebGL.h rename : widget/src/xpwidgets/GfxInfoX11.cpp => widget/xpwidgets/GfxInfoX11.cpp rename : widget/src/xpwidgets/GfxInfoX11.h => widget/xpwidgets/GfxInfoX11.h rename : widget/src/xpwidgets/Makefile.in => widget/xpwidgets/Makefile.in rename : widget/src/xpwidgets/PuppetWidget.cpp => widget/xpwidgets/PuppetWidget.cpp rename : widget/src/xpwidgets/PuppetWidget.h => widget/xpwidgets/PuppetWidget.h rename : widget/src/xpwidgets/nsAppShellSingleton.h => widget/xpwidgets/nsAppShellSingleton.h rename : widget/src/xpwidgets/nsBaseAppShell.cpp => widget/xpwidgets/nsBaseAppShell.cpp rename : widget/src/xpwidgets/nsBaseAppShell.h => widget/xpwidgets/nsBaseAppShell.h rename : widget/src/xpwidgets/nsBaseClipboard.cpp => widget/xpwidgets/nsBaseClipboard.cpp rename : widget/src/xpwidgets/nsBaseClipboard.h => widget/xpwidgets/nsBaseClipboard.h rename : widget/src/xpwidgets/nsBaseDragService.cpp => widget/xpwidgets/nsBaseDragService.cpp rename : widget/src/xpwidgets/nsBaseDragService.h => widget/xpwidgets/nsBaseDragService.h rename : widget/src/xpwidgets/nsBaseFilePicker.cpp => widget/xpwidgets/nsBaseFilePicker.cpp rename : widget/src/xpwidgets/nsBaseFilePicker.h => widget/xpwidgets/nsBaseFilePicker.h rename : widget/src/xpwidgets/nsBaseWidget.cpp => widget/xpwidgets/nsBaseWidget.cpp rename : widget/src/xpwidgets/nsBaseWidget.h => widget/xpwidgets/nsBaseWidget.h rename : widget/src/xpwidgets/nsClipboardHelper.cpp => widget/xpwidgets/nsClipboardHelper.cpp rename : widget/src/xpwidgets/nsClipboardHelper.h => widget/xpwidgets/nsClipboardHelper.h rename : widget/src/xpwidgets/nsClipboardPrivacyHandler.cpp => widget/xpwidgets/nsClipboardPrivacyHandler.cpp rename : widget/src/xpwidgets/nsClipboardPrivacyHandler.h => widget/xpwidgets/nsClipboardPrivacyHandler.h rename : widget/src/xpwidgets/nsFilePickerProxy.cpp => widget/xpwidgets/nsFilePickerProxy.cpp rename : widget/src/xpwidgets/nsFilePickerProxy.h => widget/xpwidgets/nsFilePickerProxy.h rename : widget/src/xpwidgets/nsHTMLFormatConverter.cpp => widget/xpwidgets/nsHTMLFormatConverter.cpp rename : widget/src/xpwidgets/nsHTMLFormatConverter.h => widget/xpwidgets/nsHTMLFormatConverter.h rename : widget/src/xpwidgets/nsIdleService.cpp => widget/xpwidgets/nsIdleService.cpp rename : widget/src/xpwidgets/nsIdleService.h => widget/xpwidgets/nsIdleService.h rename : widget/src/xpwidgets/nsNativeTheme.cpp => widget/xpwidgets/nsNativeTheme.cpp rename : widget/src/xpwidgets/nsNativeTheme.h => widget/xpwidgets/nsNativeTheme.h rename : widget/src/xpwidgets/nsPrimitiveHelpers.cpp => widget/xpwidgets/nsPrimitiveHelpers.cpp rename : widget/src/xpwidgets/nsPrimitiveHelpers.h => widget/xpwidgets/nsPrimitiveHelpers.h rename : widget/src/xpwidgets/nsPrintOptionsImpl.cpp => widget/xpwidgets/nsPrintOptionsImpl.cpp rename : widget/src/xpwidgets/nsPrintOptionsImpl.h => widget/xpwidgets/nsPrintOptionsImpl.h rename : widget/src/xpwidgets/nsPrintSession.cpp => widget/xpwidgets/nsPrintSession.cpp rename : widget/src/xpwidgets/nsPrintSession.h => widget/xpwidgets/nsPrintSession.h rename : widget/src/xpwidgets/nsPrintSettingsImpl.cpp => widget/xpwidgets/nsPrintSettingsImpl.cpp rename : widget/src/xpwidgets/nsPrintSettingsImpl.h => widget/xpwidgets/nsPrintSettingsImpl.h rename : widget/src/xpwidgets/nsTransferable.cpp => widget/xpwidgets/nsTransferable.cpp rename : widget/src/xpwidgets/nsTransferable.h => widget/xpwidgets/nsTransferable.h rename : widget/src/xpwidgets/nsXPLookAndFeel.cpp => widget/xpwidgets/nsXPLookAndFeel.cpp rename : widget/src/xpwidgets/nsXPLookAndFeel.h => widget/xpwidgets/nsXPLookAndFeel.h rename : widget/src/xremoteclient/Makefile.in => widget/xremoteclient/Makefile.in rename : widget/src/xremoteclient/XRemoteClient.cpp => widget/xremoteclient/XRemoteClient.cpp rename : widget/src/xremoteclient/XRemoteClient.h => widget/xremoteclient/XRemoteClient.h rename : widget/src/xremoteclient/XRemoteClientFactory.cpp => widget/xremoteclient/XRemoteClientFactory.cpp rename : widget/src/xremoteclient/mozilla-xremote-client.cpp => widget/xremoteclient/mozilla-xremote-client.cpp rename : widget/src/xremoteclient/nsRemoteClient.h => widget/xremoteclient/nsRemoteClient.h
1266 lines
36 KiB
C++
1266 lines
36 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is OS/2 Remote Workplace Server interface.
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* Richard L Walsh.
|
|
* Portions created by the Initial Developer are Copyright (C) 2005
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
* the provisions above, a recipient may use your version of this file under
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
*
|
|
* ***** END LICENSE BLOCK ***** */
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
#include "nsIFile.h"
|
|
#include "mozilla/ModuleUtils.h"
|
|
#include "nsIObserver.h"
|
|
#include "nsIObserverService.h"
|
|
#include "nsDirectoryServiceDefs.h"
|
|
#include "nsLiteralString.h"
|
|
#include "nsReadableUtils.h"
|
|
#include "nsIStringBundle.h"
|
|
#include "mozilla/Services.h"
|
|
|
|
#define INCL_WIN
|
|
#define INCL_DOS
|
|
#include <os2.h>
|
|
|
|
// nsRwsService must be included _after_ os2.h
|
|
#include "nsRwsService.h"
|
|
#include "rwserr.h"
|
|
#include "nsOS2Uni.h"
|
|
|
|
#include "prenv.h"
|
|
#include <stdio.h>
|
|
|
|
//------------------------------------------------------------------------
|
|
// debug macros
|
|
//------------------------------------------------------------------------
|
|
|
|
#ifdef DEBUG
|
|
#define RWS_DEBUG
|
|
#endif
|
|
|
|
// use this to force debug msgs in non-debug builds
|
|
//#ifndef RWS_DEBUG
|
|
// #define RWS_DEBUG
|
|
//#endif
|
|
|
|
#ifdef RWS_DEBUG
|
|
#define ERRMSG(x,y) { printf(y " failed - rc= %d\n", (int)x); }
|
|
|
|
#define ERRBREAK(x,y) if (x) { ERRMSG(x,y); break; }
|
|
|
|
#define ERRPRINTF(x,y) { printf(y "\n", x); }
|
|
#else
|
|
#define ERRMSG(x,y) ;
|
|
|
|
#define ERRBREAK(x,y) if (x) break;
|
|
|
|
#define ERRPRINTF(x,y) ;
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------
|
|
// function prototypes
|
|
//------------------------------------------------------------------------
|
|
|
|
static nsresult IsDescendedFrom(PRUint32 wpsFilePtr, const char *pszClassname);
|
|
static nsresult CreateFileForExtension(const char *aFileExt, nsACString& aPath);
|
|
static nsresult DeleteFileForExtension(const char *aPath);
|
|
static void AssignNLSString(const PRUnichar *aKey, nsAString& _retval);
|
|
static nsresult AssignTitleString(const char *aTitle, nsAString& result);
|
|
|
|
//------------------------------------------------------------------------
|
|
// module-level variables - not declared as members of nsRws
|
|
//------------------------------------------------------------------------
|
|
|
|
static nsRwsService *sRwsInstance = 0; // our singleton instance
|
|
static bool sInit = FALSE; // have we tried to load RWS
|
|
|
|
// RWS administrative functions
|
|
static ULONG (* _System sRwsClientInit)(BOOL);
|
|
static ULONG (* _System sRwsGetTimeout)(PULONG, PULONG);
|
|
static ULONG (* _System sRwsSetTimeout)(ULONG);
|
|
static ULONG (* _System sRwsClientTerminate)(void);
|
|
|
|
// RWS task-oriented functions
|
|
static ULONG (* _System sRwsCall)(PRWSHDR*, ULONG, ULONG, ULONG, ULONG, ULONG, ...);
|
|
static ULONG (* _System sRwsCallIndirect)(PRWSBLD);
|
|
static ULONG (* _System sRwsFreeMem)(PRWSHDR);
|
|
static ULONG (* _System sRwsGetResult)(PRWSHDR, ULONG, PULONG);
|
|
static ULONG (* _System sRwsGetArgPtr)(PRWSHDR, ULONG, PRWSDSC*);
|
|
|
|
//------------------------------------------------------------------------
|
|
// ExtCache - caches the default icons & handlers for file extensions
|
|
//------------------------------------------------------------------------
|
|
|
|
typedef struct _ExtInfo
|
|
{
|
|
char ext[8];
|
|
PRUint32 icon;
|
|
PRUint32 mini;
|
|
PRUint32 handler;
|
|
PRUnichar *title;
|
|
} ExtInfo;
|
|
|
|
#define kGrowBy 8
|
|
#define kMutexTimeout 500
|
|
|
|
class ExtCache
|
|
{
|
|
public:
|
|
ExtCache();
|
|
~ExtCache();
|
|
|
|
nsresult GetIcon(const char *aExt, bool aNeedMini, PRUint32 *oIcon);
|
|
nsresult SetIcon(const char *aExt, bool aIsMini, PRUint32 aIcon);
|
|
nsresult GetHandler(const char *aExt, PRUint32 *oHandle, nsAString& oTitle);
|
|
nsresult SetHandler(const char *aExt, PRUint32 aHandle, nsAString& aTitle);
|
|
void EmptyCache();
|
|
|
|
protected:
|
|
ExtInfo *FindExtension(const char *aExt, bool aSet = false);
|
|
|
|
PRUint32 mPid;
|
|
PRUint32 mMutex;
|
|
PRUint32 mCount;
|
|
PRUint32 mSize;
|
|
ExtInfo *mExtInfo;
|
|
};
|
|
|
|
//------------------------------------------------------------------------
|
|
// nsIRwsService implementation
|
|
//------------------------------------------------------------------------
|
|
|
|
NS_IMPL_ISUPPORTS2(nsRwsService, nsIRwsService, nsIObserver)
|
|
|
|
nsRwsService::nsRwsService()
|
|
{
|
|
mExtCache = new ExtCache();
|
|
if (!mExtCache)
|
|
ERRPRINTF("", "nsRwsService - unable to allocate mExtArray%s");
|
|
}
|
|
|
|
nsRwsService::~nsRwsService()
|
|
{
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// provides the default icon associated with a given extension; if the
|
|
// icon isn't in the cache, it creates a temp file with that extension,
|
|
// retrieves its icon, deletes the temp file, then caches the icon
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::IconFromExtension(const char *aExt, bool aNeedMini,
|
|
PRUint32 *_retval)
|
|
{
|
|
if (!aExt || !*aExt || !_retval)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
nsresult rv = mExtCache->GetIcon(aExt, aNeedMini, _retval);
|
|
if (NS_SUCCEEDED(rv))
|
|
return rv;
|
|
|
|
nsCAutoString path;
|
|
rv = CreateFileForExtension(aExt, path);
|
|
if (NS_SUCCEEDED(rv)) {
|
|
rv = IconFromPath(path.get(), false, aNeedMini, _retval);
|
|
DeleteFileForExtension(path.get());
|
|
if (NS_SUCCEEDED(rv))
|
|
mExtCache->SetIcon(aExt, aNeedMini, *_retval);
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// retrieves an object's icon using its fully-qualified path; aAbstract
|
|
// indicates whether this is a Filesystem object or an Abstract or
|
|
// Transient object; locating non-file objects is fairly expensive
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::IconFromPath(const char *aPath, bool aAbstract,
|
|
bool aNeedMini, PRUint32 *_retval)
|
|
{
|
|
if (!aPath || !*aPath || !_retval)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
PRUint32 rwsType;
|
|
|
|
if (aAbstract)
|
|
rwsType = (aNeedMini ? RWSC_OFTITLE_OMINI : RWSC_OFTITLE_OICON);
|
|
else
|
|
rwsType = (aNeedMini ? RWSC_OPATH_OMINI : RWSC_OPATH_OICON);
|
|
|
|
return RwsConvert(rwsType, (PRUint32)aPath, _retval);
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// retrieve's an object's icon using its persistent handle
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::IconFromHandle(PRUint32 aHandle, bool aNeedMini,
|
|
PRUint32 *_retval)
|
|
{
|
|
if (!aHandle || !_retval)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
return RwsConvert( (aNeedMini ? RWSC_OHNDL_OMINI : RWSC_OHNDL_OICON),
|
|
aHandle, _retval);
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// retrieve's an object's title using its persistent handle
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::TitleFromHandle(PRUint32 aHandle, nsAString& _retval)
|
|
{
|
|
if (!aHandle)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
return RwsConvert(RWSC_OHNDL_OTITLE, aHandle, _retval);
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// provides the default handler associated with a given extension; if the
|
|
// info isn't in the cache, it creates a temp file with that extension,
|
|
// retrieves the handler's title & possibly its object handle, deletes the
|
|
// temp file, then caches the info.
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::HandlerFromExtension(const char *aExt, PRUint32 *aHandle,
|
|
nsAString& _retval)
|
|
{
|
|
if (!aExt || !*aExt || !aHandle)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
nsresult rv = mExtCache->GetHandler(aExt, aHandle, _retval);
|
|
if (NS_SUCCEEDED(rv))
|
|
return rv;
|
|
|
|
nsCAutoString path;
|
|
rv = CreateFileForExtension(aExt, path);
|
|
if (NS_SUCCEEDED(rv)) {
|
|
rv = HandlerFromPath(path.get(), aHandle, _retval);
|
|
DeleteFileForExtension(path.get());
|
|
if (NS_SUCCEEDED(rv))
|
|
mExtCache->SetHandler(aExt, *aHandle, _retval);
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// identifies the default WPS handler for a given file; if the handler
|
|
// is an associated program, returns its title & object handle; if the
|
|
// handler is an integrated class viewer or player, it constructs a title
|
|
// and sets the object handle to zero
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::HandlerFromPath(const char *aPath, PRUint32 *aHandle,
|
|
nsAString& _retval)
|
|
{
|
|
if (!aPath || !*aPath || !aHandle)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
PRWSHDR pHdr = 0;
|
|
PRUint32 rc;
|
|
|
|
_retval.Truncate();
|
|
*aHandle = 0;
|
|
|
|
// this dummy do{...}while(0) loop lets us bail out early
|
|
// while ensuring pHdr gets freed
|
|
do {
|
|
// get the default view for this file
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_MNAM, (ULONG)"wpQueryDefaultView",
|
|
RWSR_ASIS, 0, 1,
|
|
RWSI_OPATH, 0, (ULONG)aPath);
|
|
ERRBREAK(rc, "wpQueryDefaultView")
|
|
|
|
PRUint32 defView = sRwsGetResult(pHdr, 0, 0);
|
|
if (defView == (PRUint32)-1)
|
|
break;
|
|
|
|
// if the default view is OPEN_SETTINGS ('2'),
|
|
// change it to OPEN_RUNNING ('4')
|
|
if (defView == 2)
|
|
defView = 4;
|
|
|
|
// to improve efficiency, retrieve & reuse the file's wpObject
|
|
// ptr rather than repeatedly converting the name to an object
|
|
PRUint32 wpsFilePtr = sRwsGetResult(pHdr, 1, 0);
|
|
|
|
// free pHdr before the next call
|
|
sRwsFreeMem(pHdr);
|
|
pHdr = 0;
|
|
|
|
// for default view values less than OPEN_USER, see if there
|
|
// is a program or program object associated with this file
|
|
if (defView < 0x6500) {
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_MNAM, (ULONG)"wpQueryAssociatedProgram",
|
|
RWSR_OHNDL, 0, 6,
|
|
RWSI_ASIS, 0, wpsFilePtr,
|
|
RWSI_ASIS, 0, defView,
|
|
RWSI_PULONG, 0, 0,
|
|
RWSI_PBUF, 32, 0,
|
|
RWSI_ASIS, 0, 32,
|
|
RWSI_ASIS, 0, (ULONG)-1);
|
|
|
|
// if there's no associated program, create dummy values
|
|
// (if chosen, the WPS will open the file's Properties notebook)
|
|
if (rc) {
|
|
if (rc == RWSSRV_FUNCTIONFAILED) {
|
|
*aHandle = 0;
|
|
AssignNLSString(NS_LITERAL_STRING("wpsDefaultOS2").get(), _retval);
|
|
rv = NS_OK;
|
|
}
|
|
else
|
|
ERRMSG(rc, "wpQueryAssociatedProgram")
|
|
break;
|
|
}
|
|
|
|
// get a ptr to the return value's data structure; then get
|
|
// both the object handle we requested & the raw WPS object ptr
|
|
PRWSDSC pRtn;
|
|
rc = sRwsGetArgPtr(pHdr, 0, &pRtn);
|
|
ERRBREAK(rc, "GetArgPtr")
|
|
*aHandle = *((PRUint32*)pRtn->pget);
|
|
PRUint32 wpsPgmPtr = pRtn->value;
|
|
|
|
// free pHdr before the next call
|
|
sRwsFreeMem(pHdr);
|
|
pHdr = 0;
|
|
|
|
// convert the object to its title (using Rws' conversion
|
|
// feature is more efficient than calling wpQueryTitle)
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_CONV, 0,
|
|
RWSR_ASIS, 0, 1,
|
|
RWSC_OBJ_OTITLE, 0, wpsPgmPtr);
|
|
ERRBREAK(rc, "convert pgm object to title")
|
|
|
|
// retrieve the title, massage it & assign to _retval, then exit
|
|
// N.B. no need to free pHdr here, it will be freed below
|
|
char *pszTitle = (char*)sRwsGetResult(pHdr, 1, 0);
|
|
if (pszTitle != (char*)-1)
|
|
rv = AssignTitleString(pszTitle, _retval);
|
|
|
|
break;
|
|
}
|
|
|
|
// the default view is provided by the file's WPS class;
|
|
// in this case, *aHandle is 0
|
|
|
|
// see if it's a known view that can be given a meaningful name
|
|
switch (defView) {
|
|
case 0xbc2b: {
|
|
rv = IsDescendedFrom(wpsFilePtr, "MMImage");
|
|
if (NS_SUCCEEDED(rv))
|
|
AssignNLSString(NS_LITERAL_STRING("mmImageViewerOS2").get(), _retval);
|
|
break;
|
|
}
|
|
|
|
case 0xbc0d: // Audio editor
|
|
case 0xbc21: // Video editor
|
|
case 0xbc17: // Midi editor
|
|
case 0xbbef: // Play
|
|
case 0xbbe5: { // Player
|
|
rv = IsDescendedFrom(wpsFilePtr, "MMAudio");
|
|
if (NS_SUCCEEDED(rv)) {
|
|
AssignNLSString(NS_LITERAL_STRING("mmAudioPlayerOS2").get(), _retval);
|
|
break;
|
|
}
|
|
|
|
rv = IsDescendedFrom(wpsFilePtr, "MMVideo");
|
|
if (NS_SUCCEEDED(rv)) {
|
|
AssignNLSString(NS_LITERAL_STRING("mmVideoPlayerOS2").get(), _retval);
|
|
break;
|
|
}
|
|
|
|
rv = IsDescendedFrom(wpsFilePtr, "MMMIDI");
|
|
if (NS_SUCCEEDED(rv))
|
|
AssignNLSString(NS_LITERAL_STRING("mmMidiPlayerOS2").get(), _retval);
|
|
|
|
break;
|
|
}
|
|
|
|
case 0x7701: {
|
|
rv = IsDescendedFrom(wpsFilePtr, "TSArcMgr");
|
|
if (NS_SUCCEEDED(rv))
|
|
AssignNLSString(NS_LITERAL_STRING("odZipFolderOS2").get(), _retval);
|
|
break;
|
|
}
|
|
|
|
// this has to go last because TSEnhDataFile replaces
|
|
// WPDataFile; if present, all data files are descended from it
|
|
case 0xb742:
|
|
case 0xa742: {
|
|
rv = IsDescendedFrom(wpsFilePtr, "TSEnhDataFile");
|
|
if (NS_SUCCEEDED(rv))
|
|
AssignNLSString(NS_LITERAL_STRING("odTextViewOS2").get(), _retval);
|
|
break;
|
|
}
|
|
} // end switch
|
|
|
|
if (NS_SUCCEEDED(rv))
|
|
break;
|
|
|
|
// the name of this view is unknown, so create a generic name
|
|
// (i.e. "Viewer for Class WPSomething")
|
|
|
|
// use the file's object ptr to get the name of its class
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_CONV, 0,
|
|
RWSR_ASIS, 0, 1,
|
|
RWSC_OBJ_CNAME, 0, wpsFilePtr);
|
|
ERRBREAK(rc, "convert object to classname")
|
|
|
|
char *pszTitle = (char*)sRwsGetResult(pHdr, 1, 0);
|
|
if (pszTitle == (char*)-1)
|
|
break;
|
|
|
|
nsAutoChar16Buffer buffer;
|
|
PRInt32 bufLength;
|
|
rv = MultiByteToWideChar(0, pszTitle, strlen(pszTitle),
|
|
buffer, bufLength);
|
|
if (NS_FAILED(rv))
|
|
break;
|
|
|
|
nsAutoString classViewer;
|
|
AssignNLSString(NS_LITERAL_STRING("classViewerOS2").get(), classViewer);
|
|
int pos = -1;
|
|
if ((pos = classViewer.Find("%S")) > -1)
|
|
classViewer.Replace(pos, 2, buffer.Elements());
|
|
_retval.Assign(classViewer);
|
|
rv = NS_OK;
|
|
} while (0);
|
|
|
|
// free the pHdr allocated by the final call
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// retrieves an object's menu using its fully-qualified path; aAbstract
|
|
// indicates whether this is a Filesystem object or an Abstract or
|
|
// Transient object; locating non-file objects is fairly expensive
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::MenuFromPath(const char *aPath, bool aAbstract)
|
|
{
|
|
if (!aPath || !*aPath)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
PRWSHDR pHdr = 0;
|
|
PRUint32 type = (aAbstract ? RWSI_OFTITLE : RWSI_OPATH);
|
|
PRUint32 rc;
|
|
POINTL ptl;
|
|
HWND hTgt = 0;
|
|
|
|
// try to identify the window where the click occurred
|
|
if (WinQueryMsgPos(0, &ptl)) {
|
|
hTgt = WinQueryFocus(HWND_DESKTOP);
|
|
if (hTgt)
|
|
WinMapWindowPoints(HWND_DESKTOP, hTgt, &ptl, 1);
|
|
}
|
|
|
|
// if we have the window & coordinates, use them; otherwise,
|
|
// let RWS position the menu at the current pointer position
|
|
// (specifying the window ensures the focus will return to it)
|
|
if (hTgt)
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_CMD, RWSCMD_POPUPMENU,
|
|
RWSR_ASIS, 0, 3,
|
|
type, 0, (ULONG)aPath,
|
|
RWSI_ASIS, 0, hTgt,
|
|
RWSI_PBUF, sizeof(POINTL), (ULONG)&ptl);
|
|
else
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_CMD, RWSCMD_POPUPMENU,
|
|
RWSR_ASIS, 0, 3,
|
|
type, 0, (ULONG)aPath,
|
|
RWSI_ASIS, 0, 0,
|
|
RWSI_ASIS, 0, 0);
|
|
|
|
if (rc)
|
|
ERRMSG(rc, "RWSCMD_POPUPMENU")
|
|
else
|
|
rv = NS_OK;
|
|
|
|
// free pHdr
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// causes the WPS to open a file using the program specified by AppPath;
|
|
// this is identical to dropping the file on the program's WPS icon
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::OpenWithAppHandle(const char *aFilePath, PRUint32 aAppHandle)
|
|
{
|
|
if (!aFilePath || !*aFilePath || !aAppHandle)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
PRWSHDR pHdr = 0;
|
|
PRUint32 rc;
|
|
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_CMD, RWSCMD_OPENUSING,
|
|
RWSR_ASIS, 0, 2,
|
|
RWSI_OPATH, 0, aFilePath,
|
|
RWSI_OHNDL, 0, aAppHandle);
|
|
if (rc)
|
|
ERRMSG(rc, "RWSCMD_OPENUSING")
|
|
else
|
|
rv = NS_OK;
|
|
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// causes the WPS to open a file using the program specified by AppPath;
|
|
// this is identical to dropping the file on the program's WPS icon
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::OpenWithAppPath(const char *aFilePath, const char *aAppPath)
|
|
{
|
|
if (!aFilePath || !*aFilePath || !aAppPath || !*aAppPath)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
PRWSHDR pHdr = 0;
|
|
PRUint32 rc;
|
|
|
|
rc = sRwsCall(&pHdr,
|
|
RWSP_CMD, RWSCMD_OPENUSING,
|
|
RWSR_ASIS, 0, 2,
|
|
RWSI_OPATH, 0, aFilePath,
|
|
RWSI_OPATH, 0, aAppPath);
|
|
if (rc)
|
|
ERRMSG(rc, "RWSCMD_OPENUSING")
|
|
else
|
|
rv = NS_OK;
|
|
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
// nsRwsService additional methods
|
|
//------------------------------------------------------------------------
|
|
|
|
// uses RwsConvert to retrieve a result that can be handled as a ULONG;
|
|
// type identifies the conversion, value can be anything (ULONG, char*, etc)
|
|
|
|
//static
|
|
nsresult
|
|
nsRwsService::RwsConvert(PRUint32 type, PRUint32 value, PRUint32 *result)
|
|
{
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
PRWSHDR pHdr = 0;
|
|
|
|
*result = 0;
|
|
PRUint32 rc = sRwsCall(&pHdr,
|
|
RWSP_CONV, 0,
|
|
RWSR_ASIS, 0, 1,
|
|
type, 0, value);
|
|
|
|
if (rc)
|
|
ERRMSG(rc, "RwsConvert to ULONG")
|
|
else {
|
|
*result = sRwsGetResult(pHdr, 1, 0);
|
|
if (*result == (PRUint32)-1)
|
|
*result = 0;
|
|
else
|
|
rv = NS_OK;
|
|
}
|
|
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// uses RwsConvert to retrieve a result that can be handled as a
|
|
// Unicode string; type identifies the conversion, value can be
|
|
// anything (ULONG, char*, etc)
|
|
|
|
//static
|
|
nsresult
|
|
nsRwsService::RwsConvert(PRUint32 type, PRUint32 value, nsAString& result)
|
|
{
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
PRWSHDR pHdr = 0;
|
|
|
|
result.Truncate();
|
|
PRUint32 rc = sRwsCall(&pHdr,
|
|
RWSP_CONV, 0,
|
|
RWSR_ASIS, 0, 1,
|
|
type, 0, value);
|
|
|
|
if (rc)
|
|
ERRMSG(rc, "RwsConvert to string")
|
|
else {
|
|
char *string = (char*)sRwsGetResult(pHdr, 1, 0);
|
|
if (string != (char*)-1)
|
|
rv = AssignTitleString(string, result);
|
|
}
|
|
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
// nsIObserver implementation
|
|
//------------------------------------------------------------------------
|
|
|
|
// when the app shuts down, advise RwsClient; if this is the
|
|
// last app using RwsServer, the WPS will unload the class's dll;
|
|
// also, empty the extension cache to unlock & delete its icons
|
|
|
|
NS_IMETHODIMP
|
|
nsRwsService::Observe(nsISupports *aSubject, const char *aTopic,
|
|
const PRUnichar *aSomeData)
|
|
{
|
|
if (strcmp(aTopic, "quit-application") == 0) {
|
|
PRUint32 rc = sRwsClientTerminate();
|
|
if (rc)
|
|
ERRMSG(rc, "RwsClientTerminate");
|
|
|
|
if (mExtCache)
|
|
mExtCache->EmptyCache();
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
// nsRwsService static helper functions
|
|
//------------------------------------------------------------------------
|
|
|
|
// this wrapper for somIsA() makes HandlerFromPath() easier to read
|
|
|
|
static nsresult IsDescendedFrom(PRUint32 wpsFilePtr, const char *pszClassname)
|
|
{
|
|
PRWSHDR pHdr = 0;
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
|
|
PRUint32 rc = sRwsCall(&pHdr,
|
|
RWSP_MNAMI, (ULONG)"somIsA",
|
|
RWSR_ASIS, 0, 2,
|
|
RWSI_ASIS, 0, wpsFilePtr,
|
|
RWSI_CNAME, 0, pszClassname);
|
|
|
|
if (rc)
|
|
ERRMSG(rc, "somIsA")
|
|
else
|
|
if (sRwsGetResult(pHdr, 0, 0) == TRUE)
|
|
rv = NS_OK;
|
|
|
|
sRwsFreeMem(pHdr);
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// create a temp file with the specified extension, then return its path
|
|
|
|
static nsresult CreateFileForExtension(const char *aFileExt,
|
|
nsACString& aPath)
|
|
{
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
aPath.Truncate();
|
|
|
|
nsCOMPtr<nsIFile> tempFile;
|
|
rv = NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(tempFile));
|
|
if (NS_FAILED(rv))
|
|
return rv;
|
|
|
|
nsCAutoString pathStr(NS_LITERAL_CSTRING("nsrws."));
|
|
if (*aFileExt == '.')
|
|
aFileExt++;
|
|
pathStr.Append(aFileExt);
|
|
|
|
rv = tempFile->AppendNative(pathStr);
|
|
if (NS_FAILED(rv))
|
|
return rv;
|
|
|
|
tempFile->GetNativePath(pathStr);
|
|
|
|
FILE *fp = fopen(pathStr.get(), "wb+");
|
|
if (fp) {
|
|
fclose(fp);
|
|
aPath.Assign(pathStr);
|
|
rv = NS_OK;
|
|
}
|
|
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// delete a temp file created earlier
|
|
|
|
static nsresult DeleteFileForExtension(const char *aPath)
|
|
{
|
|
if (!aPath || !*aPath)
|
|
return NS_ERROR_INVALID_ARG;
|
|
|
|
remove(aPath);
|
|
return NS_OK;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// returns a localized string from unknownContentType.properties;
|
|
// if there's a failure, returns "WPS Default"
|
|
|
|
static void AssignNLSString(const PRUnichar *aKey, nsAString& result)
|
|
{
|
|
nsresult rv;
|
|
nsXPIDLString title;
|
|
|
|
do {
|
|
nsCOMPtr<nsIStringBundleService> bundleSvc =
|
|
mozilla::services::GetStringBundleService();
|
|
if (!bundleSvc)
|
|
break;
|
|
|
|
nsCOMPtr<nsIStringBundle> bundle;
|
|
rv = bundleSvc->CreateBundle(
|
|
"chrome://mozapps/locale/downloads/unknownContentType.properties",
|
|
getter_AddRefs(bundle));
|
|
if (NS_FAILED(rv))
|
|
break;
|
|
|
|
// if we can't fetch the requested string, try to get "WPS Default"
|
|
rv = bundle->GetStringFromName(aKey, getter_Copies(title));
|
|
if (NS_FAILED(rv))
|
|
rv = bundle->GetStringFromName(NS_LITERAL_STRING("wpsDefaultOS2").get(),
|
|
getter_Copies(title));
|
|
} while (0);
|
|
|
|
if (NS_SUCCEEDED(rv))
|
|
result.Assign(title);
|
|
else
|
|
result.Assign(NS_LITERAL_STRING("WPS Default"));
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// converts a native string (presumably a WPS object's title) to
|
|
// Unicode, removes line breaks, and compresses whitespace
|
|
|
|
static nsresult AssignTitleString(const char *aTitle, nsAString& result)
|
|
{
|
|
nsAutoChar16Buffer buffer;
|
|
PRInt32 bufLength;
|
|
|
|
// convert the title to Unicode
|
|
if (NS_FAILED(MultiByteToWideChar(0, aTitle, strlen(aTitle),
|
|
buffer, bufLength)))
|
|
return NS_ERROR_FAILURE;
|
|
|
|
PRUnichar *pSrc;
|
|
PRUnichar *pDst;
|
|
bool fSkip;
|
|
|
|
// remove line breaks, leading whitespace, & extra embedded whitespace
|
|
// (primitive, but gcc 3.2.2 doesn't support wchar)
|
|
for (fSkip=true, pSrc=pDst=buffer.Elements(); *pSrc; pSrc++) {
|
|
if (*pSrc == ' ' || *pSrc == '\r' || *pSrc == '\n' || *pSrc == '\t') {
|
|
if (!fSkip)
|
|
*pDst++ = ' ';
|
|
fSkip = true;
|
|
}
|
|
else {
|
|
if (pDst != pSrc)
|
|
*pDst = *pSrc;
|
|
pDst++;
|
|
fSkip = false;
|
|
}
|
|
}
|
|
|
|
// remove the single trailing space, if needed
|
|
if (fSkip && pDst > buffer.Elements())
|
|
pDst--;
|
|
|
|
*pDst = 0;
|
|
result.Assign(buffer.Elements());
|
|
return NS_OK;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
// ExtCache implementation
|
|
//------------------------------------------------------------------------
|
|
|
|
ExtCache::ExtCache() : mCount(0), mSize(0), mExtInfo(0)
|
|
{
|
|
PTIB ptib;
|
|
PPIB ppib;
|
|
|
|
// the PID is needed to lock/unlock icons
|
|
DosGetInfoBlocks(&ptib, &ppib);
|
|
mPid = ppib->pib_ulpid;
|
|
|
|
PRUint32 rc = DosCreateMutexSem(0, (PHMTX)&mMutex, 0, 0);
|
|
if (rc)
|
|
ERRMSG(rc, "DosCreateMutexSem")
|
|
}
|
|
|
|
ExtCache::~ExtCache() {}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// retrieve the WPS's default icon for files with this extension
|
|
|
|
nsresult ExtCache::GetIcon(const char *aExt, bool aNeedMini,
|
|
PRUint32 *oIcon)
|
|
{
|
|
PRUint32 rc = DosRequestMutexSem(mMutex, kMutexTimeout);
|
|
if (rc) {
|
|
ERRMSG(rc, "DosRequestMutexSem")
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
ExtInfo *info = FindExtension(aExt);
|
|
|
|
if (info) {
|
|
if (aNeedMini)
|
|
*oIcon = info->mini;
|
|
else
|
|
*oIcon = info->icon;
|
|
}
|
|
else
|
|
*oIcon = 0;
|
|
|
|
rc = DosReleaseMutexSem(mMutex);
|
|
if (rc)
|
|
ERRMSG(rc, "DosReleaseMutexSem")
|
|
|
|
return (*oIcon ? NS_OK : NS_ERROR_FAILURE);
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// save the WPS's default icon for files with this extension
|
|
|
|
nsresult ExtCache::SetIcon(const char *aExt, bool aIsMini,
|
|
PRUint32 aIcon)
|
|
{
|
|
PRUint32 rc = DosRequestMutexSem(mMutex, kMutexTimeout);
|
|
if (rc) {
|
|
ERRMSG(rc, "DosRequestMutexSem")
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
ExtInfo *info = FindExtension(aExt, true);
|
|
if (!info)
|
|
return NS_ERROR_FAILURE;
|
|
|
|
// the icon has to be made non-deletable or else
|
|
// it will be destroyed if the WPS terminates
|
|
if (!WinSetPointerOwner(aIcon, mPid, FALSE)) {
|
|
ERRPRINTF(info->ext, "WinSetPointerOwner failed for %s icon")
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
if (aIsMini)
|
|
info->mini = aIcon;
|
|
else
|
|
info->icon = aIcon;
|
|
|
|
ERRPRINTF(info->ext, "ExtCache - added icon for %s")
|
|
|
|
rc = DosReleaseMutexSem(mMutex);
|
|
if (rc)
|
|
ERRMSG(rc, "DosReleaseMutexSem")
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// retrieve the WPS default handler's title & object handle (if any)
|
|
|
|
nsresult ExtCache::GetHandler(const char *aExt, PRUint32 *oHandle,
|
|
nsAString& oTitle)
|
|
{
|
|
PRUint32 rc = DosRequestMutexSem(mMutex, kMutexTimeout);
|
|
if (rc) {
|
|
ERRMSG(rc, "DosRequestMutexSem")
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
ExtInfo *info = FindExtension(aExt);
|
|
|
|
// if there's no title, the handle isn't useful
|
|
if (info && info->title) {
|
|
oTitle.Assign(info->title);
|
|
*oHandle = info->handler;
|
|
rv = NS_OK;
|
|
}
|
|
|
|
rc = DosReleaseMutexSem(mMutex);
|
|
if (rc)
|
|
ERRMSG(rc, "DosReleaseMutexSem")
|
|
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// save the WPS default handler's title & object handle (if any)
|
|
|
|
nsresult ExtCache::SetHandler(const char *aExt, PRUint32 aHandle,
|
|
nsAString& aTitle)
|
|
{
|
|
PRUint32 rc = DosRequestMutexSem(mMutex, kMutexTimeout);
|
|
if (rc) {
|
|
ERRMSG(rc, "DosRequestMutexSem")
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
nsresult rv = NS_ERROR_FAILURE;
|
|
ExtInfo *info = FindExtension(aExt, true);
|
|
|
|
// if the title can't be saved, don't save the handle
|
|
if (info) {
|
|
info->title = ToNewUnicode(aTitle);
|
|
if (info->title) {
|
|
info->handler = aHandle;
|
|
rv = NS_OK;
|
|
ERRPRINTF(info->ext, "ExtCache - added handler for %s")
|
|
}
|
|
}
|
|
|
|
rc = DosReleaseMutexSem(mMutex);
|
|
if (rc)
|
|
ERRMSG(rc, "DosReleaseMutexSem")
|
|
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// find the entry for the requested extension; if not found,
|
|
// create a new entry, expanding the array as needed
|
|
|
|
ExtInfo *ExtCache::FindExtension(const char *aExt, bool aSet)
|
|
{
|
|
// eliminate any leading dot & null extensions
|
|
if (*aExt == '.')
|
|
aExt++;
|
|
if (*aExt == 0)
|
|
return 0;
|
|
|
|
// too long to cache
|
|
if (strlen(aExt) >= 8)
|
|
return 0;
|
|
|
|
// uppercase extension, then confirm it still fits
|
|
char extUpper[16];
|
|
strcpy(extUpper, aExt);
|
|
// XXX WinUpper() can crash with high-memory
|
|
// could we just store as-is and instead use stricmp() for
|
|
// compare operations?
|
|
if (WinUpper(0, 0, 0, extUpper) >= 8)
|
|
return 0;
|
|
|
|
// a minor optimization: if we're setting a value, it probably
|
|
// belongs to the entry added most recently (i.e. the last one)
|
|
if (aSet && mCount && !strcmp(extUpper, (&mExtInfo[mCount-1])->ext))
|
|
return &mExtInfo[mCount-1];
|
|
|
|
ExtInfo *info;
|
|
PRUint32 ctr;
|
|
|
|
// look for the extension in the array, return if found
|
|
for (ctr = 0, info = mExtInfo; ctr < mCount; ctr++, info++)
|
|
if (!strcmp(extUpper, info->ext))
|
|
return info;
|
|
|
|
// if a new entry won't fit into the current array, realloc
|
|
if (mCount >= mSize) {
|
|
PRUint32 newSize = mSize + kGrowBy;
|
|
info = (ExtInfo*) NS_Realloc(mExtInfo, newSize * sizeof(ExtInfo));
|
|
if (!info)
|
|
return 0;
|
|
|
|
memset(&info[mSize], 0, kGrowBy * sizeof(ExtInfo));
|
|
mExtInfo = info;
|
|
mSize = newSize;
|
|
}
|
|
|
|
// point at the next entry & store the extension
|
|
info = &mExtInfo[mCount++];
|
|
strcpy(info->ext, extUpper);
|
|
|
|
return info;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// clear out the cache - since this is only called at shutdown,
|
|
// the primary concern is that the icons get unlocked & deleted
|
|
|
|
void ExtCache::EmptyCache()
|
|
{
|
|
if (!mExtInfo)
|
|
return;
|
|
|
|
PRUint32 rc = DosRequestMutexSem(mMutex, kMutexTimeout);
|
|
if (rc) {
|
|
ERRMSG(rc, "DosRequestMutexSem")
|
|
return;
|
|
}
|
|
|
|
PRUint32 saveMutex = mMutex;
|
|
mMutex = 0;
|
|
|
|
PRUint32 ctr;
|
|
ExtInfo *info;
|
|
|
|
for (ctr = 0, info = mExtInfo; ctr < mCount; ctr++, info++) {
|
|
|
|
ERRPRINTF(info->ext, "ExtCache - deleting entry for %s")
|
|
|
|
if (info->icon) {
|
|
if (WinSetPointerOwner(info->icon, mPid, TRUE) == FALSE ||
|
|
WinDestroyPointer(info->icon) == FALSE)
|
|
ERRPRINTF(info->ext, "unable to destroy icon for %s")
|
|
}
|
|
|
|
if (info->mini) {
|
|
if (WinSetPointerOwner(info->mini, mPid, TRUE) == FALSE ||
|
|
WinDestroyPointer(info->mini) == FALSE)
|
|
ERRPRINTF(info->ext, "unable to destroy mini for %s")
|
|
}
|
|
|
|
if (info->title)
|
|
NS_Free(info->title);
|
|
}
|
|
|
|
mCount = 0;
|
|
mSize = 0;
|
|
NS_Free(mExtInfo);
|
|
mExtInfo = 0;
|
|
|
|
rc = DosReleaseMutexSem(saveMutex);
|
|
if (rc)
|
|
ERRMSG(rc, "DosReleaseMutexSem")
|
|
rc = DosCloseMutexSem(saveMutex);
|
|
if (rc)
|
|
ERRMSG(rc, "DosCloseMutexSem")
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
// Module & Factory stuff
|
|
//------------------------------------------------------------------------
|
|
|
|
// this is the "getter proc" for nsRwsServiceConstructor(); it makes a
|
|
// single attempt to load the RWS libraries and, if successful, creates
|
|
// our singleton object; thereafter, it returns the existing object or
|
|
// NS_ERROR_NOT_AVAILABLE
|
|
|
|
static nsresult nsRwsServiceInit(nsRwsService **aClass)
|
|
{
|
|
// init already done - return what we've got or an error
|
|
if (sInit) {
|
|
*aClass = sRwsInstance;
|
|
if (*aClass == 0)
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
|
|
NS_ADDREF(*aClass);
|
|
return NS_OK;
|
|
}
|
|
|
|
sInit = TRUE;
|
|
*aClass = 0;
|
|
|
|
// don't load RWS if "MOZ_NO_RWS" is found in the environment
|
|
if (PR_GetEnv("MOZ_NO_RWS"))
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
|
|
char errBuf[16];
|
|
HMODULE hmod;
|
|
|
|
// try to load RwsCliXX.dll; first, see if the RWS WPS class is
|
|
// registered by f/q name - if so, look for RwsCli in the same
|
|
// directory; the goal is to consistently use the same pair of
|
|
// dlls if the user has multiple copies
|
|
|
|
PRUint32 rc = 1;
|
|
|
|
// get the list of registered WPS classes
|
|
ULONG cbClass;
|
|
if (!WinEnumObjectClasses(NULL, &cbClass))
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
|
|
char *pBuf = (char*)NS_Alloc(cbClass + CCHMAXPATH);
|
|
if (!pBuf)
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
POBJCLASS pClass = (POBJCLASS)&pBuf[CCHMAXPATH];
|
|
if (!WinEnumObjectClasses(pClass, &cbClass)) {
|
|
NS_Free(pBuf);
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
}
|
|
|
|
// look for RWSxx
|
|
while (pClass) {
|
|
if (!strcmp(pClass->pszClassName, RWSCLASSNAME))
|
|
break;
|
|
pClass = pClass->pNext;
|
|
}
|
|
|
|
// if the class was found & it was registered with a f/q name,
|
|
// try to load RwsCliXX from the same directory
|
|
if (pClass && pClass->pszModName[1] == ':') {
|
|
strcpy(pBuf, pClass->pszModName);
|
|
char *ptr = strrchr(pBuf, '\\');
|
|
if (ptr) {
|
|
strcpy(ptr+1, RWSCLIDLL);
|
|
rc = DosLoadModule(errBuf, sizeof(errBuf), pBuf, &hmod);
|
|
}
|
|
}
|
|
NS_Free(pBuf);
|
|
|
|
// if RwsCli couldn't be found, look for it on the LIBPATH
|
|
if (rc)
|
|
rc = DosLoadModule(errBuf, sizeof(errBuf), RWSCLIMOD, &hmod);
|
|
|
|
// the dll couldn't be found, so exit
|
|
if (rc) {
|
|
ERRPRINTF(RWSCLIDLL, "nsRwsServiceInit - unable to locate %s");
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
}
|
|
|
|
// get the addresses of the procs we'll be using;
|
|
if (DosQueryProcAddr(hmod, ORD_RWSCALL, 0, (PFN*)&sRwsCall) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSCALLINDIRECT,0, (PFN*)&sRwsCallIndirect) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSFREEMEM, 0, (PFN*)&sRwsFreeMem) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSGETRESULT, 0, (PFN*)&sRwsGetResult) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSGETARGPTR, 0, (PFN*)&sRwsGetArgPtr) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSCLIENTINIT, 0, (PFN*)&sRwsClientInit) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSGETTIMEOUT, 0, (PFN*)&sRwsGetTimeout) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSSETTIMEOUT, 0, (PFN*)&sRwsSetTimeout) ||
|
|
DosQueryProcAddr(hmod, ORD_RWSCLIENTTERMINATE, 0, (PFN*)&sRwsClientTerminate)) {
|
|
DosFreeModule(hmod);
|
|
ERRPRINTF("", "nsRwsServiceInit - DosQueryProcAddr failed%s")
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
}
|
|
|
|
// init RWS and have it register the WPS class if needed
|
|
rc = sRwsClientInit(TRUE);
|
|
if (rc) {
|
|
ERRMSG(rc, "RwsClientInit")
|
|
return NS_ERROR_NOT_AVAILABLE;
|
|
}
|
|
|
|
// if the user hasn't set a timeout, reset it to 2 seconds
|
|
// (the default is 20 seconds)
|
|
PRUint32 currentTO;
|
|
PRUint32 userTO;
|
|
rc = sRwsGetTimeout((PULONG)¤tTO, (PULONG)&userTO);
|
|
if (rc)
|
|
ERRMSG(rc, "RwsGetTimeout")
|
|
else
|
|
if (userTO == 0) {
|
|
rc = sRwsSetTimeout(2);
|
|
if (rc)
|
|
ERRMSG(rc, "RwsSetTimeout")
|
|
}
|
|
|
|
// create an instance of nsRwsService
|
|
sRwsInstance = new nsRwsService();
|
|
if (sRwsInstance == 0)
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
*aClass = sRwsInstance;
|
|
NS_ADDREF(*aClass);
|
|
|
|
// set the class up as a shutdown observer
|
|
nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
|
|
if (os)
|
|
os->AddObserver(*aClass, "quit-application", false);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
// this is a variation on NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR();
|
|
// the only difference is that the _GetterProc returns an nsresult to
|
|
// provide a more appropriate error code (typically NS_ERROR_NOT_AVAILABLE)
|
|
|
|
NS_IMETHODIMP nsRwsServiceConstructor(nsISupports *aOuter, REFNSIID aIID,
|
|
void **aResult)
|
|
{
|
|
nsresult rv;
|
|
nsRwsService *inst;
|
|
*aResult = NULL;
|
|
|
|
if (aOuter) {
|
|
rv = NS_ERROR_NO_AGGREGATION;
|
|
return rv;
|
|
}
|
|
|
|
rv = nsRwsServiceInit(&inst);
|
|
if (NS_FAILED(rv)) {
|
|
ERRPRINTF(rv, "==>> nsRwsServiceInit failed - rv= %x");
|
|
return rv;
|
|
}
|
|
|
|
rv = inst->QueryInterface(aIID, aResult);
|
|
NS_RELEASE(inst);
|
|
|
|
return rv;
|
|
}
|
|
|
|
//------------------------------------------------------------------------
|