diff --git a/mozilla/extensions/psm-glue/src/nsCrypto.cpp b/mozilla/extensions/psm-glue/src/nsCrypto.cpp index 5dc8a39955a..353f459b643 100644 --- a/mozilla/extensions/psm-glue/src/nsCrypto.cpp +++ b/mozilla/extensions/psm-glue/src/nsCrypto.cpp @@ -32,10 +32,11 @@ #include "nsIEventQueueService.h" #include "nsIEventQueue.h" #include "nsIThreadManager.h" +#include "nsIWindowWatcher.h" +#include "nsIPrompt.h" #include "nsJSUtils.h" #include "nsJSPrincipals.h" #include "nsIPrincipal.h" -#include "nsIAppShellService.h" #include "nsAppShellCIDs.h" #include "jsapi.h" #include "jsdbgapi.h" @@ -133,7 +134,6 @@ private: }; const char * nsCrypto::kPSMComponentContractID = PSM_COMPONENT_CONTRACTID; -static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); NS_IMPL_ISUPPORTS2(nsCrypto, nsIDOMCrypto,nsIScriptObjectOwner) NS_IMPL_ISUPPORTS2(nsCRMFObject, nsIDOMCRMFObject,nsIScriptObjectOwner) @@ -1134,24 +1134,15 @@ nsCrypto::SignText(JSContext *cx, jsval *argv, PRUint32 argc, void alertUser(char *message) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - nsresult rv; + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr prompter; + if (wwatch) + wwatch->GetNewPrompter(0, getter_AddRefs(prompter)); - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), - &jsContext); - if (NS_SUCCEEDED(rv)) { - // set up arguments for window.alert - - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext, &stackPtr, "s", message); - if (argv) { - hiddenWindow->Alert(jsContext, argv, 1); - JS_PopArguments(jsContext, stackPtr); - } - } + if (prompter) { + nsAutoString wmessage; + wmessage.AssignWithConversion(message); + prompter->Alert(0, wmessage.get()); } } @@ -1417,26 +1408,18 @@ nsPkcs11::GetScriptObject(nsIScriptContext *aContext, PRBool confirm_user(char *message) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; PRBool confirmation = PR_FALSE; - nsresult rv; + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr prompter; + if (wwatch) + wwatch->GetNewPrompter(0, getter_AddRefs(prompter)); - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_SUCCEEDED(rv)) { - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), - &jsContext); - if (NS_SUCCEEDED(rv)) { - // set up arguments for window.confirm - - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext, &stackPtr, "s", message); - if (argv) { - hiddenWindow->Confirm(jsContext, argv, 1, &confirmation); - JS_PopArguments(jsContext, stackPtr); - } - } + if (prompter) { + nsAutoString wmessage; + wmessage.AssignWithConversion(message); + prompter->Confirm(0, wmessage.get(), &confirmation); } + return confirmation; } diff --git a/mozilla/extensions/psm-glue/src/nsPSMUICallbacks.cpp b/mozilla/extensions/psm-glue/src/nsPSMUICallbacks.cpp index 52b8a9fcd2d..44f3f539db2 100644 --- a/mozilla/extensions/psm-glue/src/nsPSMUICallbacks.cpp +++ b/mozilla/extensions/psm-glue/src/nsPSMUICallbacks.cpp @@ -67,8 +67,9 @@ NS_IMPL_THREADSAFE_ISUPPORTS1(nsPSMUIHandlerImpl, nsIPSMUIHandler) NS_METHOD nsPSMUIHandlerImpl::DisplayURI(PRInt32 width, PRInt32 height, PRBool modal, const char *urlStr, nsIDOMWindow * win) { + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); nsresult rv; - nsCOMPtr parentWindow; + nsCOMPtr parentWindow; JSContext *jsContext; jsval *argv = NULL; @@ -88,16 +89,6 @@ nsPSMUIHandlerImpl::DisplayURI(PRInt32 width, PRInt32 height, PRBool modal, cons if (!jsContext) { rv = NS_ERROR_FAILURE; goto loser; } parentWindow = do_QueryInterface(win); - } else { - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_FAILED(rv)) { - goto loser; - } - rv = appShell->GetHiddenWindowAndJSContext( getter_AddRefs( parentWindow ), - &jsContext ); - if ( NS_FAILED( rv ) ) { - goto loser; - } } // Set up arguments for "window.open" @@ -114,23 +105,13 @@ nsPSMUIHandlerImpl::DisplayURI(PRInt32 width, PRInt32 height, PRBool modal, cons : "menubar=no,height=%d,width=%d", height, width ); - void *stackPtr; - argv = JS_PushArguments(jsContext, &stackPtr, "sss", urlStr, "_blank", buffer); - if (argv) { - // open the window - nsIDOMWindowInternal *newWindow; -#if defined(WIN32) || defined(XP_OS2) - if (modal && win) { - parentWindow->OpenDialog(jsContext, argv, 3, &newWindow); - } else { - parentWindow->Open(jsContext, argv, 3, &newWindow); + + + if (wwatch) { + nsCOMPtr newwin; + wwatch->OpenWindow(parentWindow, urlStr, "_blank", buffer, 0, getter_AddRefs(newwin)); } - newWindow->ResizeTo(width, height); -#else - parentWindow->Open(jsContext, argv, 3, &newWindow); -#endif - JS_PopArguments(jsContext, stackPtr); - } + loser: return rv; } diff --git a/mozilla/gfx/src/beos/nsDeviceContextSpecB.cpp b/mozilla/gfx/src/beos/nsDeviceContextSpecB.cpp index cd0c996e068..61edf1b6d1f 100644 --- a/mozilla/gfx/src/beos/nsDeviceContextSpecB.cpp +++ b/mozilla/gfx/src/beos/nsDeviceContextSpecB.cpp @@ -29,11 +29,11 @@ #include "prenv.h" /* for PR_GetEnv */ #include "nsIAppShellComponentImpl.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" #include "nsIServiceManager.h" #include "nsIDialogParamBlock.h" - -static NS_DEFINE_IID( kAppShellServiceCID, NS_APPSHELL_SERVICE_CID ); +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" //#include "prmem.h" //#include "plstr.h" @@ -119,101 +119,81 @@ NS_IMETHODIMP nsDeviceContextSpecBeOS :: Init(PRBool aQuiet) char *command; char *printfile = nsnull; - nsresult rv = NS_OK; - nsCOMPtr ioParamBlock; - - rv = nsComponentManager::CreateInstance("@mozilla.org/embedcomp/dialogparam;1", - nsnull, - NS_GET_IID(nsIDialogParamBlock), - getter_AddRefs(ioParamBlock)); - + nsresult rv = NS_ERROR_FAILURE; + nsCOMPtr ioParamBlock(do_CreateInstance("@mozilla.org/embedcomp/dialogparam;1")); + + nsCOMPtr paramBlockWrapper; + if (ioParamBlock) + paramBlockWrapper = do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID); + + if (paramBlockWrapper) { + paramBlockWrapper->SetData(ioParamBlock); + paramBlockWrapper->SetDataIID(&NS_GET_IID(nsIDialogParamBlock)); + + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, "chrome://global/content/printdialog.xul", + "_blank", "chrome,modal", paramBlockWrapper, + getter_AddRefs(newWindow)); + } + } + if (NS_SUCCEEDED(rv)) { - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr hiddenWindow; - nsCOMPtr mWindow; - - JSContext *jsContext; - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), &jsContext); - if (NS_SUCCEEDED(rv)) { - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext, - &stackPtr, - "sss%ip", - "chrome://global/content/printdialog.xul", - "_blank", - "chrome,modal", - (const nsIID *) (&NS_GET_IID(nsIDialogParamBlock)), - (nsISupports *) ioParamBlock); - if (argv) { - nsCOMPtr newWindow; - - rv = hiddenWindow->OpenDialog(jsContext, - argv, - 4, - getter_AddRefs(newWindow)); - - if (NS_SUCCEEDED(rv)) { - JS_PopArguments(jsContext, stackPtr); - PRInt32 buttonPressed = 0; - ioParamBlock->GetInt(0, &buttonPressed); - if (buttonPressed == 0) { - nsCOMPtr pPrefs = do_GetService(NS_PREF_CONTRACTID, &rv); - if (NS_SUCCEEDED(rv) && pPrefs) { - (void) pPrefs->GetBoolPref("print.print_reversed", &reversed); - (void) pPrefs->GetBoolPref("print.print_color", &color); - (void) pPrefs->GetBoolPref("print.print_landscape", &landscape); - (void) pPrefs->GetIntPref("print.print_paper_size", &paper_size); - (void) pPrefs->CopyCharPref("print.print_command", (char **) &command); - (void) pPrefs->GetIntPref("print.print_margin_top", &itop); - (void) pPrefs->GetIntPref("print.print_margin_left", &ileft); - (void) pPrefs->GetIntPref("print.print_margin_bottom", &ibottom); - (void) pPrefs->GetIntPref("print.print_margin_right", &iright); - (void) pPrefs->CopyCharPref("print.print_file", (char **) &printfile); - (void) pPrefs->GetBoolPref("print.print_tofile", &tofile); - sprintf( mPrData.command, command ); - sprintf( mPrData.path, printfile ); - } else { + PRInt32 buttonPressed = 0; + ioParamBlock->GetInt(0, &buttonPressed); + if (buttonPressed == 0) { + nsCOMPtr pPrefs = do_GetService(NS_PREF_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv) && pPrefs) { + (void) pPrefs->GetBoolPref("print.print_reversed", &reversed); + (void) pPrefs->GetBoolPref("print.print_color", &color); + (void) pPrefs->GetBoolPref("print.print_landscape", &landscape); + (void) pPrefs->GetIntPref("print.print_paper_size", &paper_size); + (void) pPrefs->CopyCharPref("print.print_command", (char **) &command); + (void) pPrefs->GetIntPref("print.print_margin_top", &itop); + (void) pPrefs->GetIntPref("print.print_margin_left", &ileft); + (void) pPrefs->GetIntPref("print.print_margin_bottom", &ibottom); + (void) pPrefs->GetIntPref("print.print_margin_right", &iright); + (void) pPrefs->CopyCharPref("print.print_file", (char **) &printfile); + (void) pPrefs->GetBoolPref("print.print_tofile", &tofile); + sprintf( mPrData.command, command ); + sprintf( mPrData.path, printfile ); + } else { #ifndef VMS - sprintf( mPrData.command, "lpr" ); +sprintf( mPrData.command, "lpr" ); #else - // Note to whoever puts the "lpr" into the prefs file. Please contact me - // as I need to make the default be "print" instead of "lpr" for OpenVMS. - sprintf( mPrData.command, "print" ); + // Note to whoever puts the "lpr" into the prefs file. Please contact me + // as I need to make the default be "print" instead of "lpr" for OpenVMS. + sprintf( mPrData.command, "print" ); #endif - } - - mPrData.top = itop / 1000.0; - mPrData.bottom = ibottom / 1000.0; - mPrData.left = ileft / 1000.0; - mPrData.right = iright / 1000.0; - mPrData.fpf = !reversed; - mPrData.grayscale = !color; - mPrData.size = paper_size; - mPrData.toPrinter = !tofile; - - // PWD, HOME, or fail - - if (!printfile) { - if ( ( path = PR_GetEnv( "PWD" ) ) == (char *) NULL ) - if ( ( path = PR_GetEnv( "HOME" ) ) == (char *) NULL ) - strcpy( mPrData.path, "mozilla.ps" ); - if ( path != (char *) NULL ) - sprintf( mPrData.path, "%s/mozilla.ps", path ); - else - return NS_ERROR_FAILURE; - } - - return NS_OK; - } - } - } } + + mPrData.top = itop / 1000.0; + mPrData.bottom = ibottom / 1000.0; + mPrData.left = ileft / 1000.0; + mPrData.right = iright / 1000.0; + mPrData.fpf = !reversed; + mPrData.grayscale = !color; + mPrData.size = paper_size; + mPrData.toPrinter = !tofile; + +// PWD, HOME, or fail + + if (!printfile) { + if ( ( path = PR_GetEnv( "PWD" ) ) == (char *) NULL ) + if ( ( path = PR_GetEnv( "HOME" ) ) == (char *) NULL ) + strcpy( mPrData.path, "mozilla.ps" ); + if ( path != (char *) NULL ) + sprintf( mPrData.path, "%s/mozilla.ps", path ); + else + return NS_ERROR_FAILURE; + } + + return NS_OK; } } - - return NS_ERROR_FAILURE; - + + return NS_ERROR_FAILURE; } NS_IMETHODIMP nsDeviceContextSpecBeOS :: GetToPrinter( PRBool &aToPrinter ) diff --git a/mozilla/gfx/src/gtk/Makefile.in b/mozilla/gfx/src/gtk/Makefile.in index 5c273928343..7cb69529762 100644 --- a/mozilla/gfx/src/gtk/Makefile.in +++ b/mozilla/gfx/src/gtk/Makefile.in @@ -29,7 +29,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = layout LIBRARY_NAME = gfx_gtk IS_COMPONENT = 1 -REQUIRES = xpcom string img widget view util dom pref js uconv appshell necko unicharutil gfx2 mozcomps windowwatcher +REQUIRES = xpcom string img widget view util dom pref js uconv necko unicharutil gfx2 mozcomps windowwatcher CSRCS = nsPrintdGTK.c diff --git a/mozilla/gfx/src/gtk/nsDeviceContextSpecG.cpp b/mozilla/gfx/src/gtk/nsDeviceContextSpecG.cpp index cf62bd1efdd..e138eb71021 100644 --- a/mozilla/gfx/src/gtk/nsDeviceContextSpecG.cpp +++ b/mozilla/gfx/src/gtk/nsDeviceContextSpecG.cpp @@ -30,12 +30,12 @@ #include "nsIPref.h" #include "prenv.h" /* for PR_GetEnv */ -#include "nsIAppShellComponentImpl.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" #include "nsIServiceManager.h" #include "nsIDialogParamBlock.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" -static NS_DEFINE_IID( kAppShellServiceCID, NS_APPSHELL_SERVICE_CID ); static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID); //#include "prmem.h" @@ -153,123 +153,104 @@ NS_IMETHODIMP nsDeviceContextSpecGTK :: Init(PRBool aQuiet) double dtop = 0.5; double dbottom = 0.5; - rv = NS_OK; - nsCOMPtr ioParamBlock; + rv = NS_ERROR_FAILURE; + nsCOMPtr ioParamBlock(do_CreateInstance("@mozilla.org/embedcomp/dialogparam;1")); - rv = nsComponentManager::CreateInstance("@mozilla.org/embedcomp/dialogparam;1", - nsnull, - NS_GET_IID(nsIDialogParamBlock), - getter_AddRefs(ioParamBlock)); + nsCOMPtr paramBlockWrapper; + if (ioParamBlock) + paramBlockWrapper = do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID); + + if (paramBlockWrapper) { + paramBlockWrapper->SetData(ioParamBlock); + paramBlockWrapper->SetDataIID(&NS_GET_IID(nsIDialogParamBlock)); + + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, "chrome://global/content/printdialog.xul", + "_blank", "chrome,modal", paramBlockWrapper, + getter_AddRefs(newWindow)); + } + } if (NS_SUCCEEDED(rv)) { - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr hiddenWindow; - nsCOMPtr mWindow; + PRInt32 buttonPressed = 0; + ioParamBlock->GetInt(0, &buttonPressed); + if (buttonPressed == 0) { - JSContext *jsContext; - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), &jsContext); - if (NS_SUCCEEDED(rv)) { - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext, - &stackPtr, - "sss%ip", - "chrome://global/content/printdialog.xul", - "_blank", - "chrome,modal", - (const nsIID *) (&NS_GET_IID(nsIDialogParamBlock)), - (nsISupports *) ioParamBlock); - if (argv) { - nsCOMPtr newWindow; + if (printService) { + printService->GetPrintReversed(&reversed); + printService->GetPrintInColor(&color); + printService->GetPaperSize(&paper_size); + printService->GetPrintCommand(&command); + printService->GetPrintRange(&printRange); + printService->GetToFileName(&printfile); + printService->GetPrintToFile(&tofile); + printService->GetStartPageRange(&fromPage); + printService->GetEndPageRange(&toPage); + printService->GetMarginTop(&dtop); + printService->GetMarginLeft(&dleft); + printService->GetMarginBottom(&dbottom); + printService->GetMarginRight(&dright); - rv = hiddenWindow->OpenDialog(jsContext, - argv, - 4, - getter_AddRefs(newWindow)); - - if (NS_SUCCEEDED(rv)) { - JS_PopArguments(jsContext, stackPtr); - PRInt32 buttonPressed = 0; - ioParamBlock->GetInt(0, &buttonPressed); - if (buttonPressed == 0) { - - if (printService) { - printService->GetPrintReversed(&reversed); - printService->GetPrintInColor(&color); - printService->GetPaperSize(&paper_size); - printService->GetPrintCommand(&command); - printService->GetPrintRange(&printRange); - printService->GetToFileName(&printfile); - printService->GetPrintToFile(&tofile); - printService->GetStartPageRange(&fromPage); - printService->GetEndPageRange(&toPage); - printService->GetMarginTop(&dtop); - printService->GetMarginLeft(&dleft); - printService->GetMarginBottom(&dbottom); - printService->GetMarginRight(&dright); - - if (command != nsnull && printfile != nsnull) { - // convert Unicode strings to cstrings - nsAutoString cmdStr; - nsAutoString printFileStr; - cmdStr = command; - printFileStr = printfile; - char * pCmdStr = cmdStr.ToNewCString(); - char * pPrintFileStr = printFileStr.ToNewCString(); - sprintf( mPrData.command, pCmdStr ); - sprintf( mPrData.path, pPrintFileStr); - nsMemory::Free(pCmdStr); - nsMemory::Free(pPrintFileStr); - } + if (command != nsnull && printfile != nsnull) { + // convert Unicode strings to cstrings + nsAutoString cmdStr; + nsAutoString printFileStr; + cmdStr = command; + printFileStr = printfile; + char * pCmdStr = cmdStr.ToNewCString(); + char * pPrintFileStr = printFileStr.ToNewCString(); + sprintf( mPrData.command, pCmdStr ); + sprintf( mPrData.path, pPrintFileStr); + nsMemory::Free(pCmdStr); + nsMemory::Free(pPrintFileStr); + } #ifdef DEBUG_rods - printf("margins: %5.2f,%5.2f,%5.2f,%5.2f\n", dtop, dleft, dbottom, dright); - printf("printRange %d\n", printRange); - printf("fromPage %d\n", fromPage); - printf("toPage %d\n", toPage); + printf("margins: %5.2f,%5.2f,%5.2f,%5.2f\n", dtop, dleft, dbottom, dright); + printf("printRange %d\n", printRange); + printf("fromPage %d\n", fromPage); + printf("toPage %d\n", toPage); #endif - } else { + } else { #ifndef VMS - sprintf( mPrData.command, "lpr" ); + sprintf( mPrData.command, "lpr" ); #else - // Note to whoever puts the "lpr" into the prefs file. Please contact me - // as I need to make the default be "print" instead of "lpr" for OpenVMS. - sprintf( mPrData.command, "print" ); + // Note to whoever puts the "lpr" into the prefs file. Please contact me + // as I need to make the default be "print" instead of "lpr" for OpenVMS. + sprintf( mPrData.command, "print" ); #endif - } - - mPrData.top = dtop; - mPrData.bottom = dbottom; - mPrData.left = dleft; - mPrData.right = dright; - mPrData.fpf = !reversed; - mPrData.grayscale = !color; - mPrData.size = paper_size; - mPrData.toPrinter = !tofile; - - // PWD, HOME, or fail - - if (!printfile) { - if ( ( path = PR_GetEnv( "PWD" ) ) == (char *) NULL ) - if ( ( path = PR_GetEnv( "HOME" ) ) == (char *) NULL ) - strcpy( mPrData.path, "mozilla.ps" ); - if ( path != (char *) NULL ) - sprintf( mPrData.path, "%s/mozilla.ps", path ); - else - return NS_ERROR_FAILURE; - } - if (command != nsnull) { - nsMemory::Free(command); - } - if (printfile != nsnull) { - nsMemory::Free(printfile); - } - - return NS_OK; - } - } - } } + + mPrData.top = dtop; + mPrData.bottom = dbottom; + mPrData.left = dleft; + mPrData.right = dright; + mPrData.fpf = !reversed; + mPrData.grayscale = !color; + mPrData.size = paper_size; + mPrData.toPrinter = !tofile; + + // PWD, HOME, or fail + + if (!printfile) { + if ( ( path = PR_GetEnv( "PWD" ) ) == (char *) NULL ) + if ( ( path = PR_GetEnv( "HOME" ) ) == (char *) NULL ) + strcpy( mPrData.path, "mozilla.ps" ); + if ( path != (char *) NULL ) + sprintf( mPrData.path, "%s/mozilla.ps", path ); + else + return NS_ERROR_FAILURE; + } + if (command != nsnull) { + nsMemory::Free(command); + } + if (printfile != nsnull) { + nsMemory::Free(printfile); + } + + return NS_OK; } } diff --git a/mozilla/gfx/src/qt/nsDeviceContextSpecQT.cpp b/mozilla/gfx/src/qt/nsDeviceContextSpecQT.cpp index bfc188023ae..349e8cdb689 100644 --- a/mozilla/gfx/src/qt/nsDeviceContextSpecQT.cpp +++ b/mozilla/gfx/src/qt/nsDeviceContextSpecQT.cpp @@ -36,8 +36,9 @@ #include "nsIAppShellComponentImpl.h" #include "nsIDOMWindowInternal.h" #include "nsIDialogParamBlock.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" -static NS_DEFINE_IID( kAppShellServiceCID, NS_APPSHELL_SERVICE_CID ); static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID); #include @@ -147,109 +148,96 @@ NS_IMETHODIMP nsDeviceContextSpecQT::Init(PRBool aQuiet) double dright = 0.5; double dtop = 0.5; double dbottom = 0.5; - nsCOMPtr ioParamBlock; - rv = nsComponentManager::CreateInstance("@mozilla.org/embedcomp/dialogparam;1", - nsnull, - NS_GET_IID(nsIDialogParamBlock), - getter_AddRefs(ioParamBlock)); + rv = NS_ERROR_FAILURE; + nsCOMPtr ioParamBlock(do_CreateInstance("@mozilla.org/embedcomp/dialogparam;1")); + + nsCOMPtr paramBlockWrapper; + if (ioParamBlock) + paramBlockWrapper = do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID); + + if (paramBlockWrapper) { + paramBlockWrapper->SetData(ioParamBlock); + paramBlockWrapper->SetDataIID(&NS_GET_IID(nsIDialogParamBlock)); + + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, "chrome://global/content/printdialog.xul", + "_blank", "chrome,modal", paramBlockWrapper, + getter_AddRefs(newWindow)); + } + } if (NS_SUCCEEDED(rv)) { - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr hiddenWindow; - nsCOMPtr mWindow; + PRInt32 buttonPressed = 0; + ioParamBlock->GetInt(0, &buttonPressed); + if (buttonPressed == 0) { + if (printService) { + printService->GetPrintReversed(&reversed); + printService->GetPrintInColor(&color); + printService->GetPaperSize(&paper_size); + printService->GetPrintCommand(&command); + printService->GetPrintRange(&printRange); + printService->GetToFileName(&printfile); + printService->GetPrintToFile(&tofile); + printService->GetStartPageRange(&fromPage); + printService->GetEndPageRange(&toPage); + printService->GetMarginTop(&dtop); + printService->GetMarginLeft(&dleft); + printService->GetMarginBottom(&dbottom); + printService->GetMarginRight(&dright); - JSContext *jsContext; - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), - &jsContext); - if (NS_SUCCEEDED(rv)) { - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext,&stackPtr,"sss%ip", - "chrome://global/content/printdialog.xul", - "_blank","chrome,modal", - (const nsIID*)(&NS_GET_IID(nsIDialogParamBlock)), - (nsISupports*)ioParamBlock); - if (argv) { - nsCOMPtr newWindow; + if (command != nsnull && printfile != nsnull) { + // convert Unicode strings to cstrings + nsAutoString cmdStr; + nsAutoString printFileStr; - rv = hiddenWindow->OpenDialog(jsContext,argv,4, - getter_AddRefs(newWindow)); - - if (NS_SUCCEEDED(rv)) { - JS_PopArguments(jsContext, stackPtr); - PRInt32 buttonPressed = 0; - ioParamBlock->GetInt(0, &buttonPressed); - if (buttonPressed == 0) { - if (printService) { - printService->GetPrintReversed(&reversed); - printService->GetPrintInColor(&color); - printService->GetPaperSize(&paper_size); - printService->GetPrintCommand(&command); - printService->GetPrintRange(&printRange); - printService->GetToFileName(&printfile); - printService->GetPrintToFile(&tofile); - printService->GetStartPageRange(&fromPage); - printService->GetEndPageRange(&toPage); - printService->GetMarginTop(&dtop); - printService->GetMarginLeft(&dleft); - printService->GetMarginBottom(&dbottom); - printService->GetMarginRight(&dright); - - if (command != nsnull && printfile != nsnull) { - // convert Unicode strings to cstrings - nsAutoString cmdStr; - nsAutoString printFileStr; - - cmdStr = command; - printFileStr = printfile; - char *pCmdStr = cmdStr.ToNewCString(); - char *pPrintFileStr = printFileStr.ToNewCString(); - sprintf(mPrData.command,pCmdStr); - sprintf(mPrData.path,pPrintFileStr); - nsMemory::Free(pCmdStr); - nsMemory::Free(pPrintFileStr); - } - } - else { -#ifndef VMS - sprintf( mPrData.command, "lpr" ); -#else - // Note to whoever puts the "lpr" into the prefs file. Please contact me - // as I need to make the default be "print" instead of "lpr" for OpenVMS. - sprintf( mPrData.command, "print" ); -#endif - } - mPrData.top = dtop; - mPrData.bottom = dbottom; - mPrData.left = dleft; - mPrData.right = dright; - mPrData.fpf = !reversed; - mPrData.grayscale = !color; - mPrData.size = paper_size; - mPrData.toPrinter = !tofile; - - // PWD, HOME, or fail - if (!printfile) { - if ((path = PR_GetEnv("PWD")) == (char*)NULL) - if ((path = PR_GetEnv("HOME")) == (char*)NULL) - strcpy(mPrData.path,"mozilla.ps"); - if (path != (char*)NULL) - sprintf(mPrData.path,"%s/mozilla.ps",path); - else - return NS_ERROR_FAILURE; - } - if (command != nsnull) { - nsMemory::Free(command); - } - if (printfile != nsnull) { - nsMemory::Free(printfile); - } - return NS_OK; - } - } - } + cmdStr = command; + printFileStr = printfile; + char *pCmdStr = cmdStr.ToNewCString(); + char *pPrintFileStr = printFileStr.ToNewCString(); + sprintf(mPrData.command,pCmdStr); + sprintf(mPrData.path,pPrintFileStr); + nsMemory::Free(pCmdStr); + nsMemory::Free(pPrintFileStr); + } } + else { +#ifndef VMS + sprintf( mPrData.command, "lpr" ); +#else + // Note to whoever puts the "lpr" into the prefs file. Please contact me + // as I need to make the default be "print" instead of "lpr" for OpenVMS. + sprintf( mPrData.command, "print" ); +#endif + } + mPrData.top = dtop; + mPrData.bottom = dbottom; + mPrData.left = dleft; + mPrData.right = dright; + mPrData.fpf = !reversed; + mPrData.grayscale = !color; + mPrData.size = paper_size; + mPrData.toPrinter = !tofile; + + // PWD, HOME, or fail + if (!printfile) { + if ((path = PR_GetEnv("PWD")) == (char*)NULL) + if ((path = PR_GetEnv("HOME")) == (char*)NULL) + strcpy(mPrData.path,"mozilla.ps"); + if (path != (char*)NULL) + sprintf(mPrData.path,"%s/mozilla.ps",path); + else + return NS_ERROR_FAILURE; + } + if (command != nsnull) { + nsMemory::Free(command); + } + if (printfile != nsnull) { + nsMemory::Free(printfile); + } + return NS_OK; } } return NS_ERROR_FAILURE; diff --git a/mozilla/gfx/src/xlib/Makefile.in b/mozilla/gfx/src/xlib/Makefile.in index 1c366d5fe98..feba1bc5f33 100644 --- a/mozilla/gfx/src/xlib/Makefile.in +++ b/mozilla/gfx/src/xlib/Makefile.in @@ -29,7 +29,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = layout LIBRARY_NAME = gfx_xlib IS_COMPONENT = 1 -REQUIRES = xpcom string xlibrgb widget dom layout appshell js necko pref img util view uconv locale unicharutil gfx2 mozcomps +REQUIRES = xpcom string xlibrgb widget dom layout appshell js necko pref img util view uconv locale unicharutil gfx2 mozcomps windowwatcher CPPSRCS = \ nsDeviceContextSpecFactoryX.cpp \ diff --git a/mozilla/gfx/src/xlib/nsDeviceContextSpecXlib.cpp b/mozilla/gfx/src/xlib/nsDeviceContextSpecXlib.cpp index 9e0fc7b5c97..1ba635c329c 100644 --- a/mozilla/gfx/src/xlib/nsDeviceContextSpecXlib.cpp +++ b/mozilla/gfx/src/xlib/nsDeviceContextSpecXlib.cpp @@ -28,12 +28,11 @@ #include "nsIPref.h" #include "prenv.h" /* for PR_GetEnv */ -#include "nsIAppShellComponentImpl.h" #include "nsIDOMWindowInternal.h" #include "nsIServiceManager.h" #include "nsIDialogParamBlock.h" - -static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" static NS_DEFINE_IID(kIDeviceContextSpecIID, NS_IDEVICE_CONTEXT_SPEC_IID); static NS_DEFINE_IID(kIDeviceContextSpecPSIID, NS_IDEVICE_CONTEXT_SPEC_PS_IID); @@ -109,96 +108,77 @@ NS_IMETHODIMP nsDeviceContextSpecXlib::Init(PRBool aQuiet) char *command; char *printfile = nsnull; - nsresult rv = NS_OK; - nsCOMPtr ioParamBlock; + nsresult rv = NS_ERROR_FAILURE; + nsCOMPtr ioParamBlock(do_CreateInstance("@mozilla.org/embedcomp/dialogparam;1")); - rv = nsComponentManager::CreateInstance("@mozilla.org/embedcomp/dialogparam;1", - nsnull, - NS_GET_IID(nsIDialogParamBlock), - getter_AddRefs(ioParamBlock)); + nsCOMPtr paramBlockWrapper; + if (ioParamBlock) + paramBlockWrapper = do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID); + + if (paramBlockWrapper) { + paramBlockWrapper->SetData(ioParamBlock); + paramBlockWrapper->SetDataIID(&NS_GET_IID(nsIDialogParamBlock)); + + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, "chrome://global/content/printdialog.xul", + "_blank", "chrome,modal", paramBlockWrapper, + getter_AddRefs(newWindow)); + } + } if (NS_SUCCEEDED(rv)) { - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr hiddenWindow; - nsCOMPtr mWindow; - - JSContext *jsContext; - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), &jsContext); - if (NS_SUCCEEDED(rv)) { - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext, - &stackPtr, - "sss%ip", - "chrome://global/content/printdialog.xul", - "_blank", - "chrome,modal", - (const nsIID *) (&NS_GET_IID(nsIDialogParamBlock)), - (nsISupports *) ioParamBlock); - if (argv) { - nsCOMPtr newWindow; - - rv = hiddenWindow->OpenDialog(jsContext, - argv, - 4, - getter_AddRefs(newWindow)); - - if (NS_SUCCEEDED(rv)) { - JS_PopArguments(jsContext, stackPtr); - PRInt32 buttonPressed = 0; - ioParamBlock->GetInt(0, &buttonPressed); - if (buttonPressed == 0) { - nsCOMPtr pPrefs = do_GetService(NS_PREF_CONTRACTID, &rv); - if (NS_SUCCEEDED(rv) && pPrefs) { - (void) pPrefs->GetBoolPref("print.print_reversed", &reversed); - (void) pPrefs->GetBoolPref("print.print_color", &color); - (void) pPrefs->GetBoolPref("print.print_landscape", &landscape); - (void) pPrefs->GetIntPref("print.print_paper_size", &paper_size); - (void) pPrefs->CopyCharPref("print.print_command", (char **) &command); - (void) pPrefs->GetIntPref("print.print_margin_top", &itop); - (void) pPrefs->GetIntPref("print.print_margin_left", &ileft); - (void) pPrefs->GetIntPref("print.print_margin_bottom", &ibottom); - (void) pPrefs->GetIntPref("print.print_margin_right", &iright); - (void) pPrefs->CopyCharPref("print.print_file", (char **) &printfile); - (void) pPrefs->GetBoolPref("print.print_tofile", &tofile); - sprintf(mPrData.command, command); - sprintf(mPrData.path, printfile); - } else { + PRInt32 buttonPressed = 0; + ioParamBlock->GetInt(0, &buttonPressed); + if (buttonPressed == 0) { + nsCOMPtr pPrefs = do_GetService(NS_PREF_CONTRACTID, &rv); + if (NS_SUCCEEDED(rv) && pPrefs) { + (void) pPrefs->GetBoolPref("print.print_reversed", &reversed); + (void) pPrefs->GetBoolPref("print.print_color", &color); + (void) pPrefs->GetBoolPref("print.print_landscape", &landscape); + (void) pPrefs->GetIntPref("print.print_paper_size", &paper_size); + (void) pPrefs->CopyCharPref("print.print_command", (char **) &command); + (void) pPrefs->GetIntPref("print.print_margin_top", &itop); + (void) pPrefs->GetIntPref("print.print_margin_left", &ileft); + (void) pPrefs->GetIntPref("print.print_margin_bottom", &ibottom); + (void) pPrefs->GetIntPref("print.print_margin_right", &iright); + (void) pPrefs->CopyCharPref("print.print_file", (char **) &printfile); + (void) pPrefs->GetBoolPref("print.print_tofile", &tofile); + sprintf(mPrData.command, command); + sprintf(mPrData.path, printfile); + } else { #ifndef VMS - sprintf(mPrData.command, "lpr"); + sprintf(mPrData.command, "lpr"); #else - // Note to whoever puts the "lpr" into the prefs file. Please contact me - // as I need to make the default be "print" instead of "lpr" for OpenVMS. - sprintf(mPrData.command, "print"); + // Note to whoever puts the "lpr" into the prefs file. Please contact me + // as I need to make the default be "print" instead of "lpr" for OpenVMS. + sprintf(mPrData.command, "print"); #endif - } - - mPrData.top = itop / 1000.0; - mPrData.bottom = ibottom / 1000.0; - mPrData.left = ileft / 1000.0; - mPrData.right = iright / 1000.0; - mPrData.fpf = !reversed; - mPrData.grayscale = !color; - mPrData.size = paper_size; - mPrData.toPrinter = !tofile; - - // PWD, HOME, or fail - - if (!printfile) { - if ( ( path = PR_GetEnv( "PWD" ) ) == (char *) NULL ) - if ( ( path = PR_GetEnv( "HOME" ) ) == (char *) NULL ) - strcpy( mPrData.path, "mozilla.ps" ); - if ( path != (char *) NULL ) - sprintf( mPrData.path, "%s/mozilla.ps", path ); - else - return NS_ERROR_FAILURE; - } - - return NS_OK; - } - } - } } + + mPrData.top = itop / 1000.0; + mPrData.bottom = ibottom / 1000.0; + mPrData.left = ileft / 1000.0; + mPrData.right = iright / 1000.0; + mPrData.fpf = !reversed; + mPrData.grayscale = !color; + mPrData.size = paper_size; + mPrData.toPrinter = !tofile; + + // PWD, HOME, or fail + + if (!printfile) { + if ( ( path = PR_GetEnv( "PWD" ) ) == (char *) NULL ) + if ( ( path = PR_GetEnv( "HOME" ) ) == (char *) NULL ) + strcpy( mPrData.path, "mozilla.ps" ); + if ( path != (char *) NULL ) + sprintf( mPrData.path, "%s/mozilla.ps", path ); + else + return NS_ERROR_FAILURE; + } + + return NS_OK; } } return NS_ERROR_FAILURE; diff --git a/mozilla/mailnews/base/src/Makefile.in b/mozilla/mailnews/base/src/Makefile.in index 14a8a408a4e..282aba061c2 100644 --- a/mozilla/mailnews/base/src/Makefile.in +++ b/mozilla/mailnews/base/src/Makefile.in @@ -28,7 +28,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = msgbase LIBRARY_NAME = msgbase_s -REQUIRES = xpcom string necko dom js appshell appcomps uconv intl htmlparser widget docshell rdf editor layout mailnews locale msgbaseutil webshell txmgr msgcompose msgdb uriloader pref msglocal msgimap timer mork msgnews addrbook prefmigr chrome xuldoc caps mime mimetype gfx2 mozcomps +REQUIRES = xpcom string necko dom js appshell appcomps uconv intl htmlparser widget docshell rdf editor layout mailnews locale msgbaseutil webshell txmgr msgcompose msgdb uriloader pref msglocal msgimap timer mork msgnews addrbook prefmigr chrome xuldoc caps mime mimetype gfx2 mozcomps windowwatcher CPPSRCS = \ nsMessenger.cpp \ diff --git a/mozilla/mailnews/base/src/nsMessengerBootstrap.cpp b/mozilla/mailnews/base/src/nsMessengerBootstrap.cpp index e61c7c46952..fe484a5470b 100644 --- a/mozilla/mailnews/base/src/nsMessengerBootstrap.cpp +++ b/mozilla/mailnews/base/src/nsMessengerBootstrap.cpp @@ -32,12 +32,13 @@ #include "nsIMsgMailSession.h" #include "nsIMsgFolderCache.h" #include "nsIPref.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" #include "nsIAppShellService.h" -#include "nsAppShellCIDs.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" +#include "nsString.h" #include "nsIURI.h" -static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); static NS_DEFINE_CID(kCMsgMailSessionCID, NS_MSGMAILSESSION_CID); static NS_DEFINE_CID(kMsgAccountManagerCID, NS_MSGACCOUNTMANAGER_CID); static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); @@ -99,34 +100,21 @@ NS_IMETHODIMP nsMessengerBootstrap::GetChromeUrlForTask(char **aChromeUrlForTask // Utility function to open a messenger window and pass an argument string to it. static nsresult openWindow( const PRUnichar *chrome, const PRUnichar *args ) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - nsresult rv; - NS_WITH_SERVICE( nsIAppShellService, appShell, kAppShellServiceCID, &rv ) - if ( NS_SUCCEEDED( rv ) ) { - rv = appShell->GetHiddenWindowAndJSContext( getter_AddRefs( hiddenWindow ), - &jsContext ); - if ( NS_SUCCEEDED( rv ) ) { - // Set up arguments for "window.openDialog" - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "WssW", - chrome, - "_blank", - "chrome,dialog=no,all", - args ); - if ( argv ) { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 4, - getter_AddRefs( newWindow ) ); - JS_PopArguments( jsContext, stackPtr ); - } - } - } - return rv; + + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr sarg(do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID)); + if (!wwatch || !sarg) + return NS_ERROR_FAILURE; + + sarg->SetData(args); + + nsCOMPtr newWindow; + nsresult rv; + rv = wwatch->OpenWindow(0, NS_ConvertUCS2toUTF8(chrome).get(), "_blank", + "chrome,dialog=no,all", sarg, + getter_AddRefs(newWindow)); + + return rv; } NS_IMETHODIMP nsMessengerBootstrap::OpenMessengerWindowWithUri(nsIURI *aURI) diff --git a/mozilla/mailnews/compose/src/nsMsgComposeService.cpp b/mozilla/mailnews/compose/src/nsMsgComposeService.cpp index f8453ffd15a..95d0e4b8394 100644 --- a/mozilla/mailnews/compose/src/nsMsgComposeService.cpp +++ b/mozilla/mailnews/compose/src/nsMsgComposeService.cpp @@ -26,8 +26,6 @@ #include "nsMsgCompCID.h" #include "nsISupportsArray.h" #include "nsIServiceManager.h" -#include "nsIAppShellService.h" -#include "nsAppShellCIDs.h" #include "nsXPIDLString.h" #include "nsIMsgIdentity.h" #include "nsISmtpUrl.h" @@ -35,6 +33,8 @@ #include "nsMsgI18N.h" #include "nsIMsgDraft.h" #include "nsIMsgComposeParams.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" #include "nsEscape.h" #ifdef MSGCOMP_TRACE_PERFORMANCE @@ -45,7 +45,6 @@ #include "nsMsgUtils.h" #endif -static NS_DEFINE_CID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); static NS_DEFINE_CID(kMsgComposeCID, NS_MSGCOMPOSE_CID); #ifdef NS_DEBUG @@ -100,37 +99,24 @@ nsMsgComposeService::~nsMsgComposeService() // Utility function to open a message compose window and pass an nsIMsgComposeParams parameter to it. static nsresult openWindow( const char *chrome, nsIMsgComposeParams *params ) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; nsresult rv; - nsCOMPtr appShell (do_GetService(kAppShellServiceCID)); - if (appShell) - { - rv = appShell->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), &jsContext); - if (NS_SUCCEEDED(rv)) - { - // Set up arguments for "window.openDialog" - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "sss%ip", - (chrome && *chrome) ? chrome : DEFAULT_CHROME, - "_blank", - "chrome,dialog=no,all", - (const nsIID*) (&NS_GET_IID(nsIMsgComposeParams)), - (nsISupports*) params); - if (argv) - { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog(jsContext, - argv, - 4, - getter_AddRefs(newWindow)); - JS_PopArguments(jsContext, stackPtr); - } - } - } + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (!wwatch) + return NS_ERROR_FAILURE; + + nsCOMPtr msgParamsWrapper = + do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, rv); + + msgParamsWrapper->SetData(params); + msgParamsWrapper->SetDataIID(&NS_GET_IID(nsIMsgComposeParams)); + + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, chrome && *chrome ? chrome : DEFAULT_CHROME, + "_blank", "chrome,dialog=no,all", msgParamsWrapper, + getter_AddRefs(newWindow)); + return rv; } diff --git a/mozilla/widget/src/gtk/Makefile.in b/mozilla/widget/src/gtk/Makefile.in index 671b0ae933c..d95ff5f72b4 100644 --- a/mozilla/widget/src/gtk/Makefile.in +++ b/mozilla/widget/src/gtk/Makefile.in @@ -25,7 +25,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = widget LIBRARY_NAME = widget_gtk IS_COMPONENT = 1 -REQUIRES = xpcom string layout pref js dom appshell timer uconv necko img view util rdf uriloader docshell msgcompose msgbase editor locale txmgr gfx2 +REQUIRES = xpcom string layout pref js dom appshell timer uconv necko img view util rdf uriloader docshell msgcompose msgbase editor locale txmgr gfx2 windowwatcher CSRCS = \ keysym2ucs.c diff --git a/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.cpp b/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.cpp index b869c0ea138..7f5872ee113 100644 --- a/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.cpp +++ b/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.cpp @@ -23,14 +23,15 @@ #include #include "nsGtkMozRemoteHelper.h" #include "nsCRT.h" -#include "nsIAppShellService.h" #include "nsAppShellCIDs.h" #include "nsIXULWindow.h" #include "nsIDocShell.h" #include "nsProxiedService.h" #include "nsIInterfaceRequestor.h" #include "nsIScriptGlobalObject.h" +#include "nsISupportsPrimitives.h" #include "nsIWindowMediator.h" +#include "nsIWindowWatcher.h" #include "nsIURI.h" #include "nsNetUtil.h" #include "nsIPref.h" @@ -71,7 +72,6 @@ static char *s501UnrecognizedCommand = "501 unrecognized command:"; // static char *s502NoWindow = "502 no appropriate window for:"; static char *s509InternalError = "509 internal error"; -static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID); static NS_DEFINE_CID(kWindowMediatorCID, NS_WINDOWMEDIATOR_CID); class RemoteHelperContentListener : public nsIURIContentListener, @@ -630,7 +630,7 @@ NS_METHOD nsGtkMozRemoteHelper::OpenURLDialog (void) { nsresult rv; - nsCOMPtr lastWindow; + nsCOMPtr lastWindow; // get the last used browser window rv = GetLastBrowserWindow(getter_AddRefs(lastWindow)); @@ -643,7 +643,7 @@ nsGtkMozRemoteHelper::OpenURLDialog (void) rv = OpenXULWindow ("chrome://communicator/content/openLocation.xul", lastWindow, "chrome,modal", - NS_LITERAL_STRING("_blank").get(), + "_blank", nsnull); if (NS_FAILED(rv)) return NS_ERROR_FAILURE; @@ -655,7 +655,6 @@ nsGtkMozRemoteHelper::OpenURL (const char *aURL, PRBool aNewWindow, PRBoo { nsresult rv; nsString newURL; - nsString name; nsCString navChromeURL; nsXPIDLCString tempString; NS_WITH_SERVICE(nsIPref, prefs, "@mozilla.org/preferences;1", &rv); @@ -672,14 +671,9 @@ nsGtkMozRemoteHelper::OpenURL (const char *aURL, PRBool aNewWindow, PRBoo if (aNewWindow) { - nsCOMPtr parentWindow; - rv = GetHiddenWindow(getter_AddRefs(parentWindow)); - if (NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - rv = OpenXULWindow(navChromeURL, parentWindow, + rv = OpenXULWindow(navChromeURL, 0, "chrome,all,dialog=no", - name.GetUnicode(), newURL.GetUnicode()); + "_blank", newURL.GetUnicode()); if (NS_FAILED(rv)) return NS_ERROR_FAILURE; } @@ -839,33 +833,7 @@ nsGtkMozRemoteHelper::AddBookmark (const char *aURL, const char *aTitle) return NS_OK; } -NS_METHOD -nsGtkMozRemoteHelper::GetHiddenWindow (nsIDOMWindowInternal **_retval) -{ - nsresult rv; - NS_WITH_PROXIED_SERVICE(nsIAppShellService, appShell, - kAppShellServiceCID, nsnull, &rv); - if (NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - nsCOMPtr xulWindow; - rv = appShell->GetHiddenWindow(getter_AddRefs(xulWindow)); - if(NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - nsCOMPtr docShell; - rv = xulWindow->GetDocShell(getter_AddRefs(docShell)); - if(NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - nsCOMPtr domWindow(do_GetInterface(docShell)); - *_retval = domWindow; - NS_IF_ADDREF(*_retval); - - return NS_OK; -} - -NS_METHOD nsGtkMozRemoteHelper::GetLastBrowserWindow (nsIDOMWindowInternal **_retval) +NS_METHOD nsGtkMozRemoteHelper::GetLastBrowserWindow (nsIDOMWindow **_retval) { NS_ENSURE_ARG_POINTER(_retval); @@ -883,59 +851,42 @@ NS_METHOD nsGtkMozRemoteHelper::GetLastBrowserWindow (nsIDOMWindowInternal **_re rv = windowMediator->GetMostRecentWindow(browserString.GetUnicode(), getter_AddRefs(outerWindow)); if (NS_FAILED(rv)) return rv; - *_retval = outerWindow.get(); + nsCOMPtr domwin(do_QueryInterface(outerWindow)); + if (!domwin) + return NS_ERROR_NO_INTERFACE; + *_retval = domwin; NS_ADDREF(*_retval); return NS_OK; } -NS_METHOD nsGtkMozRemoteHelper::OpenXULWindow (const char *aChromeURL, nsIDOMWindowInternal *aParent, +NS_METHOD nsGtkMozRemoteHelper::OpenXULWindow (const char *aChromeURL, nsIDOMWindow *aParent, const char *aWindowFeatures, - const PRUnichar *aName, const PRUnichar *aURL) + const char *aName, const PRUnichar *aURL) { NS_ENSURE_ARG_POINTER(aChromeURL); NS_ENSURE_ARG_POINTER(aWindowFeatures); NS_ENSURE_ARG_POINTER(aParent); - nsCOMPtr returnedWindow; - nsCOMPtr scriptGlobalObj = do_QueryInterface(aParent); - JSContext *jsContext = nsnull; - - if (!scriptGlobalObj) - return NS_ERROR_FAILURE; - - nsCOMPtr scriptcx; - scriptGlobalObj->GetContext(getter_AddRefs(scriptcx)); - if (scriptcx) - jsContext = (JSContext *)scriptcx->GetNativeContext(); - - if (!jsContext) - return NS_ERROR_FAILURE; - // make sure that we pass a valid name even if there isn't one // passed in. - const PRUnichar *name; + const char *name; const PRUnichar *url; - static PRUnichar kEmpty[] = { PRUnichar(0) }; - name = aName ? aName : kEmpty; - url = aURL ? aURL : kEmpty; + static char kEmptyChar[] = { 0 }; + static PRUnichar kEmptyUnichar[] = { PRUnichar(0) }; + name = aName ? aName : kEmptyChar; + url = aURL ? aURL : kEmptyUnichar; - jsval *jsargv; - void *mark; - - jsargv = JS_PushArguments(jsContext, &mark, "sWsW", aChromeURL, name, - aWindowFeatures, url); - - if (!jsargv) + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr sarg(do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID)); + if (!wwatch || !sarg) return NS_ERROR_FAILURE; - + + sarg->SetData(aURL); + nsCOMPtr returnedWindow; nsresult rv; + rv = wwatch->OpenWindow(aParent, aChromeURL, aName, aWindowFeatures, sarg, + getter_AddRefs(returnedWindow)); - rv = aParent->OpenDialog(jsContext, jsargv, 4, getter_AddRefs(returnedWindow)); - JS_PopArguments(jsContext, mark); - - if (NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - return NS_OK; + return rv; } diff --git a/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.h b/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.h index e52448d2e97..f1680053c57 100644 --- a/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.h +++ b/mozilla/widget/src/gtk/nsGtkMozRemoteHelper.h @@ -57,11 +57,10 @@ public: static NS_METHOD AddBookmark (const char *aURL, const char *aTitle); // utility functions for getting windows - static NS_METHOD GetHiddenWindow (nsIDOMWindowInternal **_retval); - static NS_METHOD GetLastBrowserWindow (nsIDOMWindowInternal **_retval); - static NS_METHOD OpenXULWindow (const char *aChromeURL, nsIDOMWindowInternal *aParent, + static NS_METHOD GetLastBrowserWindow (nsIDOMWindow **_retval); + static NS_METHOD OpenXULWindow (const char *aChromeURL, nsIDOMWindow *aParent, const char *aWindowFeatures, - const PRUnichar *aName, const PRUnichar *aURL); + const char *aName, const PRUnichar *aURL); static Atom sMozVersionAtom; static Atom sMozLockAtom; diff --git a/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp b/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp index 487fa73ebd5..45c59b08358 100644 --- a/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp +++ b/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp @@ -40,7 +40,9 @@ static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #include "nsIWebShellWindow.h" #include "nsIWebShell.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" #include "jsapi.h" #include "nsAEEventHandling.h" @@ -282,35 +284,19 @@ OSErr nsMacCommandLine::HandlePrintOneDoc(const FSSpec& inFileSpec, OSType fileT nsresult nsMacCommandLine::OpenWindow(const char *chrome, const PRUnichar *url) //---------------------------------------------------------------------------------------- { + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr urlWrapper(do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID)); + if (!wwatch || !urlWrapper) + return NS_ERROR_FAILURE; + + urlWrapper->SetData(url); + + nsCOMPtr newWindow; nsresult rv; - NS_WITH_SERVICE(nsIAppShellService, appShellService, kAppShellServiceCID, &rv) - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - rv = appShellService->GetHiddenWindowAndJSContext( getter_AddRefs( hiddenWindow ), - &jsContext ); - if (NS_SUCCEEDED(rv)) - { - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "sssW", - chrome, - "_blank", - "chrome,dialog=no,all", - url ); - if(argv) - { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 4, - getter_AddRefs( newWindow ) ); - JS_PopArguments( jsContext, stackPtr ); - } - } - } + rv = wwatch->OpenWindow(0, chrome, "_blank", + "chrome,dialog=no,all", urlWrapper, + getter_AddRefs(newWindow)); + return rv; } diff --git a/mozilla/xpfe/bootstrap/nsAppRunner.cpp b/mozilla/xpfe/bootstrap/nsAppRunner.cpp index 39d4ce8bde4..5b92caa9bf9 100644 --- a/mozilla/xpfe/bootstrap/nsAppRunner.cpp +++ b/mozilla/xpfe/bootstrap/nsAppRunner.cpp @@ -227,36 +227,20 @@ static nsresult OpenWindow(const char *urlstr, const PRUnichar *args) #ifdef DEBUG_CMD_LINE printf("OpenWindow(%s,?)\n",urlstr); #endif /* DEBUG_CMD_LINE */ + + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr sarg(do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID)); + if (!wwatch || !sarg) + return NS_ERROR_FAILURE; + + sarg->SetData(args); + + nsCOMPtr newWindow; nsresult rv; - nsCOMPtr appShellService(do_GetService(kAppShellServiceCID, &rv)); - if (NS_SUCCEEDED(rv)) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - rv = appShellService->GetHiddenWindowAndJSContext(getter_AddRefs(hiddenWindow), - &jsContext); - if (NS_SUCCEEDED(rv)) { - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "sssW", - urlstr, - "_blank", - "chrome,dialog=no,all", - args ); + rv = wwatch->OpenWindow(0, urlstr, "_blank", + "chrome,dialog=no,all", sarg, + getter_AddRefs(newWindow)); - if( argv ) { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 4, - getter_AddRefs( newWindow ) ); - - JS_PopArguments( jsContext, stackPtr ); - - } - } - - } return rv; } diff --git a/mozilla/xpfe/bootstrap/nsNativeAppSupportOS2.cpp b/mozilla/xpfe/bootstrap/nsNativeAppSupportOS2.cpp index 7b8610d5d77..7d8dd63bd1c 100644 --- a/mozilla/xpfe/bootstrap/nsNativeAppSupportOS2.cpp +++ b/mozilla/xpfe/bootstrap/nsNativeAppSupportOS2.cpp @@ -29,9 +29,9 @@ #include "nsXPIDLString.h" #include "nsIComponentManager.h" #include "nsIServiceManager.h" -#include "nsIAppShellService.h" -#include "nsAppShellCIDs.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" #define INCL_PM #define INCL_GPI #define INCL_DOS @@ -1006,37 +1006,23 @@ nsNativeAppSupportOS2::GetCmdLineArgs( LPBYTE request, nsICmdLineService **aResu nsresult nsNativeAppSupportOS2::OpenWindow( const char*urlstr, const char *args ) { - nsresult rv; - static NS_DEFINE_CID( kAppShellServiceCID, NS_APPSHELL_SERVICE_CID ); - NS_WITH_SERVICE(nsIAppShellService, appShellService, kAppShellServiceCID, &rv) - if ( NS_SUCCEEDED( rv ) ) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - rv = appShellService->GetHiddenWindowAndJSContext( getter_AddRefs( hiddenWindow ), - &jsContext ); - if ( NS_SUCCEEDED( rv ) ) { - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "ssss", - urlstr, - "_blank", - "chrome,dialog=no,all", - args ); - if( argv ) { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 4, - getter_AddRefs( newWindow ) ); - JS_PopArguments( jsContext, stackPtr ); - } - } else { - #ifdef MOZ_DEBUG_DDE - printf( "GetHiddenWindowAndJSContext failed, rv=0x%08X\n", (int)rv ); - #endif - } - } - return rv; + + nsresult rv = NS_ERROR_FAILURE; + + nsCOMPtr wwatch(do_GetService("@mozilla/embedcomp/window-watcher;1")); + nsCOMPtr sarg(do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID)); + if (sarg) + sarg->SetData(args); + + if (wwatch && sarg) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, urlstr, "_blank", "chrome,dialog=no,all", + sarg, getter_AddRefs(newWindow)); +#ifdef MOZ_DEBUG_DDE + } else { + printf("Get WindowWatcher (or create string) failed\n"); +#endif + } + return rv; } #endif diff --git a/mozilla/xpfe/bootstrap/nsNativeAppSupportWin.cpp b/mozilla/xpfe/bootstrap/nsNativeAppSupportWin.cpp index 3a3fa40a414..97dca14215b 100644 --- a/mozilla/xpfe/bootstrap/nsNativeAppSupportWin.cpp +++ b/mozilla/xpfe/bootstrap/nsNativeAppSupportWin.cpp @@ -28,10 +28,10 @@ #include "nsXPIDLString.h" #include "nsIComponentManager.h" #include "nsIServiceManager.h" -#include "nsIAppShellService.h" -#include "nsAppShellCIDs.h" -#include "nsIDOMWindowInternal.h" #include "nsICmdLineHandler.h" +#include "nsIDOMWindow.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" #include #include #include @@ -1027,36 +1027,22 @@ nsNativeAppSupportWin::GetCmdLineArgs( LPBYTE request, nsICmdLineService **aResu nsresult nsNativeAppSupportWin::OpenWindow( const char*urlstr, const char *args ) { - nsresult rv; - static NS_DEFINE_CID( kAppShellServiceCID, NS_APPSHELL_SERVICE_CID ); - NS_WITH_SERVICE(nsIAppShellService, appShellService, kAppShellServiceCID, &rv) - if ( NS_SUCCEEDED( rv ) ) { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - rv = appShellService->GetHiddenWindowAndJSContext( getter_AddRefs( hiddenWindow ), - &jsContext ); - if ( NS_SUCCEEDED( rv ) ) { - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "ssss", - urlstr, - "_blank", - "chrome,dialog=no,all", - args ); - if( argv ) { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 4, - getter_AddRefs( newWindow ) ); - JS_PopArguments( jsContext, stackPtr ); - } - } else { - #ifdef MOZ_DEBUG_DDE - printf( "GetHiddenWindowAndJSContext failed, rv=0x%08X\n", (int)rv ); - #endif - } - } - return rv; + + nsresult rv = NS_ERROR_FAILURE; + + nsCOMPtr wwatch(do_GetService("@mozilla/embedcomp/window-watcher;1")); + nsCOMPtr sarg(do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID)); + if (sarg) + sarg->SetData(args); + + if (wwatch && sarg) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, urlstr, "_blank", "chrome,dialog=no,all", + sarg, getter_AddRefs(newWindow)); +#ifdef MOZ_DEBUG_DDE + } else { + printf("Get WindowWatcher (or create string) failed\n"); +#endif + } + return rv; } diff --git a/mozilla/xpfe/browser/src/Makefile.in b/mozilla/xpfe/browser/src/Makefile.in index 1f32bb17abb..ef928f07060 100644 --- a/mozilla/xpfe/browser/src/Makefile.in +++ b/mozilla/xpfe/browser/src/Makefile.in @@ -29,7 +29,7 @@ include $(DEPTH)/config/autoconf.mk MODULE = browser LIBRARY_NAME = mozbrwsr IS_COMPONENT = 1 -REQUIRES = xpcom string webshell necko shistory widget layout docshell appshell dom js timer uriloader locale pref editor appcomps rdf webbrwsr uconv chardet txmgr gfx2 mozucth mozcomps +REQUIRES = xpcom string webshell necko shistory widget layout docshell appshell dom js timer uriloader locale pref editor appcomps rdf webbrwsr uconv chardet txmgr gfx2 mozucth mozcomps windowwatcher CPPSRCS = nsBrowserInstance.cpp diff --git a/mozilla/xpfe/browser/src/nsBrowserInstance.cpp b/mozilla/xpfe/browser/src/nsBrowserInstance.cpp index ff10fed9292..2eb1dd11277 100644 --- a/mozilla/xpfe/browser/src/nsBrowserInstance.cpp +++ b/mozilla/xpfe/browser/src/nsBrowserInstance.cpp @@ -60,6 +60,7 @@ #include "nsIDocShell.h" #include "nsIWebShellWindow.h" #include "nsIWebBrowserChrome.h" +#include "nsIWindowWatcher.h" #include "nsCOMPtr.h" #include "nsXPIDLString.h" @@ -1451,39 +1452,13 @@ NS_IMETHODIMP nsBrowserContentHandler::HandleContent(const char * aContentType, nsISupports * aWindowContext, nsIRequest * aRequest) { - // we need a dom window to create the new browser window...in order - // to do this, we need to get the window mediator service and ask it for a dom window + // create a new browser window to handle the content NS_ENSURE_ARG(aRequest); - nsCOMPtr parentWindow; - JSContext* jsContext = nsnull; + nsCOMPtr parentWindow; if (aWindowContext) - { parentWindow = do_GetInterface(aWindowContext); - if (parentWindow) - { - nsCOMPtr sgo; - sgo = do_QueryInterface( parentWindow ); - if (sgo) - { - nsCOMPtr scriptContext; - sgo->GetContext( getter_AddRefs( scriptContext ) ); - if (scriptContext) - jsContext = (JSContext*)scriptContext->GetNativeContext(); - } - } - } - - // if we still don't have a parent window, try to use the hidden window... - if (!parentWindow || !jsContext) - { - nsCOMPtr windowService (do_GetService(kAppShellServiceCID)); - NS_ENSURE_SUCCESS(windowService->GetHiddenWindowAndJSContext(getter_AddRefs(parentWindow), &jsContext), - NS_ERROR_FAILURE); - } - - nsCOMPtr aChannel = do_QueryInterface(aRequest); if (!aChannel) return NS_ERROR_FAILURE; @@ -1493,12 +1468,6 @@ NS_IMETHODIMP nsBrowserContentHandler::HandleContent(const char * aContentType, nsXPIDLCString spec; uri->GetSpec(getter_Copies(spec)); - void* mark; - jsval* argv; - - nsAutoString value; - value.AssignWithConversion(spec); - // we only want to pass in the window target name if it isn't something like _new or _blank.... // i.e. only real names like "my window", etc... const char * windowTarget = aWindowTarget; @@ -1509,12 +1478,12 @@ NS_IMETHODIMP nsBrowserContentHandler::HandleContent(const char * aContentType, !nsCRT::strcasecmp(aWindowTarget, "_content")) windowTarget = ""; - argv = JS_PushArguments(jsContext, &mark, "Ws", value.GetUnicode(), windowTarget); - NS_ENSURE_TRUE(argv, NS_ERROR_FAILURE); - - nsCOMPtr newWindow; - parentWindow->Open(jsContext, argv, 2, getter_AddRefs(newWindow)); - JS_PopArguments(jsContext, mark); + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { + nsCOMPtr newWindow; + wwatch->OpenWindow(parentWindow, spec, windowTarget, 0, 0, + getter_AddRefs(newWindow)); + } // now abort the current channel load... aRequest->Cancel(NS_BINDING_ABORTED); diff --git a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp index 4dbbeb8881b..820740aa124 100644 --- a/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp +++ b/mozilla/xpfe/components/bookmarks/src/nsBookmarksService.cpp @@ -2427,39 +2427,11 @@ nsBookmarksService::OnStopRequest(nsIRequest* request, nsISupports *ctxt, NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv); if (NS_SUCCEEDED(rv)) { - // get a parent window for the new browser window - nsCOMPtr parent; - appShell->GetHiddenWindow(getter_AddRefs(parent)); - - // convert it to a DOMWindow - nsCOMPtr docShell; - if (parent) + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { - parent->GetDocShell(getter_AddRefs(docShell)); - } - nsCOMPtr domParent(do_GetInterface(docShell)); - nsCOMPtr sgo(do_QueryInterface(domParent)); - - nsCOMPtr context; - if (sgo) - { - sgo->GetContext(getter_AddRefs(context)); - } - if (context) - { - JSContext *jsContext = (JSContext*)context->GetNativeContext(); - if (jsContext) - { - void *stackPtr; - jsval *argv = JS_PushArguments(jsContext, &stackPtr, "s", uri); - if (argv) - { - // open the window - nsIDOMWindowInternal *newWindow; - domParent->Open(jsContext, argv, 1, &newWindow); - JS_PopArguments(jsContext, stackPtr); - } - } + nsCOMPtr newWindow; + wwatch->OpenWindow(0, uri, "_blank", 0, 0, getter_AddRefs(newWindow)); } } } diff --git a/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp b/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp index 487fa73ebd5..45c59b08358 100644 --- a/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp +++ b/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp @@ -40,7 +40,9 @@ static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); #include "nsIWebShellWindow.h" #include "nsIWebShell.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" #include "jsapi.h" #include "nsAEEventHandling.h" @@ -282,35 +284,19 @@ OSErr nsMacCommandLine::HandlePrintOneDoc(const FSSpec& inFileSpec, OSType fileT nsresult nsMacCommandLine::OpenWindow(const char *chrome, const PRUnichar *url) //---------------------------------------------------------------------------------------- { + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + nsCOMPtr urlWrapper(do_CreateInstance(NS_SUPPORTS_WSTRING_CONTRACTID)); + if (!wwatch || !urlWrapper) + return NS_ERROR_FAILURE; + + urlWrapper->SetData(url); + + nsCOMPtr newWindow; nsresult rv; - NS_WITH_SERVICE(nsIAppShellService, appShellService, kAppShellServiceCID, &rv) - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr hiddenWindow; - JSContext *jsContext; - rv = appShellService->GetHiddenWindowAndJSContext( getter_AddRefs( hiddenWindow ), - &jsContext ); - if (NS_SUCCEEDED(rv)) - { - void *stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "sssW", - chrome, - "_blank", - "chrome,dialog=no,all", - url ); - if(argv) - { - nsCOMPtr newWindow; - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 4, - getter_AddRefs( newWindow ) ); - JS_PopArguments( jsContext, stackPtr ); - } - } - } + rv = wwatch->OpenWindow(0, chrome, "_blank", + "chrome,dialog=no,all", urlWrapper, + getter_AddRefs(newWindow)); + return rv; } diff --git a/mozilla/xpinstall/src/nsInstallProgressDialog.cpp b/mozilla/xpinstall/src/nsInstallProgressDialog.cpp index 0fbf8348940..f96b74a4d0d 100644 --- a/mozilla/xpinstall/src/nsInstallProgressDialog.cpp +++ b/mozilla/xpinstall/src/nsInstallProgressDialog.cpp @@ -26,22 +26,23 @@ #include "nsInstallProgressDialog.h" -#include "nsIAppShellComponentImpl.h" #include "nsIScriptGlobalObject.h" -#include "nsIDOMWindowInternal.h" +#include "nsIDOMWindow.h" #include "nsIServiceManager.h" #include "nsIDocumentViewer.h" #include "nsIContent.h" #include "nsINameSpaceManager.h" #include "nsIContentViewer.h" #include "nsIDOMElement.h" +#include "nsISupportsArray.h" +#include "nsISupportsPrimitives.h" +#include "nsIWindowWatcher.h" #include "nsNetUtil.h" #include "nsIURL.h" #include "nsPIXPIManagerCallbacks.h" static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); -static NS_DEFINE_IID( kAppShellServiceCID, NS_APPSHELL_SERVICE_CID ); nsInstallProgressDialog::nsInstallProgressDialog(nsPIXPIManagerCallbacks *aManager) : mManager(aManager) @@ -140,42 +141,36 @@ nsInstallProgressDialog::LogComment(const PRUnichar* comment) NS_IMETHODIMP nsInstallProgressDialog::Open(nsIDialogParamBlock* ioParamBlock) { - nsresult rv = NS_OK; - - // Now do the stuff to create a window and pass the JS args to it. - NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv ); - if ( NS_SUCCEEDED( rv ) ) - { - nsCOMPtr hiddenWindow; - JSContext* jsContext; - rv = appShell->GetHiddenWindowAndJSContext( getter_AddRefs(hiddenWindow), &jsContext); - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr mgr = do_QueryInterface(mManager); + nsresult rv = NS_ERROR_FAILURE; - void* stackPtr; - jsval *argv = JS_PushArguments( jsContext, - &stackPtr, - "sss%ip%ip", - "chrome://communicator/content/xpinstall/xpistatus.xul", - "_blank", - "chrome,centered,titlebar,resizable", - (const nsIID*)&NS_GET_IID(nsIDialogParamBlock), - (nsISupports*)ioParamBlock, - (const nsIID*)&NS_GET_IID(nsPIXPIManagerCallbacks), - (nsISupports*)mgr - ); - if (argv) - { - rv = hiddenWindow->OpenDialog( jsContext, - argv, - 5, - getter_AddRefs( mWindow )); - } - JS_PopArguments( jsContext, stackPtr); - } + // build parameter list + nsCOMPtr params(do_CreateInstance(NS_SUPPORTSARRAY_CONTRACTID)); + nsCOMPtr pbwrap(do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID)); + if (pbwrap) { + pbwrap->SetData(ioParamBlock); + pbwrap->SetDataIID(&NS_GET_IID(nsIDialogParamBlock)); + } + nsCOMPtr mgr = do_QueryInterface(mManager); + nsCOMPtr callbackwrap(do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID)); + if (callbackwrap) { + callbackwrap->SetData(mgr); + callbackwrap->SetDataIID(&NS_GET_IID(nsPIXPIManagerCallbacks)); + } + if (params && pbwrap && callbackwrap) { + params->AppendElement(pbwrap); + params->AppendElement(callbackwrap); + + // then open the window + nsCOMPtr wwatch(do_GetService("@mozilla.org/embedcomp/window-watcher;1")); + if (wwatch) { + nsCOMPtr newWindow; + rv = wwatch->OpenWindow(0, "chrome://communicator/content/xpinstall/xpistatus.xul", + "_blank", "chrome,centerscreen,titlebar,resizable", + params, getter_AddRefs(newWindow)); } - return rv; + } + + return rv; }