50 #include <nsAutoLock.h>
51 #include <nsComponentManagerUtils.h>
52 #include <nsIDOMWindowInternal.h>
53 #include <nsIProxyObjectManager.h>
54 #include <nsPIPromptService.h>
55 #include <nsServiceManagerUtils.h>
56 #include <nsThreadUtils.h>
65 #define kPromptURL "chrome://global/content/commonDialog.xul"
66 #define kHTMLPromptURL "chrome://global/content/commonDialog.xul?useHTML"
107 const nsAString& aUrl,
108 const nsAString&
aName,
109 const nsAString& aOptions,
116 if (!NS_IsMainThread()) {
118 nsCOMPtr<sbIPrompter> prompter;
119 rv = GetProxiedPrompter(getter_AddRefs(prompter));
120 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
125 rv = prompter->OpenDialog(aParent,
131 if (rv != NS_ERROR_NOT_AVAILABLE)
132 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
133 if (NS_SUCCEEDED(rv))
137 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
138 NS_ENSURE_SUCCESS(rv, rv);
145 nsCOMPtr<nsIDOMWindow> parent = aParent;
147 rv = GetParent(getter_AddRefs(parent));
148 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
153 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
154 return NS_ERROR_NOT_AVAILABLE;
157 nsAutoString
options(aOptions);
158 if (!options.IsEmpty())
159 options.AppendLiteral(
",");
160 options.AppendLiteral(
"centerscreen,chrome,modal,titlebar");
163 rv = mWindowWatcher->OpenWindow(parent,
164 NS_ConvertUTF16toUTF8(aUrl).
get(),
165 NS_ConvertUTF16toUTF8(aName).
get(),
166 NS_ConvertUTF16toUTF8(options).
get(),
169 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
191 const nsAString& aUrl,
192 const nsAString&
aName,
193 const nsAString& aOptions,
200 if (!NS_IsMainThread()) {
202 nsCOMPtr<sbIPrompter> prompter;
203 rv = GetProxiedPrompter(getter_AddRefs(prompter));
204 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
209 rv = prompter->OpenWindow(aParent,
215 if (rv != NS_ERROR_NOT_AVAILABLE)
216 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
217 if (NS_SUCCEEDED(rv))
221 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
222 NS_ENSURE_SUCCESS(rv, rv);
229 nsCOMPtr<nsIDOMWindow> parent = aParent;
231 rv = GetParent(getter_AddRefs(parent));
232 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
237 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
238 return NS_ERROR_NOT_AVAILABLE;
241 rv = mWindowWatcher->OpenWindow(parent,
242 NS_ConvertUTF16toUTF8(aUrl).
get(),
243 NS_ConvertUTF16toUTF8(aName).
get(),
244 NS_ConvertUTF16toUTF8(aOptions).
get(),
247 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
263 if (!NS_IsMainThread()) {
265 nsCOMPtr<sbIPrompter> prompter;
266 rv = GetProxiedPrompter(getter_AddRefs(prompter));
267 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
270 rv = prompter->Cancel();
271 NS_ENSURE_SUCCESS(rv, rv);
277 if (mCurrentWindow) {
278 nsCOMPtr<nsIDOMWindowInternal>
279 window = do_QueryInterface(mCurrentWindow, &rv);
280 NS_ENSURE_SUCCESS(rv, rv);
281 rv = window->Close();
282 NS_ENSURE_SUCCESS(rv, rv);
283 mCurrentWindow = nsnull;
299 sbPrompter::GetParentWindowType(nsAString& aParentWindowType)
301 nsAutoLock autoLock(mPrompterLock);
302 aParentWindowType.Assign(mParentWindowType);
307 sbPrompter::SetParentWindowType(
const nsAString& aParentWindowType)
309 nsAutoLock autoLock(mPrompterLock);
310 mParentWindowType.Assign(aParentWindowType);
321 sbPrompter::GetWaitForWindow(PRBool* aWaitForWindow)
323 NS_ENSURE_ARG_POINTER(aWaitForWindow);
324 nsAutoLock autoLock(mPrompterLock);
325 *aWaitForWindow = mWaitForWindow;
330 sbPrompter::SetWaitForWindow(PRBool aWaitForWindow)
332 nsAutoLock autoLock(mPrompterLock);
333 mWaitForWindow = aWaitForWindow;
343 sbPrompter::GetRenderHTML(PRBool* aRenderHTML)
345 NS_ENSURE_ARG_POINTER(aRenderHTML);
346 nsAutoLock autoLock(mPrompterLock);
347 *aRenderHTML = mRenderHTML;
352 sbPrompter::SetRenderHTML(PRBool aRenderHTML)
354 nsAutoLock autoLock(mPrompterLock);
355 mRenderHTML = aRenderHTML;
375 const PRUnichar* aDialogTitle,
376 const PRUnichar* aText)
381 if (!NS_IsMainThread()) {
383 nsCOMPtr<sbIPrompter> prompter;
384 rv = GetProxiedPrompter(getter_AddRefs(prompter));
385 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
390 rv = prompter->Alert(aParent, aDialogTitle, aText);
391 if (rv != NS_ERROR_NOT_AVAILABLE)
392 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
393 if (NS_SUCCEEDED(rv))
397 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
398 NS_ENSURE_SUCCESS(rv, rv);
405 nsCOMPtr<nsIDOMWindow> parent = aParent;
407 rv = GetParent(getter_AddRefs(parent));
408 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
413 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
414 return NS_ERROR_NOT_AVAILABLE;
417 nsCOMPtr<nsIDialogParamBlock>
418 paramBlock = do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID, &rv);
419 NS_ENSURE_SUCCESS(rv, rv);
420 rv = paramBlock->SetInt(nsPIPromptService::eNumberButtons, 1);
421 NS_ENSURE_SUCCESS(rv, rv);
422 rv = paramBlock->SetString(nsPIPromptService::eMsg, aText);
423 NS_ENSURE_SUCCESS(rv, rv);
424 rv = paramBlock->SetString(nsPIPromptService::eDialogTitle, aDialogTitle);
425 NS_ENSURE_SUCCESS(rv, rv);
426 rv = paramBlock->SetString(nsPIPromptService::eIconClass,
428 NS_ENSURE_SUCCESS(rv, rv);
431 rv = PresentPrompterDialog(parent, paramBlock);
432 NS_ENSURE_SUCCESS(rv, rv);
447 const PRUnichar* aDialogTitle,
448 const PRUnichar* aText,
449 const PRUnichar* aCheckMsg,
455 NS_ENSURE_ARG_POINTER(aCheckState);
458 if (!NS_IsMainThread()) {
460 nsCOMPtr<sbIPrompter> prompter;
461 rv = GetProxiedPrompter(getter_AddRefs(prompter));
462 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
467 rv = prompter->AlertCheck(aParent,
472 if (rv != NS_ERROR_NOT_AVAILABLE)
473 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
474 if (NS_SUCCEEDED(rv))
478 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
479 NS_ENSURE_SUCCESS(rv, rv);
486 nsCOMPtr<nsIDOMWindow> parent = aParent;
488 rv = GetParent(getter_AddRefs(parent));
489 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
494 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
495 return NS_ERROR_NOT_AVAILABLE;
498 nsCOMPtr<nsIDialogParamBlock>
499 paramBlock = do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID, &rv);
500 NS_ENSURE_SUCCESS(rv, rv);
501 rv = paramBlock->SetInt(nsPIPromptService::eNumberButtons, 1);
502 NS_ENSURE_SUCCESS(rv, rv);
503 rv = paramBlock->SetString(nsPIPromptService::eMsg, aText);
504 NS_ENSURE_SUCCESS(rv, rv);
505 rv = paramBlock->SetString(nsPIPromptService::eDialogTitle, aDialogTitle);
506 NS_ENSURE_SUCCESS(rv, rv);
507 rv = paramBlock->SetString(nsPIPromptService::eCheckboxMsg, aCheckMsg);
508 NS_ENSURE_SUCCESS(rv, rv);
509 rv = paramBlock->SetString(nsPIPromptService::eIconClass,
511 NS_ENSURE_SUCCESS(rv, rv);
514 rv = PresentPrompterDialog(parent, paramBlock);
515 NS_ENSURE_SUCCESS(rv, rv);
519 rv = paramBlock->GetInt(nsPIPromptService::eCheckboxState, &checkState);
520 NS_ENSURE_SUCCESS(rv, rv);
521 *aCheckState = checkState ? PR_TRUE : PR_FALSE;
536 const PRUnichar* aDialogTitle,
537 const PRUnichar* aText,
543 NS_ENSURE_ARG_POINTER(_retval);
546 if (!NS_IsMainThread()) {
548 nsCOMPtr<sbIPrompter> prompter;
549 rv = GetProxiedPrompter(getter_AddRefs(prompter));
550 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
555 rv = prompter->Confirm(aParent, aDialogTitle, aText, _retval);
556 if (rv != NS_ERROR_NOT_AVAILABLE)
557 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
558 if (NS_SUCCEEDED(rv))
562 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
563 NS_ENSURE_SUCCESS(rv, rv);
570 nsCOMPtr<nsIDOMWindow> parent = aParent;
572 rv = GetParent(getter_AddRefs(parent));
573 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
578 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
579 return NS_ERROR_NOT_AVAILABLE;
582 nsCOMPtr<nsIDialogParamBlock>
583 paramBlock = do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID, &rv);
584 NS_ENSURE_SUCCESS(rv, rv);
585 rv = paramBlock->SetInt(nsPIPromptService::eNumberButtons, 2);
586 NS_ENSURE_SUCCESS(rv, rv);
587 rv = paramBlock->SetString(nsPIPromptService::eMsg, aText);
588 NS_ENSURE_SUCCESS(rv, rv);
589 rv = paramBlock->SetString(nsPIPromptService::eDialogTitle, aDialogTitle);
590 NS_ENSURE_SUCCESS(rv, rv);
591 rv = paramBlock->SetString(nsPIPromptService::eIconClass,
593 NS_ENSURE_SUCCESS(rv, rv);
596 rv = PresentPrompterDialog(parent, paramBlock);
597 NS_ENSURE_SUCCESS(rv, rv);
600 PRInt32 buttonPressed = 0;
601 rv = paramBlock->GetInt(nsPIPromptService::eButtonPressed, &buttonPressed);
602 NS_ENSURE_SUCCESS(rv, rv);
603 *_retval = buttonPressed ? PR_FALSE : PR_TRUE;
618 const PRUnichar* aDialogTitle,
619 const PRUnichar* aText,
620 const PRUnichar* aCheckMsg,
627 NS_ENSURE_ARG_POINTER(aCheckState);
628 NS_ENSURE_ARG_POINTER(_retval);
631 if (!NS_IsMainThread()) {
633 nsCOMPtr<sbIPrompter> prompter;
634 rv = GetProxiedPrompter(getter_AddRefs(prompter));
635 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
640 rv = prompter->ConfirmCheck(aParent,
646 if (rv != NS_ERROR_NOT_AVAILABLE)
647 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
648 if (NS_SUCCEEDED(rv))
652 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
653 NS_ENSURE_SUCCESS(rv, rv);
660 nsCOMPtr<nsIDOMWindow> parent = aParent;
662 rv = GetParent(getter_AddRefs(parent));
663 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
668 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
669 return NS_ERROR_NOT_AVAILABLE;
672 nsCOMPtr<nsIDialogParamBlock>
673 paramBlock = do_CreateInstance(NS_DIALOGPARAMBLOCK_CONTRACTID, &rv);
674 NS_ENSURE_SUCCESS(rv, rv);
675 rv = paramBlock->SetInt(nsPIPromptService::eNumberButtons, 2);
676 NS_ENSURE_SUCCESS(rv, rv);
677 rv = paramBlock->SetString(nsPIPromptService::eMsg, aText);
678 NS_ENSURE_SUCCESS(rv, rv);
679 rv = paramBlock->SetString(nsPIPromptService::eDialogTitle, aDialogTitle);
680 NS_ENSURE_SUCCESS(rv, rv);
681 rv = paramBlock->SetString(nsPIPromptService::eCheckboxMsg, aCheckMsg);
682 NS_ENSURE_SUCCESS(rv, rv);
683 rv = paramBlock->SetString(nsPIPromptService::eIconClass,
685 NS_ENSURE_SUCCESS(rv, rv);
688 rv = PresentPrompterDialog(parent, paramBlock);
689 NS_ENSURE_SUCCESS(rv, rv);
692 PRInt32 buttonPressed = 0;
693 rv = paramBlock->GetInt(nsPIPromptService::eButtonPressed, &buttonPressed);
694 NS_ENSURE_SUCCESS(rv, rv);
695 *_retval = buttonPressed ? PR_FALSE : PR_TRUE;
699 rv = paramBlock->GetInt(nsPIPromptService::eCheckboxState, &checkState);
700 NS_ENSURE_SUCCESS(rv, rv);
701 *aCheckState = checkState ? PR_TRUE : PR_FALSE;
717 const PRUnichar* aDialogTitle,
718 const PRUnichar* aText,
719 PRUint32 aButtonFlags,
720 const PRUnichar* aButton0Title,
721 const PRUnichar* aButton1Title,
722 const PRUnichar* aButton2Title,
723 const PRUnichar* aCheckMsg,
730 if (!NS_IsMainThread()) {
732 nsCOMPtr<sbIPrompter> prompter;
733 rv = GetProxiedPrompter(getter_AddRefs(prompter));
734 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
739 rv = prompter->ConfirmEx(aParent,
749 if (rv != NS_ERROR_NOT_AVAILABLE)
750 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
751 if (NS_SUCCEEDED(rv))
755 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
756 NS_ENSURE_SUCCESS(rv, rv);
763 nsCOMPtr<nsIDOMWindow> parent = aParent;
765 rv = GetParent(getter_AddRefs(parent));
766 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
771 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
772 return NS_ERROR_NOT_AVAILABLE;
775 rv = mPromptService->ConfirmEx(parent,
785 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
801 const PRUnichar* aDialogTitle,
802 const PRUnichar* aText,
804 const PRUnichar* aCheckMsg,
811 if (!NS_IsMainThread()) {
813 nsCOMPtr<sbIPrompter> prompter;
814 rv = GetProxiedPrompter(getter_AddRefs(prompter));
815 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
820 rv = prompter->Prompt(aParent,
827 if (rv != NS_ERROR_NOT_AVAILABLE)
828 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
829 if (NS_SUCCEEDED(rv))
833 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
834 NS_ENSURE_SUCCESS(rv, rv);
841 nsCOMPtr<nsIDOMWindow> parent = aParent;
843 rv = GetParent(getter_AddRefs(parent));
844 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
849 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
850 return NS_ERROR_NOT_AVAILABLE;
853 rv = mPromptService->Prompt(parent,
860 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
875 sbPrompter::PromptUsernameAndPassword(
nsIDOMWindow* aParent,
876 const PRUnichar* aDialogTitle,
877 const PRUnichar* aText,
878 PRUnichar** aUsername,
879 PRUnichar** aPassword,
880 const PRUnichar* aCheckMsg,
887 if (!NS_IsMainThread()) {
889 nsCOMPtr<sbIPrompter> prompter;
890 rv = GetProxiedPrompter(getter_AddRefs(prompter));
891 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
896 rv = prompter->PromptUsernameAndPassword(aParent,
904 if (rv != NS_ERROR_NOT_AVAILABLE)
905 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
906 if (NS_SUCCEEDED(rv))
910 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
911 NS_ENSURE_SUCCESS(rv, rv);
918 nsCOMPtr<nsIDOMWindow> parent = aParent;
920 rv = GetParent(getter_AddRefs(parent));
921 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
926 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
927 return NS_ERROR_NOT_AVAILABLE;
930 rv = mPromptService->PromptUsernameAndPassword(parent,
938 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
954 const PRUnichar* aDialogTitle,
955 const PRUnichar* aText,
956 PRUnichar** aPassword,
957 const PRUnichar* aCheckMsg,
964 if (!NS_IsMainThread()) {
966 nsCOMPtr<sbIPrompter> prompter;
967 rv = GetProxiedPrompter(getter_AddRefs(prompter));
968 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
973 rv = prompter->PromptPassword(aParent,
980 if (rv != NS_ERROR_NOT_AVAILABLE)
981 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
982 if (NS_SUCCEEDED(rv))
986 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
987 NS_ENSURE_SUCCESS(rv, rv);
994 nsCOMPtr<nsIDOMWindow> parent = aParent;
996 rv = GetParent(getter_AddRefs(parent));
997 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
1002 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
1003 return NS_ERROR_NOT_AVAILABLE;
1006 rv = mPromptService->PromptPassword(parent,
1013 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
1029 const PRUnichar* aDialogTitle,
1030 const PRUnichar* aText,
1032 const PRUnichar** aSelectList,
1033 PRInt32* aOutSelection,
1039 if (!NS_IsMainThread()) {
1041 nsCOMPtr<sbIPrompter> prompter;
1042 rv = GetProxiedPrompter(getter_AddRefs(prompter));
1043 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
1048 rv = prompter->Select(aParent,
1055 if (rv != NS_ERROR_NOT_AVAILABLE)
1056 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
1057 if (NS_SUCCEEDED(rv))
1061 rv = mSBWindowWatcher->WaitForWindow(mParentWindowType);
1062 NS_ENSURE_SUCCESS(rv, rv);
1069 nsCOMPtr<nsIDOMWindow> parent = aParent;
1071 rv = GetParent(getter_AddRefs(parent));
1072 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
1077 if (mWaitForWindow && !mParentWindowType.IsEmpty() && !parent)
1078 return NS_ERROR_NOT_AVAILABLE;
1081 rv = mPromptService->Select(parent,
1088 NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
1121 const PRUnichar*
aData)
1126 if (!strcmp(aTopic,
"sbPrompter::InitOnMainThread")) {
1127 rv = InitOnMainThread();
1128 NS_ENSURE_SUCCESS(rv, rv);
1146 mRenderHTML(PR_FALSE)
1159 nsAutoLock::DestroyLock(mPrompterLock);
1160 mPrompterLock = nsnull;
1174 mPrompterLock = nsAutoLock::NewLock(
"sbPrompter::mPrompterLock");
1175 NS_ENSURE_TRUE(mPrompterLock, NS_ERROR_OUT_OF_MEMORY);
1179 nsAutoLock autoLock(mPrompterLock);
1180 mWaitForWindow = PR_FALSE;
1186 if (NS_IsMainThread()) {
1187 rv = InitOnMainThread();
1188 NS_ENSURE_SUCCESS(rv, rv);
1190 nsCOMPtr<nsIObserver> proxyObserver;
1191 nsCOMPtr<nsIProxyObjectManager>
1192 proxyObjectManager = do_GetService(
"@mozilla.org/xpcomproxy;1", &rv);
1193 NS_ENSURE_SUCCESS(rv, rv);
1194 rv = proxyObjectManager->GetProxyForObject
1195 (NS_PROXY_TO_MAIN_THREAD,
1198 nsIProxyObjectManager::INVOKE_SYNC |
1199 nsIProxyObjectManager::FORCE_PROXY_CREATION,
1200 getter_AddRefs(proxyObserver));
1201 NS_ENSURE_SUCCESS(rv, rv);
1202 rv = proxyObserver->Observe(nsnull,
"sbPrompter::InitOnMainThread", nsnull);
1203 NS_ENSURE_SUCCESS(rv, rv);
1221 sbPrompter::InitOnMainThread()
1226 mWindowWatcher = do_GetService(
"@mozilla.org/embedcomp/window-watcher;1",
1228 NS_ENSURE_SUCCESS(rv, rv);
1232 do_GetService(
"@songbirdnest.com/Songbird/window-watcher;1", &rv);
1233 NS_ENSURE_SUCCESS(rv, rv);
1236 mPromptService = do_GetService(
"@mozilla.org/embedcomp/prompt-service;1",
1238 NS_ENSURE_SUCCESS(rv, rv);
1254 nsCOMPtr<nsIDOMWindow> parent;
1258 nsAutoLock autoLock(mPrompterLock);
1262 PRBool isShuttingDown;
1263 rv = mSBWindowWatcher->GetIsShuttingDown(&isShuttingDown);
1264 NS_ENSURE_SUCCESS(rv, rv);
1266 mWaitForWindow = PR_FALSE;
1270 if (mParentWindowType.Length() > 0) {
1271 rv = mSBWindowWatcher->GetWindow(mParentWindowType, getter_AddRefs(parent));
1272 NS_ENSURE_SUCCESS(rv, rv);
1277 if (!parent && !mWaitForWindow) {
1278 rv = mWindowWatcher->GetActiveWindow(getter_AddRefs(parent));
1279 NS_ENSURE_SUCCESS(rv, rv);
1283 NS_IF_ADDREF(*aParent = parent);
1296 sbPrompter::GetProxiedPrompter(
sbIPrompter** aPrompter)
1299 NS_ASSERTION(aPrompter,
"aPrompter is null");
1305 nsCOMPtr<nsIProxyObjectManager>
1306 proxyObjectManager = do_GetService(
"@mozilla.org/xpcomproxy;1", &rv);
1307 NS_ENSURE_SUCCESS(rv, rv);
1308 rv = proxyObjectManager->GetProxyForObject
1309 (NS_PROXY_TO_MAIN_THREAD,
1312 nsIProxyObjectManager::INVOKE_SYNC |
1313 nsIProxyObjectManager::FORCE_PROXY_CREATION,
1314 (
void**) aPrompter);
1315 NS_ENSURE_SUCCESS(rv, rv);
1330 sbPrompter::PresentPrompterDialog(
nsIDOMWindow* aParent,
1331 nsIDialogParamBlock* aParamBlock)
1336 nsAutoString dialogURISpec;
1340 dialogURISpec.Assign(NS_LITERAL_STRING(
kPromptURL));
1343 nsCOMPtr<nsISupports> extraArgument = do_QueryInterface(aParamBlock, &rv);
1344 NS_ENSURE_SUCCESS(rv, rv);
1345 rv = OpenDialog(aParent,
1347 NS_LITERAL_STRING(
"_blank"),
1348 NS_LITERAL_STRING(
""),
1350 getter_AddRefs(mCurrentWindow));
1351 NS_ENSURE_SUCCESS(rv, rv);
1354 mCurrentWindow = nsnull;
NS_DECL_ISUPPORTS NS_DECL_SBIPROMPTER NS_DECL_NSIPROMPTSERVICE NS_DECL_NSIOBSERVER sbPrompter()
static const char kAlertIconClass[]
NS_IMPL_THREADSAFE_ISUPPORTS3(sbPrompter, sbIPrompter, nsIPromptService, nsIObserver) NS_IMETHODIMP sbPrompter
static const char kQuestionIconClass[]
Songbird Prompter Definitions.
restoreHistoryPrecursor aCount
_updateTextAndScrollDataForFrame aData