Mercurial > projects > dwt-mac
diff dwt/browser/PromptService2.d @ 125:5583f8eeee6c
Synced mozilla with dwt-linux
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Fri, 16 Jan 2009 12:49:08 +0100 |
parents | d8635bb48c7c |
children | 0ba75290f8ce |
line wrap: on
line diff
--- a/dwt/browser/PromptService2.d Fri Jan 16 12:19:08 2009 +0100 +++ b/dwt/browser/PromptService2.d Fri Jan 16 12:49:08 2009 +0100 @@ -1,4 +1,4 @@ -/******************************************************************************* +/******************************************************************************* * 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 @@ -7,156 +7,161 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Port to the D programming language: + * John Reimer <terminal.node@gmail.com> *******************************************************************************/ module dwt.browser.PromptService2; +import tango.stdc.stdlib; +import tango.text.convert.Format; + import dwt.dwthelper.utils; import dwt.DWT; -import dwt.internal.C; + import dwt.internal.Compatibility; -import dwt.internal.mozilla.XPCOM; -import dwt.internal.mozilla.XPCOMObject; + +import XPCOM = dwt.internal.mozilla.XPCOM; + +import dwt.internal.mozilla.Common; 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 dwt.internal.mozilla.nsIAuthPromptCallback; +import dwt.internal.mozilla.nsICancelable; +import dwt.internal.mozilla.nsStringAPI; + import dwt.widgets.MessageBox; import dwt.widgets.Shell; -class PromptService2 { - XPCOMObject supports; - XPCOMObject promptService; - XPCOMObject promptService2; +import dwt.browser.Browser; +import dwt.browser.Mozilla; +import dwt.browser.PromptDialog; + +class PromptService2 : nsIPromptService2 { int refCount = 0; this () { - createCOMInterfaces (); } -int AddRef () { +extern(System) +nsrefcnt AddRef () { refCount++; return refCount; } -void createCOMInterfaces () { - /* Create each of the interfaces that this object implements */ - supports = new XPCOMObject (new int[] {2, 0, 0}) { - public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);} - public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();} - public int /*long*/ method2 (int /*long*/[] args) {return Release ();} - }; - - promptService = new XPCOMObject (new int[] {2, 0, 0, 3, 5, 4, 6, 10, 7, 8, 7, 7}) { - public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);} - public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();} - public int /*long*/ method2 (int /*long*/[] args) {return Release ();} - public int /*long*/ method3 (int /*long*/[] args) {return Alert (args[0], args[1], args[2]);} - public int /*long*/ method4 (int /*long*/[] args) {return AlertCheck (args[0], args[1], args[2], args[3], args[4]);} - public int /*long*/ method5 (int /*long*/[] args) {return Confirm (args[0], args[1], args[2], args[3]);} - public int /*long*/ method6 (int /*long*/[] args) {return ConfirmCheck (args[0], args[1], args[2], args[3], args[4], args[5]);} - public int /*long*/ method7 (int /*long*/[] args) {return ConfirmEx (args[0], args[1], args[2], cast(int)/*64*/args[3], args[4], args[5], args[6], args[7], args[8], args[9]);} - public int /*long*/ method8 (int /*long*/[] args) {return Prompt (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);} - public int /*long*/ method9 (int /*long*/[] args) {return PromptUsernameAndPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);} - public int /*long*/ method10 (int /*long*/[] args) {return PromptPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);} - public int /*long*/ method11 (int /*long*/[] args) {return Select (args[0], args[1], args[2], cast(int)/*64*/args[3], args[4], args[5], args[6]);} - }; - - promptService2 = new XPCOMObject (new int[] {2, 0, 0, 3, 5, 4, 6, 10, 7, 8, 7, 7, 7, 9}) { - public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);} - public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();} - public int /*long*/ method2 (int /*long*/[] args) {return Release ();} - public int /*long*/ method3 (int /*long*/[] args) {return Alert (args[0], args[1], args[2]);} - public int /*long*/ method4 (int /*long*/[] args) {return AlertCheck (args[0], args[1], args[2], args[3], args[4]);} - public int /*long*/ method5 (int /*long*/[] args) {return Confirm (args[0], args[1], args[2], args[3]);} - public int /*long*/ method6 (int /*long*/[] args) {return ConfirmCheck (args[0], args[1], args[2], args[3], args[4], args[5]);} - public int /*long*/ method7 (int /*long*/[] args) {return ConfirmEx (args[0], args[1], args[2], cast(int)/*64*/args[3], args[4], args[5], args[6], args[7], args[8], args[9]);} - public int /*long*/ method8 (int /*long*/[] args) {return Prompt (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);} - public int /*long*/ method9 (int /*long*/[] args) {return PromptUsernameAndPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);} - public int /*long*/ method10 (int /*long*/[] args) {return PromptPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);} - public int /*long*/ method11 (int /*long*/[] args) {return Select (args[0], args[1], args[2], cast(int)/*64*/args[3], args[4], args[5], args[6]);} - public int /*long*/ method12 (int /*long*/[] args) {return PromptAuth (args[0], args[1], cast(int)/*64*/args[2], args[3], args[4], args[5], args[6]);} - public int /*long*/ method13 (int /*long*/[] args) {return AsyncPromptAuth (args[0], args[1], args[2], args[3], cast(int)/*64*/args[4], args[5], args[6], args[7], args[8]);} - }; -} - -void disposeCOMInterfaces () { - if (supports !is null) { - supports.dispose (); - supports = null; - } - if (promptService !is null) { - promptService.dispose (); - promptService = null; - } - if (promptService2 !is null) { - promptService2.dispose (); - promptService2 = null; - } -} - -int /*long*/ getAddress () { - return promptService2.getAddress (); -} - -int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) { - if (riid is 0 || ppvObject is 0) return XPCOM.NS_ERROR_NO_INTERFACE; - nsID guid = new nsID (); - XPCOM.memmove (guid, riid, nsID.sizeof); - - if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) { - XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF); +extern(System) +nsresult QueryInterface (nsID* riid, void** ppvObject) { + if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE; + + if (*riid == nsISupports.IID) { + *ppvObject = cast(void*)cast(nsISupports)this; AddRef (); return XPCOM.NS_OK; } - if (guid.Equals (nsIPromptService.NS_IPROMPTSERVICE_IID)) { - XPCOM.memmove (ppvObject, new int /*long*/[] {promptService.getAddress ()}, C.PTR_SIZEOF); + if (*riid == nsIPromptService.IID) { + *ppvObject = cast(void*)cast(nsIPromptService)this; AddRef (); return XPCOM.NS_OK; } - if (guid.Equals (nsIPromptService2.NS_IPROMPTSERVICE2_IID)) { - XPCOM.memmove (ppvObject, new int /*long*/[] {promptService2.getAddress ()}, C.PTR_SIZEOF); + if (*riid == nsIPromptService2.IID) { + *ppvObject = cast(void*)cast(nsIPromptService2)this; AddRef (); return XPCOM.NS_OK; } - XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF); + *ppvObject = null; return XPCOM.NS_ERROR_NO_INTERFACE; } - -int Release () { + +extern(System) +nsrefcnt Release () { refCount--; - if (refCount is 0) disposeCOMInterfaces (); + //if (refCount is 0) disposeCOMInterfaces (); return refCount; } -Browser getBrowser (int /*long*/ aDOMWindow) { - if (aDOMWindow is 0) return null; - nsIDOMWindow window = new nsIDOMWindow (aDOMWindow); - return Mozilla.findBrowser (window); +extern(D) +Browser getBrowser (nsIDOMWindow aDOMWindow) { + if (aDOMWindow is null) return null; + + //int /*long*/[] result = new int /*long*/[1]; + nsIServiceManager serviceManager; + auto rc = XPCOM.NS_GetServiceManager (&serviceManager); + if (rc !is XPCOM.NS_OK) Mozilla.error (rc); + if (serviceManager is null) Mozilla.error (XPCOM.NS_NOINTERFACE); + + //nsIServiceManager serviceManager = new nsIServiceManager (result[0]); + //result[0] = 0; + //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WINDOWWATCHER_CONTRACTID, true); + nsIWindowWatcher windowWatcher; + rc = serviceManager.GetServiceByContractID (XPCOM.NS_WINDOWWATCHER_CONTRACTID.ptr, &nsIWindowWatcher.IID, cast(void**)&windowWatcher); + if (rc !is XPCOM.NS_OK) Mozilla.error(rc); + if (windowWatcher is null) Mozilla.error (XPCOM.NS_NOINTERFACE); + serviceManager.Release (); + + //nsIWindowWatcher windowWatcher = new nsIWindowWatcher (result[0]); + //result[0] = 0; + /* the chrome will only be answered for the top-level nsIDOMWindow */ + //nsIDOMWindow window = new nsIDOMWindow (aDOMWindow); + nsIDOMWindow top; + rc = aDOMWindow.GetTop (&top); + if (rc !is XPCOM.NS_OK) Mozilla.error (rc); + if (top is null) Mozilla.error (XPCOM.NS_NOINTERFACE); + //aDOMWindow = result[0]; + //result[0] = 0; + nsIWebBrowserChrome webBrowserChrome; + rc = windowWatcher.GetChromeForWindow (top, &webBrowserChrome); + if (rc !is XPCOM.NS_OK) Mozilla.error (rc); + if (webBrowserChrome is null) Mozilla.error (XPCOM.NS_NOINTERFACE); + windowWatcher.Release (); + + //nsIWebBrowserChrome webBrowserChrome = new nsIWebBrowserChrome (result[0]); + //result[0] = 0; + nsIEmbeddingSiteWindow embeddingSiteWindow; + rc = webBrowserChrome.QueryInterface (&nsIEmbeddingSiteWindow.IID, cast(void**)&embeddingSiteWindow); + if (rc !is XPCOM.NS_OK) Mozilla.error (rc); + if (embeddingSiteWindow is null) Mozilla.error (XPCOM.NS_NOINTERFACE); + webBrowserChrome.Release (); + + //nsIEmbeddingSiteWindow embeddingSiteWindow = new nsIEmbeddingSiteWindow (result[0]); + //result[0] = 0; + + void* result; + rc = embeddingSiteWindow.GetSiteWindow (&result); + if (rc !is XPCOM.NS_OK) Mozilla.error (rc); + if (result is null) Mozilla.error (XPCOM.NS_NOINTERFACE); + embeddingSiteWindow.Release (); + + return Mozilla.findBrowser (result); } -String getLabel (int buttonFlag, int index, int /*long*/ buttonTitle) { +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 ("DWT_Cancel"); break; //$NON-NLS-1$ - case nsIPromptService.BUTTON_TITLE_NO : label = DWT.getMessage ("DWT_No"); break; //$NON-NLS-1$ - case nsIPromptService.BUTTON_TITLE_OK : label = DWT.getMessage ("DWT_OK"); break; //$NON-NLS-1$ - case nsIPromptService.BUTTON_TITLE_SAVE : label = DWT.getMessage ("DWT_Save"); break; //$NON-NLS-1$ - case nsIPromptService.BUTTON_TITLE_YES : label = DWT.getMessage ("DWT_Yes"); break; //$NON-NLS-1$ + // TODO: implement with DWT.getMessage - JJR + case nsIPromptService.BUTTON_TITLE_CANCEL : label = "Cancel"; break; //$NON-NLS-1$ + case nsIPromptService.BUTTON_TITLE_NO : label = "No"; break; //$NON-NLS-1$ + case nsIPromptService.BUTTON_TITLE_OK : label = "OK"; break; //$NON-NLS-1$ + case nsIPromptService.BUTTON_TITLE_SAVE : label = "Save"; break; //$NON-NLS-1$ + case nsIPromptService.BUTTON_TITLE_YES : label = "Yes"; break; //$NON-NLS-1$ case nsIPromptService.BUTTON_TITLE_IS_STRING : { - int length = XPCOM.strlen_PRUnichar (buttonTitle); - char[] dest = new char[length]; - XPCOM.memmove (dest, buttonTitle, length * 2); - label = new String (dest); + auto span = XPCOM.strlen_PRUnichar (buttonTitle); + //char[] dest = new char[length]; + //XPCOM.memmove (dest, buttonTitle, length * 2); + label = Utf.toString (buttonTitle[0 .. span]); } } return label; @@ -164,18 +169,19 @@ /* nsIPromptService */ -int Alert (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText) { +extern(System) +nsresult Alert (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText) { 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); + int span = XPCOM.strlen_PRUnichar (aDialogTitle); + //char[] dest = new char[length]; + //XPCOM.memmove (dest, aDialogTitle, length * 2); + String titleLabel = Utf.toString (aDialogTitle[0 .. span]); - length = XPCOM.strlen_PRUnichar (aText); - dest = new char[length]; - XPCOM.memmove (dest, aText, length * 2); - String textLabel = new String (dest); + span = XPCOM.strlen_PRUnichar (aText); + //dest = new char[length]; + //XPCOM.memmove (dest, aText, length * 2); + String textLabel = Utf.toString (aText[0 .. span]); Shell shell = browser is null ? new Shell () : browser.getShell (); MessageBox messageBox = new MessageBox (shell, DWT.OK | DWT.ICON_WARNING); @@ -185,83 +191,88 @@ return XPCOM.NS_OK; } -int AlertCheck (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aCheckMsg, int /*long*/ aCheckState) { +extern(System) +nsresult AlertCheck (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUnichar* aCheckMsg, PRBool* aCheckState) { 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); + int span = XPCOM.strlen_PRUnichar (aDialogTitle); + //char[] dest = new char[length]; + //XPCOM.memmove (dest, aDialogTitle, length * 2); + String titleLabel = Utf.toString (aDialogTitle[0 .. span]); - length = XPCOM.strlen_PRUnichar (aText); - dest = new char[length]; - XPCOM.memmove (dest, aText, length * 2); - String textLabel = new String (dest); + span = XPCOM.strlen_PRUnichar (aText); + //dest = new char[length]; + //XPCOM.memmove (dest, aText, length * 2); + String textLabel = Utf.toString (aText[0 .. span]); - length = XPCOM.strlen_PRUnichar (aCheckMsg); - dest = new char[length]; - XPCOM.memmove (dest, aCheckMsg, length * 2); - String checkLabel = new String (dest); + span = XPCOM.strlen_PRUnichar (aCheckMsg); + //dest = new char[length]; + //XPCOM.memmove (dest, aCheckMsg, length * 2); + String checkLabel = Utf.toString (aCheckMsg[0..span]); Shell shell = browser is null ? new Shell () : browser.getShell (); PromptDialog dialog = new PromptDialog (shell); - int[] check = new int[1]; - if (aCheckState !is 0) XPCOM.memmove (check, aCheckState, 4); /* PRBool */ - dialog.alertCheck (titleLabel, textLabel, checkLabel, check); - if (aCheckState !is 0) XPCOM.memmove (aCheckState, check, 4); /* PRBool */ + int check; + if (aCheckState !is null) check = *aCheckState; /* PRBool */ + dialog.alertCheck (titleLabel, textLabel, checkLabel, /*ref*/ check); + if (aCheckState !is null) *aCheckState = check; /* PRBool */ return XPCOM.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) { +extern(System) +nsresult AsyncPromptAuth(nsIDOMWindow aParent, nsIChannel aChannel, nsIAuthPromptCallback aCallback, nsISupports aContext, PRUint32 level, nsIAuthInformation authInfo, PRUnichar* checkboxLabel, PRBool* checkValue, nsICancelable* _retval) { return XPCOM.NS_ERROR_NOT_IMPLEMENTED; } -int Confirm (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ _retval) { +extern(System) +nsresult Confirm (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRBool* _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); + int span = XPCOM.strlen_PRUnichar (aDialogTitle); + //char[] dest = new char[length]; + //XPCOM.memmove (dest, aDialogTitle, length * 2); + String titleLabel = Utf.toString (aDialogTitle[0 .. span]); - length = XPCOM.strlen_PRUnichar (aText); - dest = new char[length]; - XPCOM.memmove (dest, aText, length * 2); - String textLabel = new String (dest); + span = XPCOM.strlen_PRUnichar (aText); + //dest = new char[length]; + //XPCOM.memmove (dest, aText, length * 2); + String textLabel = Utf.toString (aText[0 .. span]); 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); + int result = id is DWT.OK ? 1 : 0; + *_retval = result; return XPCOM.NS_OK; } -int ConfirmCheck (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) { +extern(System) +nsresult ConfirmCheck (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUnichar* aCheckMsg, PRBool* aCheckState, PRBool* _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) { +extern(System) +nsresult ConfirmEx (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUint32 aButtonFlags, PRUnichar* aButton0Title, PRUnichar* aButton1Title, PRUnichar* aButton2Title, PRUnichar* aCheckMsg, PRBool* aCheckState, PRInt32* _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); + int span = XPCOM.strlen_PRUnichar (aDialogTitle); + //char[] dest = new char[length]; + //XPCOM.memmove (dest, aDialogTitle, length * 2); + String titleLabel = Utf.toString (aDialogTitle[0 .. span]); - length = XPCOM.strlen_PRUnichar (aText); - dest = new char[length]; - XPCOM.memmove (dest, aText, length * 2); - String textLabel = new String (dest); + span = XPCOM.strlen_PRUnichar (aText); + //dest = new char[length]; + //XPCOM.memmove (dest, aText, length * 2); + String textLabel = Utf.toString (aText[0 .. span]); 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); + if (aCheckMsg !is null) { + span = XPCOM.strlen_PRUnichar (aCheckMsg); + //dest = new char[length]; + //XPCOM.memmove (dest, aCheckMsg, length * 2); + checkLabel = Utf.toString (aCheckMsg[0 .. span]); } String button0Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_0, aButton0Title); @@ -277,172 +288,182 @@ 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); + int check, result; + if (aCheckState !is null) check = *aCheckState; + dialog.confirmEx (titleLabel, textLabel, checkLabel, button0Label, button1Label, button2Label, defaultIndex, /*ref*/check, /*ref*/result); + if (aCheckState !is null) *aCheckState = check; + *_retval = result; 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) { +extern(System) +nsresult Prompt (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUnichar** aValue, PRUnichar* aCheckMsg, PRBool* aCheckState, PRBool* _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); + String titleLabel = null; + String textLabel = null, checkLabel = null; + String valueLabel; + //char[] dest; + int span; + if (aDialogTitle !is null) { + span = XPCOM.strlen_PRUnichar (aDialogTitle); + //dest = new char[length]; + //XPCOM.memmove (dest, aDialogTitle, length * 2); + titleLabel = Utf.toString (aDialogTitle[0 .. span]); } - length = XPCOM.strlen_PRUnichar (aText); - dest = new char[length]; - XPCOM.memmove (dest, aText, length * 2); - textLabel = new String (dest); + span = XPCOM.strlen_PRUnichar (aText); + //dest = new char[length]; + //XPCOM.memmove (dest, aText, length * 2); + textLabel = Utf.toString (aText[0 .. span]); - 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); + //int /*long*/[] valueAddr = new int /*long*/[1]; + //XPCOM.memmove (valueAddr, aValue, C.PTR_SIZEOF); + auto valueAddr = aValue; + if (valueAddr[0] !is null) { + span = XPCOM.strlen_PRUnichar (valueAddr[0]); + //dest = new char[length]; + //XPCOM.memmove (dest, valueAddr[0], length * 2); + valueLabel = Utf.toString ((valueAddr[0])[0 .. span]); } - 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); + if (aCheckMsg !is null) { + span = XPCOM.strlen_PRUnichar (aCheckMsg); + if (span > 0) { + //dest = new char[length]; + //XPCOM.memmove (dest, aCheckMsg, length * 2); + checkLabel = Utf.toString (aCheckMsg[0 .. span]); } } 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) { + int check, result; + if (aCheckState !is null) check = *aCheckState; + dialog.prompt (titleLabel, textLabel, checkLabel, /*ref*/valueLabel,/*ref*/ check,/*ref*/ result); + *_retval = result; + if (result 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); + int size; + void* ptr; + wchar[] buffer; + nsIServiceManager serviceManager; + if (valueLabel !is null) { + //cnt = valueLabel.length; + //buffer = new wchar[cnt + 1]; + //valueLabel.getChars (0, cnt, buffer, 0); + buffer = Utf.toString16(valueLabel); size = buffer.length * 2; - ptr = C.malloc (size); - XPCOM.memmove (ptr, buffer, size); - XPCOM.memmove (aValue, new int /*long*/[] {ptr}, C.PTR_SIZEOF); + ptr = tango.stdc.stdlib.malloc (size); + (cast(wchar*)ptr)[0 .. buffer.length] = buffer[0 .. $]; + //XPCOM.memmove (ptr, buffer, size); + //XPCOM.memmove (aValue, new int /*long*/[] {ptr}, C.PTR_SIZEOF); + *aValue = cast(PRUnichar*)ptr; - if (valueAddr[0] !is 0) { - int rc = XPCOM.NS_GetServiceManager (result2); + if (valueAddr[0] !is null) { + int rc = XPCOM.NS_GetServiceManager (&serviceManager); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + if (serviceManager is null) 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); + //nsIServiceManager serviceManager = new nsIServiceManager (result2[0]); + //result2[0] = 0; + nsIMemory memory; + //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true); + rc = serviceManager.GetServiceByContractID (XPCOM.NS_MEMORY_CONTRACTID.ptr, &nsIMemory.IID, cast(void**)&memory); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + if (memory is null) DWT.error (XPCOM.NS_NOINTERFACE); serviceManager.Release (); - nsIMemory memory = new nsIMemory (result2[0]); - result2[0] = 0; + //nsIMemory memory = new nsIMemory (result2[0]); + //result2[0] = 0; memory.Free (valueAddr[0]); memory.Release (); } } } - if (aCheckState !is 0) XPCOM.memmove (aCheckState, check, 4); + if (aCheckState !is null) *aCheckState = check; 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) { +extern(System) +nsresult PromptAuth(nsIDOMWindow aParent, nsIChannel aChannel, PRUint32 level, nsIAuthInformation authInfo, PRUnichar* checkboxLabel, PRBool* checkboxValue, PRBool* _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 ("DWT_Authentication_Required"); //$NON-NLS-1$ + //int[] checkValue = new int[1]; + //String[] userLabel = new String[1], passLabel = new String[1]; + int checkValue; + String userLabel, passLabel; + //String title = DWT.getMessage ("SWT_Authentication_Required"); //$NON-NLS-1$ + String title = "Authentication Required"; - 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 */ + if (checkboxLabel !is null && checkboxValue !is null) { + //int span = XPCOM.strlen_PRUnichar (checkboxLabel); + //char[] dest = new char[length]; + //XPCOM.memmove (dest, checkboxLabel, length * 2); + checkLabel = Utf.toString (fromString16z(checkboxLabel)); + checkValue = *checkboxValue; /* PRBool */ } /* get initial username and password values */ - nsIAuthInformation auth = new nsIAuthInformation (authInfo); + //nsIAuthInformation auth = new nsIAuthInformation (authInfo); - int /*long*/ ptr = XPCOM.nsEmbedString_new (); - int rc = auth.GetUsername (ptr); + scope auto ptr1 = new nsEmbedString; + int rc = authInfo.GetUsername (cast(nsAString*)ptr1); 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); + //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 = ptr1.toString; + //XPCOM.nsEmbedString_delete (ptr); - ptr = XPCOM.nsEmbedString_new (); - rc = auth.GetPassword (ptr); + scope auto ptr2 = new nsEmbedString; + rc = authInfo.GetPassword (cast(nsAString*)ptr2); 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); + //length = XPCOM.nsEmbedString_Length (ptr); + //buffer = XPCOM.nsEmbedString_get (ptr); + //chars = new char[length]; + //XPCOM.memmove (chars, buffer, length * 2); + passLabel = ptr2.toString; + //XPCOM.nsEmbedString_delete (ptr); /* compute the message text */ - ptr = XPCOM.nsEmbedString_new (); - rc = auth.GetRealm (ptr); + scope auto ptr3 = new nsEmbedString; + rc = authInfo.GetRealm (cast(nsAString*)ptr3); 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); + //length = XPCOM.nsEmbedString_Length (ptr); + //buffer = XPCOM.nsEmbedString_get (ptr); + //chars = new char[length]; + //XPCOM.memmove (chars, buffer, length * 2); + String realm = ptr3.toString; + //XPCOM.nsEmbedString_delete (ptr); - nsIChannel channel = new nsIChannel (aChannel); - int /*long*/[] uri = new int /*long*/[1]; - rc = channel.GetURI (uri); + //nsIChannel channel = new nsIChannel (aChannel); + nsIURI uri; + rc = aChannel.GetURI (&uri); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (uri[0] is 0) Mozilla.error (XPCOM.NS_NOINTERFACE); + if (uri is null) Mozilla.error (XPCOM.NS_NOINTERFACE); - nsIURI nsURI = new nsIURI (uri[0]); - int /*long*/ aSpec = XPCOM.nsEmbedCString_new (); - rc = nsURI.GetHost (aSpec); + //nsIURI nsURI = new nsIURI (uri[0]); + scope auto aSpec = new nsEmbedCString; + rc = uri.GetHost (cast(nsACString*)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 (); + //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 = aSpec.toString; + uri.Release (); String message; if (realm.length () > 0 && host.length () > 0) { - message = Compatibility.getMessage ("DWT_Enter_Username_and_Password", new String[] {realm, host}); //$NON-NLS-1$ + //message = Compatibility.getMessage ("SWT_Enter_Username_and_Password", new String[] {realm, host}); //$NON-NLS-1$ + message = Format("Enter user name and password for {0} at {1}",realm, host); } else { message = ""; //$NON-NLS-1$ } @@ -450,155 +471,172 @@ /* open the prompter */ Shell shell = browser is null ? new Shell () : browser.getShell (); PromptDialog dialog = new PromptDialog (shell); - int[] result = new int[1]; + int result; 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 ()); + //XPCOM.memmove (_retval, result, 4); /* PRBool */ + *_retval = result; + if (result is 1) { /* User selected OK */ + scope auto string1 = new nsEmbedString (toString16(userLabel)); + rc = authInfo.SetUsername(cast(nsAString*)string1); if (rc !is XPCOM.NS_OK) DWT.error (rc); - string.dispose (); + //string.dispose (); - string = new nsEmbedString (passLabel[0]); - rc = auth.SetPassword(string.getAddress ()); + scope auto string2 = new nsEmbedString (toString16(passLabel)); + rc = authInfo.SetPassword(cast(nsAString*)string2); if (rc !is XPCOM.NS_OK) DWT.error (rc); - string.dispose (); + //string.dispose (); } - if (checkboxValue !is 0) XPCOM.memmove (checkboxValue, checkValue, 4); /* PRBool */ + if (checkboxValue !is null) *checkboxValue = checkValue; /* 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) { +extern(System) +nsresult PromptUsernameAndPassword (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUnichar** aUsername, PRUnichar** aPassword, PRUnichar* aCheckMsg, PRBool* aCheckState, PRBool* _retval) { Browser browser = getBrowser (aParent); String titleLabel, textLabel, checkLabel = null; - String[] userLabel = new String[1], passLabel = new String[1]; + String userLabel, passLabel; 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); + int span; + if (aDialogTitle !is null) { + //span = XPCOM.strlen_PRUnichar (aDialogTitle); + //dest = new char[length]; + //XPCOM.memmove (dest, aDialogTitle, length * 2); + titleLabel = Utf.toString (fromString16z(aDialogTitle)); } else { - titleLabel = DWT.getMessage ("DWT_Authentication_Required"); //$NON-NLS-1$ + //titleLabel = DWT.getMessage ("SWT_Authentication_Required"); //$NON-NLS-1$ + titleLabel = "Authentication Required"; } - length = XPCOM.strlen_PRUnichar (aText); - dest = new char[length]; - XPCOM.memmove (dest, aText, length * 2); - textLabel = new String (dest); + //span = XPCOM.strlen_PRUnichar (aText); + //dest = new char[length]; + //XPCOM.memmove (dest, aText, length * 2); + textLabel = Utf.toString (fromString16z(aText)); - 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*/[] userAddr = new int /*long*/[1]; + //XPCOM.memmove (userAddr, aUsername, C.PTR_SIZEOF); + auto userAddr = *aUsername; + if (*aUsername !is null) { + //span = XPCOM.strlen_PRUnichar (userAddr[0]); + //dest = new char[length]; + //XPCOM.memmove (dest, userAddr[0], length * 2); + userLabel = Utf.toString(fromString16z(*aUsername)); } - 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); + //int /*long*/[] passAddr = new int /*long*/[1]; + //XPCOM.memmove (passAddr, aPassword, C.PTR_SIZEOF); + auto passAddr = *aPassword; + if (*aPassword !is null) { + //span = XPCOM.strlen_PRUnichar (passAddr[0]); + //dest = new char[length]; + //XPCOM.memmove (dest, passAddr[0], length * 2); + passLabel = Utf.toString(fromString16z(*aPassword)); } - 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); - } + if (aCheckMsg !is null) { + //span = XPCOM.strlen_PRUnichar (aCheckMsg); + //if (span > 0) { + //dest = new char[length]; + //XPCOM.memmove (dest, aCheckMsg, length * 2); + checkLabel = Utf.toString (fromString16z(aCheckMsg)); + //} } 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); + int check, result; + if (aCheckState !is null) check = *aCheckState; /* PRBool */ + dialog.promptUsernameAndPassword (titleLabel, textLabel, checkLabel, /*ref*/ userLabel, /*ref*/ passLabel, check, result); - XPCOM.memmove (_retval, result, 4); /* PRBool */ - if (result[0] is 1) { + *_retval = result; /* PRBool */ + if (result 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; + void* ptr; + wchar[] 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 (userLabel !is null) { + //cnt = userLabel[0].length (); + //buffer = new char[cnt + 1]; + //buffer = Utf.toString16(userLabel); + //userLabel[0].getChars (0, cnt, buffer, 0); + //size = buffer.length * 2; + //ptr = tango.stdc.stdlib.malloc (size); + //(cast(wchar*)ptr)[0 .. buffer.length] = buffer[0 .. $]; + //XPCOM.memmove (ptr, buffer, size); + *aUsername = toString16z(Utf.toString16(userLabel)); + //XPCOM.memmove (aUsername, new int /*long*/[] {ptr}, C.PTR_SIZEOF); + nsIServiceManager serviceManager; + + if (userAddr !is null) { + int rc = XPCOM.NS_GetServiceManager (&serviceManager); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + if (serviceManager is null) 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); + //nsIServiceManager serviceManager = new nsIServiceManager (result2[0]); + //result2[0] = 0; + //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true); + nsIMemory memory; + rc = serviceManager.GetServiceByContractID (XPCOM.NS_MEMORY_CONTRACTID.ptr, &nsIMemory.IID, cast(void**)&memory); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (result[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + if (memory is null) DWT.error (XPCOM.NS_NOINTERFACE); serviceManager.Release (); - nsIMemory memory = new nsIMemory (result2[0]); - result2[0] = 0; - memory.Free (userAddr[0]); + //nsIMemory memory = new nsIMemory (result2[0]); + //result2[0] = 0; + memory.Free (userAddr); 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 (passLabel !is null) { + //cnt = passLabel[0].length (); + //buffer = new char[cnt + 1]; + //buffer = Utf.toString16( passLabel ); + //passLabel[0].getChars (0, cnt, buffer, 0); + //size = buffer.length * 2; + //ptr = tango.stdc.stdlib.malloc (size); + //(cast(wchar*)ptr)[0 .. buffer.length] = buffer[0 .. $]; + //XPCOM.memmove (ptr, buffer, size); + *aPassword = toString16z(Utf.toString16(passLabel)); + //XPCOM.memmove (aPassword, new int /*long*/[] {ptr}, C.PTR_SIZEOF); - if (passAddr[0] !is 0) { - int rc = XPCOM.NS_GetServiceManager (result2); + nsIServiceManager serviceManager; + if (passAddr !is null) { + int rc = XPCOM.NS_GetServiceManager (&serviceManager); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + if (serviceManager is null) 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); + //nsIServiceManager serviceManager = new nsIServiceManager (result2[0]); + //result2[0] = 0; + //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true); + nsIMemory memory; + rc = serviceManager.GetServiceByContractID (XPCOM.NS_MEMORY_CONTRACTID.ptr, &nsIMemory.IID, cast(void**)&memory); if (rc !is XPCOM.NS_OK) DWT.error (rc); - if (result2[0] is 0) DWT.error (XPCOM.NS_NOINTERFACE); + if (memory is null) DWT.error (XPCOM.NS_NOINTERFACE); serviceManager.Release (); - nsIMemory memory = new nsIMemory (result2[0]); - result2[0] = 0; - memory.Free (passAddr[0]); + //nsIMemory memory = new nsIMemory (result2[0]); + //result2[0] = 0; + memory.Free (passAddr); memory.Release (); } } } - if (aCheckState !is 0) XPCOM.memmove (aCheckState, check, 4); /* PRBool */ + if (aCheckState !is null) *aCheckState = check; /* 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) { +extern(System) +nsresult PromptPassword (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUnichar** aPassword, PRUnichar* aCheckMsg, PRBool* aCheckState, PRBool* _retval) { return XPCOM.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) { +extern(System) +nsresult Select (nsIDOMWindow aParent, PRUnichar* aDialogTitle, PRUnichar* aText, PRUint32 aCount, PRUnichar** aSelectList, PRInt32* aOutSelection, PRBool* _retval) { return XPCOM.NS_ERROR_NOT_IMPLEMENTED; }