Mercurial > projects > dwt-linux
diff dwt/browser.old/PromptService2.d @ 288:4ee8c4237614
old branches... commit by mistake
author | John Reimer<terminal.node@gmail.com> |
---|---|
date | Tue, 05 Aug 2008 18:00:50 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwt/browser.old/PromptService2.d Tue Aug 05 18:00:50 2008 -0700 @@ -0,0 +1,701 @@ +/******************************************************************************* + * Copyright (c) 2003, 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +module dwt.browser.PromptService2; + + +import Utf = tango.text.convert.Utf; + +import dwt.dwthelper.utils; + +import dwt.DWT; + +import dwt.internal.Compatibility; + +import dwt.internal.mozilla.nsEmbedString; +import dwt.internal.mozilla.nsIAuthInformation; +import dwt.internal.mozilla.nsIChannel; +import dwt.internal.mozilla.nsID; +import dwt.internal.mozilla.nsIDOMWindow; +import dwt.internal.mozilla.nsIEmbeddingSiteWindow; +import dwt.internal.mozilla.nsIMemory; +import dwt.internal.mozilla.nsIPromptService; +import dwt.internal.mozilla.nsIPromptService2; +import dwt.internal.mozilla.nsIServiceManager; +import dwt.internal.mozilla.nsISupports; +import dwt.internal.mozilla.nsIURI; +import dwt.internal.mozilla.nsIWebBrowserChrome; +import dwt.internal.mozilla.nsIWindowWatcher; + +import nsStringAPI = dwt.internal.mozilla.nsStringAPI; + +import dwt.widgets.MessageBox; +import dwt.widgets.Shell; + +class PromptService2 +{ + private nsrefcnt _refCount = 0; + + /************************************************************************** + + **************************************************************************/ + + this () + { + } + + /************************************************************************** + + **************************************************************************/ + + nsrefcnt AddRef () + { + _refCount++; + return _refCount; + } + + /************************************************************************** + + **************************************************************************/ + + nsresult QueryInterface ( ref nsIID riid, void** ppvObject ) + { + if (riid is null || ppvObject is null) + return NS_ERROR_NO_INTERFACE; + + if (riid == nsISupports.IID)) + { + *ppvObject = cast(void*)cast(nsISupports)this; + AddRef (); + return NS_OK; + } + + if ( riid == nsIPromptService.IID ) + { + *ppvObject = cast(void*)cast(nsIPromptService)this; + AddRef (); + return NS_OK; + } + + if ( riid == nsIPromptService2.IID) + { + *ppvObject = cast(void*)cast(nsIPromptService2)this; + AddRef (); + return NS_OK; + } + + *ppvObject = null; + return NS_ERROR_NO_INTERFACE; + } + + /************************************************************************** + + **************************************************************************/ + + nsrefcnt Release () + { + _refCount--; + if (_refCount is 0) + return 0; + return refCount; + } + + /************************************************************************** + + **************************************************************************/ + + Browser getBrowser (nsIDOMWindow aDOMWindow) + { + if (aDOMWindow is null) + return null; + + nsIServiceManager serviceManager; + void* result; + + nsresult rc = XPCOM.NS_GetServiceManager (&serviceManager); + + if (rc !is NS_OK) + Mozilla.error (rc); + if (serviceManager is null) + Mozilla.error (NS_NOINTERFACE); + + nsIWindowWatcher windowWatcher; + rc = serviceManager.GetServiceByContractID (aContractID, nsIWindowWatcher.IID, &windowWatcher); + + if (rc !is NS_OK) + Mozilla.error(rc); + if (windowWatcher is null) + Mozilla.error (NS_NOINTERFACE); + + serviceManager.Release (); + + /* the chrome will only be answered for the top-level nsIDOMWindow */ + auto window = aDOMWindow; + + rc = window.GetTop (&result); + + if (rc !is NS_OK) + Mozilla.error (rc); + if (result is null) + Mozilla.error (NS_NOINTERFACE); + + aDOMWindow = result; + + rc = windowWatcher.GetChromeForWindow (aDOMWindow, &result); + + if (rc !is NS_OK) + Mozilla.error (rc); + if (result is null) + Mozilla.error (NS_NOINTERFACE); + + windowWatcher.Release (); + + // This assignment should work if "result" tested valid in prior tests + auto webBrowserChrome = cast(nsIWebBrowserChrome) result; + + rc = webBrowserChrome.QueryInterface (nsIEmbeddingSiteWindow.IID, &result); + + if (rc !is NS_OK) + Mozilla.error (rc); + if (result is null) + Mozilla.error (NS_NOINTERFACE); + + webBrowserChrome.Release (); + + auto embeddingSiteWindow = cast(nsIEmbeddingSiteWindow) result; + + rc = embeddingSiteWindow.GetSiteWindow (&result); + + if (rc !is NS_OK) + Mozilla.error (rc); + if (result is null) + Mozilla.error (NS_NOINTERFACE); + + embeddingSiteWindow.Release (); + + return Mozilla.findBrowser (result); + } + + /************************************************************************** + + **************************************************************************/ + + String getLabel (int buttonFlag, int index, PRUnichar* buttonTitle) + { + String label = null; + int flag = (buttonFlag & (0xff * index)) / index; + + switch (flag) + { + case nsIPromptService.BUTTON_TITLE_CANCEL : + label = DWT.getMessage ("SWT_Cancel"); + break; + case nsIPromptService.BUTTON_TITLE_NO : + label = DWT.getMessage ("SWT_No"); + break; + case nsIPromptService.BUTTON_TITLE_OK : + label = DWT.getMessage ("SWT_OK"); + break; + case nsIPromptService.BUTTON_TITLE_SAVE : + label = DWT.getMessage ("SWT_Save"); + break; + case nsIPromptService.BUTTON_TITLE_YES : + label = DWT.getMessage ("SWT_Yes"); + break; + case nsIPromptService.BUTTON_TITLE_IS_STRING : + { + int span = nsStringAPI.strlen_PRUnichar (buttonTitle); + label = Utf.toString( buttonTitle[0..span] ); + } + } + return label; + } + + /************************************************************************** + + nsIPromptService + + **************************************************************************/ + + nsresult Alert (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText) + { + Browser browser = getBrowser (aParent); + + int span = nsStringAPI.strlen_PRUnichar( aDialogTitle ); + String titleLabel = Utf.toString (aDialogTitle[0..span]); + + span = nsStringAPI.strlen_PRUnichar( aText ); + String textLabel = Utf.toString( aText[0..span] ); + + Shell shell = browser is null ? new Shell () : browser.getShell (); + + auto messageBox = new MessageBox (shell, DWT.OK | DWT.ICON_WARNING); + messageBox.setText (titleLabel); + messageBox.setMessage (textLabel); + messageBox.open (); + + return NS_OK; + } + + /************************************************************************** + + **************************************************************************/ + + nsresult AlertCheck ( nsIDOMWindow aParent, PRUnichar* aDialogTitle, + PRUnichar* aText, PRUnichar* aCheckMsg, PRBool* aCheckState ) + { + auto browser = getBrowser (aParent); + + int span = nsStringAPI.strlen_PRUnichar( aDialogTitle ); + String titleLabel = Utf.toString( aDialogTitle[0..span] ); + + span = nsStringAPI.strlen_PRUnichar( aText ); + String textLabel = Utf.toString( aText[0..span] ); + + span = nsStringAPI.strlen_PRUnichar( aCheckMsg ); + String checkLabel = Utf.toString( aCheckMsg[0..span] ); + + auto shell = browser is null ? new Shell () : browser.getShell (); + auto dialog = new PromptDialog( shell ); + PRBool check = *aCheckState; + dialog.alertCheck( titleLabel, textLabel, checkLabel, check ); + return NS_OK; + } + + /************************************************************************** + + **************************************************************************/ + + int AsyncPromptAuth(int /*long*/ aParent, int /*long*/ aChannel, int /*long*/ aCallback, int /*long*/ aContext, int level, int /*long*/ authInfo, int /*long*/ checkboxLabel, int /*long*/ checkValue, int /*long*/ _retval) + { + return NS_ERROR_NOT_IMPLEMENTED; + } + + /************************************************************************** + + **************************************************************************/ + +int Confirm (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ _retval) { + Browser browser = getBrowser (aParent); + + int length = XPCOM.strlen_PRUnichar (aDialogTitle); + char[] dest = new char[length]; + XPCOM.memmove (dest, aDialogTitle, length * 2); + String titleLabel = new String (dest); + + length = XPCOM.strlen_PRUnichar (aText); + dest = new char[length]; + XPCOM.memmove (dest, aText, length * 2); + String textLabel = new String (dest); + + Shell shell = browser is null ? new Shell () : browser.getShell (); + MessageBox messageBox = new MessageBox (shell, DWT.OK | DWT.CANCEL | DWT.ICON_QUESTION); + messageBox.setText (titleLabel); + messageBox.setMessage (textLabel); + int id = messageBox.open (); + int[] result = {id is DWT.OK ? 1 : 0}; + XPCOM.memmove (_retval, result, 4); + return XPCOM.NS_OK; +} + + /************************************************************************** + + **************************************************************************/ + +int ConfirmCheck (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) { + return XPCOM.NS_ERROR_NOT_IMPLEMENTED; +} + + /************************************************************************** + + **************************************************************************/ + +int ConfirmEx (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int aButtonFlags, int /*long*/ aButton0Title, int /*long*/ aButton1Title, int /*long*/ aButton2Title, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) { + Browser browser = getBrowser (aParent); + + int length = XPCOM.strlen_PRUnichar (aDialogTitle); + char[] dest = new char[length]; + XPCOM.memmove (dest, aDialogTitle, length * 2); + String titleLabel = new String (dest); + + length = XPCOM.strlen_PRUnichar (aText); + dest = new char[length]; + XPCOM.memmove (dest, aText, length * 2); + String textLabel = new String (dest); + + String checkLabel = null; + if (aCheckMsg !is 0) { + length = XPCOM.strlen_PRUnichar (aCheckMsg); + dest = new char[length]; + XPCOM.memmove (dest, aCheckMsg, length * 2); + checkLabel = new String (dest); + } + + String button0Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_0, aButton0Title); + String button1Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_1, aButton1Title); + String button2Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_2, aButton2Title); + + int defaultIndex = 0; + if ((aButtonFlags & nsIPromptService.BUTTON_POS_1_DEFAULT) !is 0) { + defaultIndex = 1; + } else if ((aButtonFlags & nsIPromptService.BUTTON_POS_2_DEFAULT) !is 0) { + defaultIndex = 2; + } + + Shell shell = browser is null ? new Shell () : browser.getShell (); + PromptDialog dialog = new PromptDialog (shell); + int[] check = new int[1], result = new int[1]; + if (aCheckState !is 0) XPCOM.memmove (check, aCheckState, 4); + dialog.confirmEx (titleLabel, textLabel, checkLabel, button0Label, button1Label, button2Label, defaultIndex, check, result); + if (aCheckState !is 0) XPCOM.memmove (aCheckState, check, 4); + XPCOM.memmove (_retval, result, 4); + return XPCOM.NS_OK; +} + + /************************************************************************** + + **************************************************************************/ + +int Prompt (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aValue, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) { + Browser browser = getBrowser (aParent); + String titleLabel = null, textLabel, checkLabel = null; + String[] valueLabel = new String[1]; + char[] dest; + int length; + if (aDialogTitle !is 0) { + length = XPCOM.strlen_PRUnichar (aDialogTitle); + dest = new char[length]; + XPCOM.memmove (dest, aDialogTitle, length * 2); + titleLabel = new String (dest); + } + + length = XPCOM.strlen_PRUnichar (aText); + dest = new char[length]; + XPCOM.memmove (dest, aText, length * 2); + textLabel = new String (dest); + + int /*long*/[] valueAddr = new int /*long*/[1]; + XPCOM.memmove (valueAddr, aValue, C.PTR_SIZEOF); + if (valueAddr[0] !is 0) { + length = XPCOM.strlen_PRUnichar (valueAddr[0]); + dest = new char[length]; + XPCOM.memmove (dest, valueAddr[0], length * 2); + valueLabel[0] = new String (dest); + } + + if (aCheckMsg !is 0) { + length = XPCOM.strlen_PRUnichar (aCheckMsg); + if (length > 0) { + dest = new char[length]; + XPCOM.memmove (dest, aCheckMsg, length * 2); + checkLabel = new String (dest); + } + } + + Shell shell = browser is null ? new Shell () : browser.getShell (); + PromptDialog dialog = new PromptDialog (shell); + int[] check = new int[1], result = new int[1]; + if (aCheckState !is 0) XPCOM.memmove (check, aCheckState, 4); + dialog.prompt (titleLabel, textLabel, checkLabel, valueLabel, check, result); + + XPCOM.memmove (_retval, result, 4); + if (result[0] is 1) { + /* + * User selected OK. User name and password are returned as PRUnichar values. Any default + * value that we override must be freed using the nsIMemory service. + */ + int cnt, size; + int /*long*/ ptr; + char[] buffer; + int /*long*/[] result2 = new int /*long*/[1]; + if (valueLabel[0] !is null) { + cnt = valueLabel[0].length (); + buffer = new char[cnt + 1]; + valueLabel[0].getChars (0, cnt, buffer, 0); + size = buffer.length * 2; + ptr = C.malloc (size); + XPCOM.memmove (ptr, buffer, size); + XPCOM.memmove (aValue, new int /*long*/[] {ptr}, C.PTR_SIZEOF); + + if (valueAddr[0] !is 0) { + int rc = XPCOM.NS_GetServiceManager (result2); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + + nsIServiceManager serviceManager = new nsIServiceManager (result2[0]); + result2[0] = 0; + byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true); + rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result2); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + serviceManager.Release (); + + nsIMemory memory = new nsIMemory (result2[0]); + result2[0] = 0; + memory.Free (valueAddr[0]); + memory.Release (); + } + } + } + if (aCheckState !is 0) XPCOM.memmove (aCheckState, check, 4); + return XPCOM.NS_OK; +} + + /************************************************************************** + + **************************************************************************/ + +int PromptAuth(int /*long*/ aParent, int /*long*/ aChannel, int level, int /*long*/ authInfo, int /*long*/ checkboxLabel, int /*long*/ checkboxValue, int /*long*/ _retval) { + Browser browser = getBrowser (aParent); + String checkLabel = null; + int[] checkValue = new int[1]; + String[] userLabel = new String[1], passLabel = new String[1]; + + String title = DWT.getMessage ("SWT_Authentication_Required"); //$NON-NLS-1$ + + if (checkboxLabel !is 0 && checkboxValue !is 0) { + int length = XPCOM.strlen_PRUnichar (checkboxLabel); + char[] dest = new char[length]; + XPCOM.memmove (dest, checkboxLabel, length * 2); + checkLabel = new String (dest); + XPCOM.memmove (checkValue, checkboxValue, 4); /* PRBool */ + } + + /* get initial username and password values */ + + nsIAuthInformation auth = new nsIAuthInformation (authInfo); + + int /*long*/ ptr = XPCOM.nsEmbedString_new (); + int rc = auth.GetUsername (ptr); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + int length = XPCOM.nsEmbedString_Length (ptr); + int /*long*/ buffer = XPCOM.nsEmbedString_get (ptr); + char[] chars = new char[length]; + XPCOM.memmove (chars, buffer, length * 2); + userLabel[0] = new String (chars); + XPCOM.nsEmbedString_delete (ptr); + + ptr = XPCOM.nsEmbedString_new (); + rc = auth.GetPassword (ptr); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + length = XPCOM.nsEmbedString_Length (ptr); + buffer = XPCOM.nsEmbedString_get (ptr); + chars = new char[length]; + XPCOM.memmove (chars, buffer, length * 2); + passLabel[0] = new String (chars); + XPCOM.nsEmbedString_delete (ptr); + + /* compute the message text */ + + ptr = XPCOM.nsEmbedString_new (); + rc = auth.GetRealm (ptr); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + length = XPCOM.nsEmbedString_Length (ptr); + buffer = XPCOM.nsEmbedString_get (ptr); + chars = new char[length]; + XPCOM.memmove (chars, buffer, length * 2); + String realm = new String (chars); + XPCOM.nsEmbedString_delete (ptr); + + nsIChannel channel = new nsIChannel (aChannel); + int /*long*/[] uri = new int /*long*/[1]; + rc = channel.GetURI (uri); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (uri[0] is 0) Mozilla.error (XPCOM.NS_NOINTERFACE); + + nsIURI nsURI = new nsIURI (uri[0]); + int /*long*/ aSpec = XPCOM.nsEmbedCString_new (); + rc = nsURI.GetHost (aSpec); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + length = XPCOM.nsEmbedCString_Length (aSpec); + buffer = XPCOM.nsEmbedCString_get (aSpec); + byte[] bytes = new byte[length]; + XPCOM.memmove (bytes, buffer, length); + XPCOM.nsEmbedCString_delete (aSpec); + String host = new String (bytes); + nsURI.Release (); + + String message; + if (realm.length () > 0 && host.length () > 0) { + message = Compatibility.getMessage ("SWT_Enter_Username_and_Password", new String[] {realm, host}); //$NON-NLS-1$ + } else { + message = ""; //$NON-NLS-1$ + } + + /* open the prompter */ + Shell shell = browser is null ? new Shell () : browser.getShell (); + PromptDialog dialog = new PromptDialog (shell); + int[] result = new int[1]; + dialog.promptUsernameAndPassword (title, message, checkLabel, userLabel, passLabel, checkValue, result); + + XPCOM.memmove (_retval, result, 4); /* PRBool */ + if (result[0] is 1) { /* User selected OK */ + nsEmbedString string = new nsEmbedString (userLabel[0]); + rc = auth.SetUsername(string.getAddress ()); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + string.dispose (); + + string = new nsEmbedString (passLabel[0]); + rc = auth.SetPassword(string.getAddress ()); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + string.dispose (); + } + + if (checkboxValue !is 0) XPCOM.memmove (checkboxValue, checkValue, 4); /* PRBool */ + return XPCOM.NS_OK; +} + + /************************************************************************** + + **************************************************************************/ + +int PromptUsernameAndPassword (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aUsername, int /*long*/ aPassword, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) { + Browser browser = getBrowser (aParent); + String titleLabel, textLabel, checkLabel = null; + String[] userLabel = new String[1], passLabel = new String[1]; + char[] dest; + int length; + if (aDialogTitle !is 0) { + length = XPCOM.strlen_PRUnichar (aDialogTitle); + dest = new char[length]; + XPCOM.memmove (dest, aDialogTitle, length * 2); + titleLabel = new String (dest); + } else { + titleLabel = DWT.getMessage ("SWT_Authentication_Required"); //$NON-NLS-1$ + } + + length = XPCOM.strlen_PRUnichar (aText); + dest = new char[length]; + XPCOM.memmove (dest, aText, length * 2); + textLabel = new String (dest); + + int /*long*/[] userAddr = new int /*long*/[1]; + XPCOM.memmove (userAddr, aUsername, C.PTR_SIZEOF); + if (userAddr[0] !is 0) { + length = XPCOM.strlen_PRUnichar (userAddr[0]); + dest = new char[length]; + XPCOM.memmove (dest, userAddr[0], length * 2); + userLabel[0] = new String (dest); + } + + int /*long*/[] passAddr = new int /*long*/[1]; + XPCOM.memmove (passAddr, aPassword, C.PTR_SIZEOF); + if (passAddr[0] !is 0) { + length = XPCOM.strlen_PRUnichar (passAddr[0]); + dest = new char[length]; + XPCOM.memmove (dest, passAddr[0], length * 2); + passLabel[0] = new String (dest); + } + + if (aCheckMsg !is 0) { + length = XPCOM.strlen_PRUnichar (aCheckMsg); + if (length > 0) { + dest = new char[length]; + XPCOM.memmove (dest, aCheckMsg, length * 2); + checkLabel = new String (dest); + } + } + + Shell shell = browser is null ? new Shell () : browser.getShell (); + PromptDialog dialog = new PromptDialog (shell); + int[] check = new int[1], result = new int[1]; + if (aCheckState !is 0) XPCOM.memmove (check, aCheckState, 4); /* PRBool */ + dialog.promptUsernameAndPassword (titleLabel, textLabel, checkLabel, userLabel, passLabel, check, result); + + XPCOM.memmove (_retval, result, 4); /* PRBool */ + if (result[0] is 1) { + /* + * User selected OK. User name and password are returned as PRUnichar values. Any default + * value that we override must be freed using the nsIMemory service. + */ + int cnt, size; + int /*long*/ ptr; + char[] buffer; + int /*long*/[] result2 = new int /*long*/[1]; + if (userLabel[0] !is null) { + cnt = userLabel[0].length (); + buffer = new char[cnt + 1]; + userLabel[0].getChars (0, cnt, buffer, 0); + size = buffer.length * 2; + ptr = C.malloc (size); + XPCOM.memmove (ptr, buffer, size); + XPCOM.memmove (aUsername, new int /*long*/[] {ptr}, C.PTR_SIZEOF); + + if (userAddr[0] !is 0) { + int rc = XPCOM.NS_GetServiceManager (result2); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + + nsIServiceManager serviceManager = new nsIServiceManager (result2[0]); + result2[0] = 0; + byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true); + rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result2); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (result[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + serviceManager.Release (); + + nsIMemory memory = new nsIMemory (result2[0]); + result2[0] = 0; + memory.Free (userAddr[0]); + memory.Release (); + } + } + if (passLabel[0] !is null) { + cnt = passLabel[0].length (); + buffer = new char[cnt + 1]; + passLabel[0].getChars (0, cnt, buffer, 0); + size = buffer.length * 2; + ptr = C.malloc (size); + XPCOM.memmove (ptr, buffer, size); + XPCOM.memmove (aPassword, new int /*long*/[] {ptr}, C.PTR_SIZEOF); + + if (passAddr[0] !is 0) { + int rc = XPCOM.NS_GetServiceManager (result2); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + + nsIServiceManager serviceManager = new nsIServiceManager (result2[0]); + result2[0] = 0; + byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true); + rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result2); + if (rc !is XPCOM.NS_OK) DWT.error (rc); + if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + serviceManager.Release (); + + nsIMemory memory = new nsIMemory (result2[0]); + result2[0] = 0; + memory.Free (passAddr[0]); + memory.Release (); + } + } + } + if (aCheckState !is 0) XPCOM.memmove (aCheckState, check, 4); /* PRBool */ + return XPCOM.NS_OK; +} + + /************************************************************************** + + **************************************************************************/ + + int PromptPassword (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aPassword, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) + { + return NS_ERROR_NOT_IMPLEMENTED; + } + + /************************************************************************** + + **************************************************************************/ + + int Select (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int aCount, int /*long*/ aSelectList, int /*long*/ aOutSelection, int /*long*/ _retval) + { + return XPCOM.NS_ERROR_NOT_IMPLEMENTED; + } + +}