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
1164 lines
34 KiB
C++
1164 lines
34 KiB
C++
/* ***** 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 Mozilla.
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* Netscape Communications Corporation.
|
|
* Portions created by the Initial Developer are Copyright (C) 2002
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
* Darin Fisher <darin@netscape.com>
|
|
* Brian Stell <bstell@ix.netcom.com>
|
|
* Frank Tang <ftang@netscape.com>
|
|
* Brendan Eich <brendan@mozilla.org>
|
|
* Sergei Dolgov <sergei_d@fi.fi.tartu.ee>
|
|
* Jungshik Shin <jshin@i18nl10n.com>
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
* either 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 "xpcom-private.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// XP_MACOSX or ANDROID
|
|
//-----------------------------------------------------------------------------
|
|
#if defined(XP_MACOSX) || defined(ANDROID)
|
|
|
|
#include "nsAString.h"
|
|
#include "nsReadableUtils.h"
|
|
#include "nsString.h"
|
|
|
|
nsresult
|
|
NS_CopyNativeToUnicode(const nsACString &input, nsAString &output)
|
|
{
|
|
CopyUTF8toUTF16(input, output);
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
NS_CopyUnicodeToNative(const nsAString &input, nsACString &output)
|
|
{
|
|
CopyUTF16toUTF8(input, output);
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
NS_StartupNativeCharsetUtils()
|
|
{
|
|
}
|
|
|
|
void
|
|
NS_ShutdownNativeCharsetUtils()
|
|
{
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// XP_UNIX
|
|
//-----------------------------------------------------------------------------
|
|
#elif defined(XP_UNIX)
|
|
|
|
#include <stdlib.h> // mbtowc, wctomb
|
|
#include <locale.h> // setlocale
|
|
#include "mozilla/Mutex.h"
|
|
#include "nscore.h"
|
|
#include "nsAString.h"
|
|
#include "nsReadableUtils.h"
|
|
|
|
using namespace mozilla;
|
|
|
|
//
|
|
// choose a conversion library. we used to use mbrtowc/wcrtomb under Linux,
|
|
// but that doesn't work for non-BMP characters whether we use '-fshort-wchar'
|
|
// or not (see bug 206811 and
|
|
// news://news.mozilla.org:119/bajml3$fvr1@ripley.netscape.com). we now use
|
|
// iconv for all platforms where nltypes.h and nllanginfo.h are present
|
|
// along with iconv.
|
|
//
|
|
#if defined(HAVE_ICONV) && defined(HAVE_NL_TYPES_H) && defined(HAVE_LANGINFO_CODESET)
|
|
#define USE_ICONV 1
|
|
#else
|
|
#define USE_STDCONV 1
|
|
#endif
|
|
|
|
static void
|
|
isolatin1_to_utf16(const char **input, PRUint32 *inputLeft, PRUnichar **output, PRUint32 *outputLeft)
|
|
{
|
|
while (*inputLeft && *outputLeft) {
|
|
**output = (unsigned char) **input;
|
|
(*input)++;
|
|
(*inputLeft)--;
|
|
(*output)++;
|
|
(*outputLeft)--;
|
|
}
|
|
}
|
|
|
|
static void
|
|
utf16_to_isolatin1(const PRUnichar **input, PRUint32 *inputLeft, char **output, PRUint32 *outputLeft)
|
|
{
|
|
while (*inputLeft && *outputLeft) {
|
|
**output = (unsigned char) **input;
|
|
(*input)++;
|
|
(*inputLeft)--;
|
|
(*output)++;
|
|
(*outputLeft)--;
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// conversion using iconv
|
|
//-----------------------------------------------------------------------------
|
|
#if defined(USE_ICONV)
|
|
#include <nl_types.h> // CODESET
|
|
#include <langinfo.h> // nl_langinfo
|
|
#include <iconv.h> // iconv_open, iconv, iconv_close
|
|
#include <errno.h>
|
|
#include "plstr.h"
|
|
|
|
#if defined(HAVE_ICONV_WITH_CONST_INPUT)
|
|
#define ICONV_INPUT(x) (x)
|
|
#else
|
|
#define ICONV_INPUT(x) ((char **)x)
|
|
#endif
|
|
|
|
// solaris definitely needs this, but we'll enable it by default
|
|
// just in case... but we know for sure that iconv(3) in glibc
|
|
// doesn't need this.
|
|
#if !defined(__GLIBC__)
|
|
#define ENABLE_UTF8_FALLBACK_SUPPORT
|
|
#endif
|
|
|
|
#define INVALID_ICONV_T ((iconv_t) -1)
|
|
|
|
static inline size_t
|
|
xp_iconv(iconv_t converter,
|
|
const char **input,
|
|
size_t *inputLeft,
|
|
char **output,
|
|
size_t *outputLeft)
|
|
{
|
|
size_t res, outputAvail = outputLeft ? *outputLeft : 0;
|
|
res = iconv(converter, ICONV_INPUT(input), inputLeft, output, outputLeft);
|
|
if (res == (size_t) -1) {
|
|
// on some platforms (e.g., linux) iconv will fail with
|
|
// E2BIG if it cannot convert _all_ of its input. it'll
|
|
// still adjust all of the in/out params correctly, so we
|
|
// can ignore this error. the assumption is that we will
|
|
// be called again to complete the conversion.
|
|
if ((errno == E2BIG) && (*outputLeft < outputAvail))
|
|
res = 0;
|
|
}
|
|
return res;
|
|
}
|
|
|
|
static inline void
|
|
xp_iconv_reset(iconv_t converter)
|
|
{
|
|
// NOTE: the man pages on Solaris claim that you can pass NULL
|
|
// for all parameter to reset the converter, but beware the
|
|
// evil Solaris crash if you go down this route >:-)
|
|
|
|
const char *zero_char_in_ptr = NULL;
|
|
char *zero_char_out_ptr = NULL;
|
|
size_t zero_size_in = 0,
|
|
zero_size_out = 0;
|
|
|
|
xp_iconv(converter, &zero_char_in_ptr,
|
|
&zero_size_in,
|
|
&zero_char_out_ptr,
|
|
&zero_size_out);
|
|
}
|
|
|
|
static inline iconv_t
|
|
xp_iconv_open(const char **to_list, const char **from_list)
|
|
{
|
|
iconv_t res;
|
|
const char **from_name;
|
|
const char **to_name;
|
|
|
|
// try all possible combinations to locate a converter.
|
|
to_name = to_list;
|
|
while (*to_name) {
|
|
if (**to_name) {
|
|
from_name = from_list;
|
|
while (*from_name) {
|
|
if (**from_name) {
|
|
res = iconv_open(*to_name, *from_name);
|
|
if (res != INVALID_ICONV_T)
|
|
return res;
|
|
}
|
|
from_name++;
|
|
}
|
|
}
|
|
to_name++;
|
|
}
|
|
|
|
return INVALID_ICONV_T;
|
|
}
|
|
|
|
/*
|
|
* PRUnichar[] is NOT a UCS-2 array BUT a UTF-16 string. Therefore, we
|
|
* have to use UTF-16 with iconv(3) on platforms where it's supported.
|
|
* However, the way UTF-16 and UCS-2 are interpreted varies across platforms
|
|
* and implementations of iconv(3). On Tru64, it also depends on the environment
|
|
* variable. To avoid the trouble arising from byte-swapping
|
|
* (bug 208809), we have to try UTF-16LE/BE and UCS-2LE/BE before falling
|
|
* back to UTF-16 and UCS-2 and variants. We assume that UTF-16 and UCS-2
|
|
* on systems without UTF-16LE/BE and UCS-2LE/BE have the native endianness,
|
|
* which isn't the case of glibc 2.1.x, for which we use 'UNICODELITTLE'
|
|
* and 'UNICODEBIG'. It's also not true of Tru64 V4 when the environment
|
|
* variable ICONV_BYTEORDER is set to 'big-endian', about which not much
|
|
* can be done other than adding a note in the release notes. (bug 206811)
|
|
*/
|
|
static const char *UTF_16_NAMES[] = {
|
|
#if defined(IS_LITTLE_ENDIAN)
|
|
"UTF-16LE",
|
|
#if defined(__GLIBC__)
|
|
"UNICODELITTLE",
|
|
#endif
|
|
"UCS-2LE",
|
|
#else
|
|
"UTF-16BE",
|
|
#if defined(__GLIBC__)
|
|
"UNICODEBIG",
|
|
#endif
|
|
"UCS-2BE",
|
|
#endif
|
|
"UTF-16",
|
|
"UCS-2",
|
|
"UCS2",
|
|
"UCS_2",
|
|
"ucs-2",
|
|
"ucs2",
|
|
"ucs_2",
|
|
NULL
|
|
};
|
|
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
static const char *UTF_8_NAMES[] = {
|
|
"UTF-8",
|
|
"UTF8",
|
|
"UTF_8",
|
|
"utf-8",
|
|
"utf8",
|
|
"utf_8",
|
|
NULL
|
|
};
|
|
#endif
|
|
|
|
static const char *ISO_8859_1_NAMES[] = {
|
|
"ISO-8859-1",
|
|
#if !defined(__GLIBC__)
|
|
"ISO8859-1",
|
|
"ISO88591",
|
|
"ISO_8859_1",
|
|
"ISO8859_1",
|
|
"iso-8859-1",
|
|
"iso8859-1",
|
|
"iso88591",
|
|
"iso_8859_1",
|
|
"iso8859_1",
|
|
#endif
|
|
NULL
|
|
};
|
|
|
|
class nsNativeCharsetConverter
|
|
{
|
|
public:
|
|
nsNativeCharsetConverter();
|
|
~nsNativeCharsetConverter();
|
|
|
|
nsresult NativeToUnicode(const char **input , PRUint32 *inputLeft,
|
|
PRUnichar **output, PRUint32 *outputLeft);
|
|
nsresult UnicodeToNative(const PRUnichar **input , PRUint32 *inputLeft,
|
|
char **output, PRUint32 *outputLeft);
|
|
|
|
static void GlobalInit();
|
|
static void GlobalShutdown();
|
|
static bool IsNativeUTF8();
|
|
|
|
private:
|
|
static iconv_t gNativeToUnicode;
|
|
static iconv_t gUnicodeToNative;
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
static iconv_t gNativeToUTF8;
|
|
static iconv_t gUTF8ToNative;
|
|
static iconv_t gUnicodeToUTF8;
|
|
static iconv_t gUTF8ToUnicode;
|
|
#endif
|
|
static Mutex *gLock;
|
|
static bool gInitialized;
|
|
static bool gIsNativeUTF8;
|
|
|
|
static void LazyInit();
|
|
|
|
static void Lock() { if (gLock) gLock->Lock(); }
|
|
static void Unlock() { if (gLock) gLock->Unlock(); }
|
|
};
|
|
|
|
iconv_t nsNativeCharsetConverter::gNativeToUnicode = INVALID_ICONV_T;
|
|
iconv_t nsNativeCharsetConverter::gUnicodeToNative = INVALID_ICONV_T;
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
iconv_t nsNativeCharsetConverter::gNativeToUTF8 = INVALID_ICONV_T;
|
|
iconv_t nsNativeCharsetConverter::gUTF8ToNative = INVALID_ICONV_T;
|
|
iconv_t nsNativeCharsetConverter::gUnicodeToUTF8 = INVALID_ICONV_T;
|
|
iconv_t nsNativeCharsetConverter::gUTF8ToUnicode = INVALID_ICONV_T;
|
|
#endif
|
|
Mutex *nsNativeCharsetConverter::gLock = nsnull;
|
|
bool nsNativeCharsetConverter::gInitialized = false;
|
|
bool nsNativeCharsetConverter::gIsNativeUTF8 = false;
|
|
|
|
void
|
|
nsNativeCharsetConverter::LazyInit()
|
|
{
|
|
const char *blank_list[] = { "", NULL };
|
|
const char **native_charset_list = blank_list;
|
|
const char *native_charset = nl_langinfo(CODESET);
|
|
if (native_charset == nsnull) {
|
|
NS_ERROR("native charset is unknown");
|
|
// fallback to ISO-8859-1
|
|
native_charset_list = ISO_8859_1_NAMES;
|
|
}
|
|
else
|
|
native_charset_list[0] = native_charset;
|
|
|
|
// Most, if not all, Unixen supporting UTF-8 and nl_langinfo(CODESET)
|
|
// return 'UTF-8' (or 'utf-8')
|
|
if (!PL_strcasecmp(native_charset, "UTF-8"))
|
|
gIsNativeUTF8 = true;
|
|
|
|
gNativeToUnicode = xp_iconv_open(UTF_16_NAMES, native_charset_list);
|
|
gUnicodeToNative = xp_iconv_open(native_charset_list, UTF_16_NAMES);
|
|
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
if (gNativeToUnicode == INVALID_ICONV_T) {
|
|
gNativeToUTF8 = xp_iconv_open(UTF_8_NAMES, native_charset_list);
|
|
gUTF8ToUnicode = xp_iconv_open(UTF_16_NAMES, UTF_8_NAMES);
|
|
NS_ASSERTION(gNativeToUTF8 != INVALID_ICONV_T, "no native to utf-8 converter");
|
|
NS_ASSERTION(gUTF8ToUnicode != INVALID_ICONV_T, "no utf-8 to utf-16 converter");
|
|
}
|
|
if (gUnicodeToNative == INVALID_ICONV_T) {
|
|
gUnicodeToUTF8 = xp_iconv_open(UTF_8_NAMES, UTF_16_NAMES);
|
|
gUTF8ToNative = xp_iconv_open(native_charset_list, UTF_8_NAMES);
|
|
NS_ASSERTION(gUnicodeToUTF8 != INVALID_ICONV_T, "no utf-16 to utf-8 converter");
|
|
NS_ASSERTION(gUTF8ToNative != INVALID_ICONV_T, "no utf-8 to native converter");
|
|
}
|
|
#else
|
|
NS_ASSERTION(gNativeToUnicode != INVALID_ICONV_T, "no native to utf-16 converter");
|
|
NS_ASSERTION(gUnicodeToNative != INVALID_ICONV_T, "no utf-16 to native converter");
|
|
#endif
|
|
|
|
/*
|
|
* On Solaris 8 (and newer?), the iconv modules converting to UCS-2
|
|
* prepend a byte order mark unicode character (BOM, u+FEFF) during
|
|
* the first use of the iconv converter. The same is the case of
|
|
* glibc 2.2.9x and Tru64 V5 (see bug 208809) when 'UTF-16' is used.
|
|
* However, we use 'UTF-16LE/BE' in both cases, instead so that we
|
|
* should be safe. But just in case...
|
|
*
|
|
* This dummy conversion gets rid of the BOMs and fixes bug 153562.
|
|
*/
|
|
char dummy_input[1] = { ' ' };
|
|
char dummy_output[4];
|
|
|
|
if (gNativeToUnicode != INVALID_ICONV_T) {
|
|
const char *input = dummy_input;
|
|
size_t input_left = sizeof(dummy_input);
|
|
char *output = dummy_output;
|
|
size_t output_left = sizeof(dummy_output);
|
|
|
|
xp_iconv(gNativeToUnicode, &input, &input_left, &output, &output_left);
|
|
}
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
if (gUTF8ToUnicode != INVALID_ICONV_T) {
|
|
const char *input = dummy_input;
|
|
size_t input_left = sizeof(dummy_input);
|
|
char *output = dummy_output;
|
|
size_t output_left = sizeof(dummy_output);
|
|
|
|
xp_iconv(gUTF8ToUnicode, &input, &input_left, &output, &output_left);
|
|
}
|
|
#endif
|
|
|
|
gInitialized = true;
|
|
}
|
|
|
|
void
|
|
nsNativeCharsetConverter::GlobalInit()
|
|
{
|
|
gLock = new Mutex("nsNativeCharsetConverter.gLock");
|
|
}
|
|
|
|
void
|
|
nsNativeCharsetConverter::GlobalShutdown()
|
|
{
|
|
if (gLock) {
|
|
delete gLock;
|
|
gLock = nsnull;
|
|
}
|
|
|
|
if (gNativeToUnicode != INVALID_ICONV_T) {
|
|
iconv_close(gNativeToUnicode);
|
|
gNativeToUnicode = INVALID_ICONV_T;
|
|
}
|
|
|
|
if (gUnicodeToNative != INVALID_ICONV_T) {
|
|
iconv_close(gUnicodeToNative);
|
|
gUnicodeToNative = INVALID_ICONV_T;
|
|
}
|
|
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
if (gNativeToUTF8 != INVALID_ICONV_T) {
|
|
iconv_close(gNativeToUTF8);
|
|
gNativeToUTF8 = INVALID_ICONV_T;
|
|
}
|
|
if (gUTF8ToNative != INVALID_ICONV_T) {
|
|
iconv_close(gUTF8ToNative);
|
|
gUTF8ToNative = INVALID_ICONV_T;
|
|
}
|
|
if (gUnicodeToUTF8 != INVALID_ICONV_T) {
|
|
iconv_close(gUnicodeToUTF8);
|
|
gUnicodeToUTF8 = INVALID_ICONV_T;
|
|
}
|
|
if (gUTF8ToUnicode != INVALID_ICONV_T) {
|
|
iconv_close(gUTF8ToUnicode);
|
|
gUTF8ToUnicode = INVALID_ICONV_T;
|
|
}
|
|
#endif
|
|
|
|
gInitialized = false;
|
|
}
|
|
|
|
nsNativeCharsetConverter::nsNativeCharsetConverter()
|
|
{
|
|
Lock();
|
|
if (!gInitialized)
|
|
LazyInit();
|
|
}
|
|
|
|
nsNativeCharsetConverter::~nsNativeCharsetConverter()
|
|
{
|
|
// reset converters for next time
|
|
if (gNativeToUnicode != INVALID_ICONV_T)
|
|
xp_iconv_reset(gNativeToUnicode);
|
|
if (gUnicodeToNative != INVALID_ICONV_T)
|
|
xp_iconv_reset(gUnicodeToNative);
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
if (gNativeToUTF8 != INVALID_ICONV_T)
|
|
xp_iconv_reset(gNativeToUTF8);
|
|
if (gUTF8ToNative != INVALID_ICONV_T)
|
|
xp_iconv_reset(gUTF8ToNative);
|
|
if (gUnicodeToUTF8 != INVALID_ICONV_T)
|
|
xp_iconv_reset(gUnicodeToUTF8);
|
|
if (gUTF8ToUnicode != INVALID_ICONV_T)
|
|
xp_iconv_reset(gUTF8ToUnicode);
|
|
#endif
|
|
Unlock();
|
|
}
|
|
|
|
nsresult
|
|
nsNativeCharsetConverter::NativeToUnicode(const char **input,
|
|
PRUint32 *inputLeft,
|
|
PRUnichar **output,
|
|
PRUint32 *outputLeft)
|
|
{
|
|
size_t res = 0;
|
|
size_t inLeft = (size_t) *inputLeft;
|
|
size_t outLeft = (size_t) *outputLeft * 2;
|
|
|
|
if (gNativeToUnicode != INVALID_ICONV_T) {
|
|
|
|
res = xp_iconv(gNativeToUnicode, input, &inLeft, (char **) output, &outLeft);
|
|
|
|
*inputLeft = inLeft;
|
|
*outputLeft = outLeft / 2;
|
|
if (res != (size_t) -1)
|
|
return NS_OK;
|
|
|
|
NS_WARNING("conversion from native to utf-16 failed");
|
|
|
|
// reset converter
|
|
xp_iconv_reset(gNativeToUnicode);
|
|
}
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
else if ((gNativeToUTF8 != INVALID_ICONV_T) &&
|
|
(gUTF8ToUnicode != INVALID_ICONV_T)) {
|
|
// convert first to UTF8, then from UTF8 to UCS2
|
|
const char *in = *input;
|
|
|
|
char ubuf[1024];
|
|
|
|
// we assume we're always called with enough space in |output|,
|
|
// so convert many chars at a time...
|
|
while (inLeft) {
|
|
char *p = ubuf;
|
|
size_t n = sizeof(ubuf);
|
|
res = xp_iconv(gNativeToUTF8, &in, &inLeft, &p, &n);
|
|
if (res == (size_t) -1) {
|
|
NS_ERROR("conversion from native to utf-8 failed");
|
|
break;
|
|
}
|
|
NS_ASSERTION(outLeft > 0, "bad assumption");
|
|
p = ubuf;
|
|
n = sizeof(ubuf) - n;
|
|
res = xp_iconv(gUTF8ToUnicode, (const char **) &p, &n, (char **) output, &outLeft);
|
|
if (res == (size_t) -1) {
|
|
NS_ERROR("conversion from utf-8 to utf-16 failed");
|
|
break;
|
|
}
|
|
}
|
|
|
|
(*input) += (*inputLeft - inLeft);
|
|
*inputLeft = inLeft;
|
|
*outputLeft = outLeft / 2;
|
|
|
|
if (res != (size_t) -1)
|
|
return NS_OK;
|
|
|
|
// reset converters
|
|
xp_iconv_reset(gNativeToUTF8);
|
|
xp_iconv_reset(gUTF8ToUnicode);
|
|
}
|
|
#endif
|
|
|
|
// fallback: zero-pad and hope for the best
|
|
// XXX This is lame and we have to do better.
|
|
isolatin1_to_utf16(input, inputLeft, output, outputLeft);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
nsNativeCharsetConverter::UnicodeToNative(const PRUnichar **input,
|
|
PRUint32 *inputLeft,
|
|
char **output,
|
|
PRUint32 *outputLeft)
|
|
{
|
|
size_t res = 0;
|
|
size_t inLeft = (size_t) *inputLeft * 2;
|
|
size_t outLeft = (size_t) *outputLeft;
|
|
|
|
if (gUnicodeToNative != INVALID_ICONV_T) {
|
|
res = xp_iconv(gUnicodeToNative, (const char **) input, &inLeft, output, &outLeft);
|
|
|
|
if (res != (size_t) -1) {
|
|
*inputLeft = inLeft / 2;
|
|
*outputLeft = outLeft;
|
|
return NS_OK;
|
|
}
|
|
|
|
NS_ERROR("iconv failed");
|
|
|
|
// reset converter
|
|
xp_iconv_reset(gUnicodeToNative);
|
|
}
|
|
#if defined(ENABLE_UTF8_FALLBACK_SUPPORT)
|
|
else if ((gUnicodeToUTF8 != INVALID_ICONV_T) &&
|
|
(gUTF8ToNative != INVALID_ICONV_T)) {
|
|
const char *in = (const char *) *input;
|
|
|
|
char ubuf[6]; // max utf-8 char length (really only needs to be 4 bytes)
|
|
|
|
// convert one uchar at a time...
|
|
while (inLeft && outLeft) {
|
|
char *p = ubuf;
|
|
size_t n = sizeof(ubuf), one_uchar = sizeof(PRUnichar);
|
|
res = xp_iconv(gUnicodeToUTF8, &in, &one_uchar, &p, &n);
|
|
if (res == (size_t) -1) {
|
|
NS_ERROR("conversion from utf-16 to utf-8 failed");
|
|
break;
|
|
}
|
|
p = ubuf;
|
|
n = sizeof(ubuf) - n;
|
|
res = xp_iconv(gUTF8ToNative, (const char **) &p, &n, output, &outLeft);
|
|
if (res == (size_t) -1) {
|
|
if (errno == E2BIG) {
|
|
// not enough room for last uchar... back up and return.
|
|
in -= sizeof(PRUnichar);
|
|
res = 0;
|
|
}
|
|
else
|
|
NS_ERROR("conversion from utf-8 to native failed");
|
|
break;
|
|
}
|
|
inLeft -= sizeof(PRUnichar);
|
|
}
|
|
|
|
if (res != (size_t) -1) {
|
|
(*input) += (*inputLeft - inLeft/2);
|
|
*inputLeft = inLeft/2;
|
|
*outputLeft = outLeft;
|
|
return NS_OK;
|
|
}
|
|
|
|
// reset converters
|
|
xp_iconv_reset(gUnicodeToUTF8);
|
|
xp_iconv_reset(gUTF8ToNative);
|
|
}
|
|
#endif
|
|
|
|
// fallback: truncate and hope for the best
|
|
utf16_to_isolatin1(input, inputLeft, output, outputLeft);
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
nsNativeCharsetConverter::IsNativeUTF8()
|
|
{
|
|
if (!gInitialized) {
|
|
Lock();
|
|
if (!gInitialized)
|
|
LazyInit();
|
|
Unlock();
|
|
}
|
|
return gIsNativeUTF8;
|
|
}
|
|
|
|
#endif // USE_ICONV
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// conversion using mb[r]towc/wc[r]tomb
|
|
//-----------------------------------------------------------------------------
|
|
#if defined(USE_STDCONV)
|
|
#if defined(HAVE_WCRTOMB) || defined(HAVE_MBRTOWC)
|
|
#include <wchar.h> // mbrtowc, wcrtomb
|
|
#endif
|
|
|
|
class nsNativeCharsetConverter
|
|
{
|
|
public:
|
|
nsNativeCharsetConverter();
|
|
|
|
nsresult NativeToUnicode(const char **input , PRUint32 *inputLeft,
|
|
PRUnichar **output, PRUint32 *outputLeft);
|
|
nsresult UnicodeToNative(const PRUnichar **input , PRUint32 *inputLeft,
|
|
char **output, PRUint32 *outputLeft);
|
|
|
|
static void GlobalInit();
|
|
static void GlobalShutdown() { }
|
|
static bool IsNativeUTF8();
|
|
|
|
private:
|
|
static bool gWCharIsUnicode;
|
|
|
|
#if defined(HAVE_WCRTOMB) || defined(HAVE_MBRTOWC)
|
|
mbstate_t ps;
|
|
#endif
|
|
};
|
|
|
|
bool nsNativeCharsetConverter::gWCharIsUnicode = false;
|
|
|
|
nsNativeCharsetConverter::nsNativeCharsetConverter()
|
|
{
|
|
#if defined(HAVE_WCRTOMB) || defined(HAVE_MBRTOWC)
|
|
memset(&ps, 0, sizeof(ps));
|
|
#endif
|
|
}
|
|
|
|
void
|
|
nsNativeCharsetConverter::GlobalInit()
|
|
{
|
|
// verify that wchar_t for the current locale is actually unicode.
|
|
// if it is not, then we should avoid calling mbtowc/wctomb and
|
|
// just fallback on zero-pad/truncation conversion.
|
|
//
|
|
// this test cannot be done at build time because the encoding of
|
|
// wchar_t may depend on the runtime locale. sad, but true!!
|
|
//
|
|
// so, if wchar_t is unicode then converting an ASCII character
|
|
// to wchar_t should not change its numeric value. we'll just
|
|
// check what happens with the ASCII 'a' character.
|
|
//
|
|
// this test is not perfect... obviously, it could yield false
|
|
// positives, but then at least ASCII text would be converted
|
|
// properly (or maybe just the 'a' character) -- oh well :(
|
|
|
|
char a = 'a';
|
|
unsigned int w = 0;
|
|
|
|
int res = mbtowc((wchar_t *) &w, &a, 1);
|
|
|
|
gWCharIsUnicode = (res != -1 && w == 'a');
|
|
|
|
#ifdef DEBUG
|
|
if (!gWCharIsUnicode)
|
|
NS_WARNING("wchar_t is not unicode (unicode conversion will be lossy)");
|
|
#endif
|
|
}
|
|
|
|
nsresult
|
|
nsNativeCharsetConverter::NativeToUnicode(const char **input,
|
|
PRUint32 *inputLeft,
|
|
PRUnichar **output,
|
|
PRUint32 *outputLeft)
|
|
{
|
|
if (gWCharIsUnicode) {
|
|
int incr;
|
|
|
|
// cannot use wchar_t here since it may have been redefined (e.g.,
|
|
// via -fshort-wchar). hopefully, sizeof(tmp) is sufficient XP.
|
|
unsigned int tmp = 0;
|
|
while (*inputLeft && *outputLeft) {
|
|
#ifdef HAVE_MBRTOWC
|
|
incr = (int) mbrtowc((wchar_t *) &tmp, *input, *inputLeft, &ps);
|
|
#else
|
|
// XXX is this thread-safe?
|
|
incr = (int) mbtowc((wchar_t *) &tmp, *input, *inputLeft);
|
|
#endif
|
|
if (incr < 0) {
|
|
NS_WARNING("mbtowc failed: possible charset mismatch");
|
|
// zero-pad and hope for the best
|
|
tmp = (unsigned char) **input;
|
|
incr = 1;
|
|
}
|
|
**output = (PRUnichar) tmp;
|
|
(*input) += incr;
|
|
(*inputLeft) -= incr;
|
|
(*output)++;
|
|
(*outputLeft)--;
|
|
}
|
|
}
|
|
else {
|
|
// wchar_t isn't unicode, so the best we can do is treat the
|
|
// input as if it is isolatin1 :(
|
|
isolatin1_to_utf16(input, inputLeft, output, outputLeft);
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
nsNativeCharsetConverter::UnicodeToNative(const PRUnichar **input,
|
|
PRUint32 *inputLeft,
|
|
char **output,
|
|
PRUint32 *outputLeft)
|
|
{
|
|
if (gWCharIsUnicode) {
|
|
int incr;
|
|
|
|
while (*inputLeft && *outputLeft >= MB_CUR_MAX) {
|
|
#ifdef HAVE_WCRTOMB
|
|
incr = (int) wcrtomb(*output, (wchar_t) **input, &ps);
|
|
#else
|
|
// XXX is this thread-safe?
|
|
incr = (int) wctomb(*output, (wchar_t) **input);
|
|
#endif
|
|
if (incr < 0) {
|
|
NS_WARNING("mbtowc failed: possible charset mismatch");
|
|
**output = (unsigned char) **input; // truncate
|
|
incr = 1;
|
|
}
|
|
// most likely we're dead anyways if this assertion should fire
|
|
NS_ASSERTION(PRUint32(incr) <= *outputLeft, "wrote beyond end of string");
|
|
(*output) += incr;
|
|
(*outputLeft) -= incr;
|
|
(*input)++;
|
|
(*inputLeft)--;
|
|
}
|
|
}
|
|
else {
|
|
// wchar_t isn't unicode, so the best we can do is treat the
|
|
// input as if it is isolatin1 :(
|
|
utf16_to_isolatin1(input, inputLeft, output, outputLeft);
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
// XXX : for now, return false
|
|
bool
|
|
nsNativeCharsetConverter::IsNativeUTF8()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
#endif // USE_STDCONV
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// API implementation
|
|
//-----------------------------------------------------------------------------
|
|
|
|
nsresult
|
|
NS_CopyNativeToUnicode(const nsACString &input, nsAString &output)
|
|
{
|
|
output.Truncate();
|
|
|
|
PRUint32 inputLen = input.Length();
|
|
|
|
nsACString::const_iterator iter;
|
|
input.BeginReading(iter);
|
|
|
|
//
|
|
// OPTIMIZATION: preallocate space for largest possible result; convert
|
|
// directly into the result buffer to avoid intermediate buffer copy.
|
|
//
|
|
// this will generally result in a larger allocation, but that seems
|
|
// better than an extra buffer copy.
|
|
//
|
|
if (!EnsureStringLength(output, inputLen))
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
nsAString::iterator out_iter;
|
|
output.BeginWriting(out_iter);
|
|
|
|
PRUnichar *result = out_iter.get();
|
|
PRUint32 resultLeft = inputLen;
|
|
|
|
const char *buf = iter.get();
|
|
PRUint32 bufLeft = inputLen;
|
|
|
|
nsNativeCharsetConverter conv;
|
|
nsresult rv = conv.NativeToUnicode(&buf, &bufLeft, &result, &resultLeft);
|
|
if (NS_SUCCEEDED(rv)) {
|
|
NS_ASSERTION(bufLeft == 0, "did not consume entire input buffer");
|
|
output.SetLength(inputLen - resultLeft);
|
|
}
|
|
return rv;
|
|
}
|
|
|
|
nsresult
|
|
NS_CopyUnicodeToNative(const nsAString &input, nsACString &output)
|
|
{
|
|
output.Truncate();
|
|
|
|
nsAString::const_iterator iter, end;
|
|
input.BeginReading(iter);
|
|
input.EndReading(end);
|
|
|
|
// cannot easily avoid intermediate buffer copy.
|
|
char temp[4096];
|
|
|
|
nsNativeCharsetConverter conv;
|
|
|
|
const PRUnichar *buf = iter.get();
|
|
PRUint32 bufLeft = Distance(iter, end);
|
|
while (bufLeft) {
|
|
char *p = temp;
|
|
PRUint32 tempLeft = sizeof(temp);
|
|
|
|
nsresult rv = conv.UnicodeToNative(&buf, &bufLeft, &p, &tempLeft);
|
|
if (NS_FAILED(rv)) return rv;
|
|
|
|
if (tempLeft < sizeof(temp))
|
|
output.Append(temp, sizeof(temp) - tempLeft);
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
NS_IsNativeUTF8()
|
|
{
|
|
return nsNativeCharsetConverter::IsNativeUTF8();
|
|
}
|
|
|
|
void
|
|
NS_StartupNativeCharsetUtils()
|
|
{
|
|
//
|
|
// need to initialize the locale or else charset conversion will fail.
|
|
// better not delay this in case some other component alters the locale
|
|
// settings.
|
|
//
|
|
// XXX we assume that we are called early enough that we should
|
|
// always be the first to care about the locale's charset.
|
|
//
|
|
setlocale(LC_CTYPE, "");
|
|
|
|
nsNativeCharsetConverter::GlobalInit();
|
|
}
|
|
|
|
void
|
|
NS_ShutdownNativeCharsetUtils()
|
|
{
|
|
nsNativeCharsetConverter::GlobalShutdown();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// XP_WIN
|
|
//-----------------------------------------------------------------------------
|
|
#elif defined(XP_WIN)
|
|
|
|
#include <windows.h>
|
|
#include "nsAString.h"
|
|
#include "nsReadableUtils.h"
|
|
|
|
nsresult
|
|
NS_CopyNativeToUnicode(const nsACString &input, nsAString &output)
|
|
{
|
|
PRUint32 inputLen = input.Length();
|
|
|
|
nsACString::const_iterator iter;
|
|
input.BeginReading(iter);
|
|
|
|
const char *buf = iter.get();
|
|
|
|
// determine length of result
|
|
PRUint32 resultLen = 0;
|
|
int n = ::MultiByteToWideChar(CP_ACP, 0, buf, inputLen, NULL, 0);
|
|
if (n > 0)
|
|
resultLen += n;
|
|
|
|
// allocate sufficient space
|
|
if (!EnsureStringLength(output, resultLen))
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
if (resultLen > 0) {
|
|
nsAString::iterator out_iter;
|
|
output.BeginWriting(out_iter);
|
|
|
|
PRUnichar *result = out_iter.get();
|
|
|
|
::MultiByteToWideChar(CP_ACP, 0, buf, inputLen, result, resultLen);
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
NS_CopyUnicodeToNative(const nsAString &input, nsACString &output)
|
|
{
|
|
PRUint32 inputLen = input.Length();
|
|
|
|
nsAString::const_iterator iter;
|
|
input.BeginReading(iter);
|
|
|
|
const PRUnichar *buf = iter.get();
|
|
|
|
// determine length of result
|
|
PRUint32 resultLen = 0;
|
|
|
|
int n = ::WideCharToMultiByte(CP_ACP, 0, buf, inputLen, NULL, 0, NULL, NULL);
|
|
if (n > 0)
|
|
resultLen += n;
|
|
|
|
// allocate sufficient space
|
|
if (!EnsureStringLength(output, resultLen))
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
if (resultLen > 0) {
|
|
nsACString::iterator out_iter;
|
|
output.BeginWriting(out_iter);
|
|
|
|
// default "defaultChar" is '?', which is an illegal character on windows
|
|
// file system. That will cause file uncreatable. Change it to '_'
|
|
const char defaultChar = '_';
|
|
|
|
char *result = out_iter.get();
|
|
|
|
::WideCharToMultiByte(CP_ACP, 0, buf, inputLen, result, resultLen,
|
|
&defaultChar, NULL);
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
// moved from widget/windows/nsToolkit.cpp
|
|
PRInt32
|
|
NS_ConvertAtoW(const char *aStrInA, int aBufferSize, PRUnichar *aStrOutW)
|
|
{
|
|
return MultiByteToWideChar(CP_ACP, 0, aStrInA, -1, aStrOutW, aBufferSize);
|
|
}
|
|
|
|
PRInt32
|
|
NS_ConvertWtoA(const PRUnichar *aStrInW, int aBufferSizeOut,
|
|
char *aStrOutA, const char *aDefault)
|
|
{
|
|
if ((!aStrInW) || (!aStrOutA) || (aBufferSizeOut <= 0))
|
|
return 0;
|
|
|
|
int numCharsConverted = WideCharToMultiByte(CP_ACP, 0, aStrInW, -1,
|
|
aStrOutA, aBufferSizeOut,
|
|
aDefault, NULL);
|
|
|
|
if (!numCharsConverted) {
|
|
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
|
|
// Overflow, add missing null termination but return 0
|
|
aStrOutA[aBufferSizeOut-1] = '\0';
|
|
}
|
|
else {
|
|
// Other error, clear string and return 0
|
|
aStrOutA[0] = '\0';
|
|
}
|
|
}
|
|
else if (numCharsConverted < aBufferSizeOut) {
|
|
// Add 2nd null (really necessary?)
|
|
aStrOutA[numCharsConverted] = '\0';
|
|
}
|
|
|
|
return numCharsConverted;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// XP_OS2
|
|
//-----------------------------------------------------------------------------
|
|
#elif defined(XP_OS2)
|
|
|
|
#define INCL_DOS
|
|
#include <os2.h>
|
|
#include <uconv.h>
|
|
#include "nsAString.h"
|
|
#include "nsReadableUtils.h"
|
|
#include <ulserrno.h>
|
|
#include "nsNativeCharsetUtils.h"
|
|
|
|
static UconvObject UnicodeConverter = NULL;
|
|
|
|
nsresult
|
|
NS_CopyNativeToUnicode(const nsACString &input, nsAString &output)
|
|
{
|
|
PRUint32 inputLen = input.Length();
|
|
|
|
nsACString::const_iterator iter;
|
|
input.BeginReading(iter);
|
|
const char *inputStr = iter.get();
|
|
|
|
// determine length of result
|
|
PRUint32 resultLen = inputLen;
|
|
if (!EnsureStringLength(output, resultLen))
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
nsAString::iterator out_iter;
|
|
output.BeginWriting(out_iter);
|
|
UniChar *result = (UniChar*)out_iter.get();
|
|
|
|
size_t cSubs = 0;
|
|
size_t resultLeft = resultLen;
|
|
|
|
if (!UnicodeConverter)
|
|
NS_StartupNativeCharsetUtils();
|
|
|
|
int unirc = ::UniUconvToUcs(UnicodeConverter, (void**)&inputStr, &inputLen,
|
|
&result, &resultLeft, &cSubs);
|
|
|
|
NS_ASSERTION(unirc != UCONV_E2BIG, "Path too big");
|
|
|
|
if (unirc != ULS_SUCCESS) {
|
|
output.Truncate();
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
// Need to update string length to reflect how many bytes were actually
|
|
// written.
|
|
output.Truncate(resultLen - resultLeft);
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
NS_CopyUnicodeToNative(const nsAString &input, nsACString &output)
|
|
{
|
|
size_t inputLen = input.Length();
|
|
|
|
nsAString::const_iterator iter;
|
|
input.BeginReading(iter);
|
|
UniChar* inputStr = (UniChar*) const_cast<PRUnichar*>(iter.get());
|
|
|
|
// maximum length of unicode string of length x converted to native
|
|
// codepage is x*2
|
|
size_t resultLen = inputLen * 2;
|
|
if (!EnsureStringLength(output, resultLen))
|
|
return NS_ERROR_OUT_OF_MEMORY;
|
|
|
|
nsACString::iterator out_iter;
|
|
output.BeginWriting(out_iter);
|
|
char *result = out_iter.get();
|
|
|
|
size_t cSubs = 0;
|
|
size_t resultLeft = resultLen;
|
|
|
|
if (!UnicodeConverter)
|
|
NS_StartupNativeCharsetUtils();
|
|
|
|
int unirc = ::UniUconvFromUcs(UnicodeConverter, &inputStr, &inputLen,
|
|
(void**)&result, &resultLeft, &cSubs);
|
|
|
|
NS_ASSERTION(unirc != UCONV_E2BIG, "Path too big");
|
|
|
|
if (unirc != ULS_SUCCESS) {
|
|
output.Truncate();
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
// Need to update string length to reflect how many bytes were actually
|
|
// written.
|
|
output.Truncate(resultLen - resultLeft);
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
NS_StartupNativeCharsetUtils()
|
|
{
|
|
ULONG ulLength;
|
|
ULONG ulCodePage;
|
|
DosQueryCp(sizeof(ULONG), &ulCodePage, &ulLength);
|
|
|
|
UniChar codepage[20];
|
|
int unirc = ::UniMapCpToUcsCp(ulCodePage, codepage, 20);
|
|
if (unirc == ULS_SUCCESS) {
|
|
unirc = ::UniCreateUconvObject(codepage, &UnicodeConverter);
|
|
if (unirc == ULS_SUCCESS) {
|
|
uconv_attribute_t attr;
|
|
::UniQueryUconvObject(UnicodeConverter, &attr, sizeof(uconv_attribute_t),
|
|
NULL, NULL, NULL);
|
|
attr.options = UCONV_OPTION_SUBSTITUTE_BOTH;
|
|
attr.subchar_len=1;
|
|
attr.subchar[0]='_';
|
|
::UniSetUconvObject(UnicodeConverter, &attr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void
|
|
NS_ShutdownNativeCharsetUtils()
|
|
{
|
|
::UniFreeUconvObject(UnicodeConverter);
|
|
}
|
|
|
|
#else
|
|
|
|
#include "nsReadableUtils.h"
|
|
|
|
nsresult
|
|
NS_CopyNativeToUnicode(const nsACString &input, nsAString &output)
|
|
{
|
|
CopyASCIItoUTF16(input, output);
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
NS_CopyUnicodeToNative(const nsAString &input, nsACString &output)
|
|
{
|
|
LossyCopyUTF16toASCII(input, output);
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
NS_StartupNativeCharsetUtils()
|
|
{
|
|
}
|
|
|
|
void
|
|
NS_ShutdownNativeCharsetUtils()
|
|
{
|
|
}
|
|
|
|
#endif
|