changeset 343:96243e3ebcf0

Mozilla.d compiles successfully :)
author John Reimer <terminal.node@gmail.com>
date Mon, 27 Oct 2008 06:28:02 -0700
parents 8d03ae013e53
children 8198e6052012
files dwt/browser/InputStream.d dwt/browser/Mozilla.d dwt/dwthelper/utils.d dwt/internal/mozilla/nsIDocShell.d
diffstat 4 files changed, 98 insertions(+), 86 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/browser/InputStream.d	Sun Oct 26 21:23:56 2008 -0700
+++ b/dwt/browser/InputStream.d	Mon Oct 27 06:28:02 2008 -0700
@@ -21,6 +21,7 @@
 import dwt.internal.mozilla.nsID;
 import dwt.internal.mozilla.nsIInputStream;
 import dwt.internal.mozilla.nsISupports;
+import dwt.internal.mozilla.Common;
 
 class InputStream : nsIInputStream {
     //XPCOMObject inputStream;
@@ -120,7 +121,7 @@
     return XPCOM.NS_OK;
 }
 
-nsresult ReadSegments (nsWriteSegFun aWriter, void* aClosure, PRUint32 aCount, PRUint32* _retval) {
+nsresult ReadSegments (nsWriteSegmentFun aWriter, void* aClosure, PRUint32 aCount, PRUint32* _retval) {
     int max = Math.min (aCount, buffer is null ? 0 : buffer.length - index);
     PRUint32 cnt = max;
     while (cnt > 0) {
--- a/dwt/browser/Mozilla.d	Sun Oct 26 21:23:56 2008 -0700
+++ b/dwt/browser/Mozilla.d	Mon Oct 27 06:28:02 2008 -0700
@@ -26,6 +26,7 @@
 import tango.text.convert.Format;
 import tango.io.Console;
 import tango.sys.Environment;
+import tango.stdc.string;
 
 import dwt.internal.c.gtk;
 
@@ -46,6 +47,12 @@
 import dwt.browser.DownloadFactory_1_8;
 import dwt.browser.FilePickerFactory;
 import dwt.browser.FilePickerFactory_1_8;
+import dwt.browser.InputStream;
+import dwt.browser.StatusTextEvent;
+import dwt.browser.ProgressEvent;
+import dwt.browser.LocationEvent;
+import dwt.browser.WindowEvent;
+import dwt.browser.TitleEvent;
 
 import dwt.internal.Compatibility;
 import dwt.internal.LONG;
@@ -195,7 +202,7 @@
     static final String PREFERENCE_PROXYTYPE = "network.proxy.type"; //$NON-NLS-1$
     static final String PROFILE_AFTER_CHANGE = "profile-after-change"; //$NON-NLS-1$
     static final String PROFILE_BEFORE_CHANGE = "profile-before-change"; //$NON-NLS-1$
-    static final String PROFILE_DIR = SEPARATOR_OS ~ "eclipse" ~ SEPARATOR_OS; //$NON-NLS-1$
+    static       String PROFILE_DIR; //= SEPARATOR_OS ~ "eclipse" ~ SEPARATOR_OS; //$NON-NLS-1$
     static final String PROFILE_DO_CHANGE = "profile-do-change"; //$NON-NLS-1$
     static final String PROPERTY_PROXYPORT = "network.proxy_port"; //$NON-NLS-1$
     static final String PROPERTY_PROXYHOST = "network.proxy_host"; //$NON-NLS-1$
@@ -210,6 +217,7 @@
     static final String GRE_INITIALIZED = "dwt.browser.XULRunnerInitialized"; //$NON-NLS-1$
 
     static this () {
+        PROFILE_DIR = SEPARATOR_OS ~ "eclipse" ~ SEPARATOR_OS;
         MozillaClearSessions = new class() Runnable {
             public void run () {
                 if (!Initialized) return;
@@ -1361,6 +1369,7 @@
     listener = new class () Listener {
         public void handleEvent (Event event) {
             Control control = cast(Control)this.outer.browser;
+            Browser browser = this.outer.browser;
             switch (event.type) {
                 case DWT.Dispose: {
                     /* make this handler run after other dispose listeners */
@@ -1813,7 +1822,7 @@
     //nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
     //result[0] = 0;
     nsIIOService ioService;
-    rc = serviceManager.GetService (XPCOM.NS_IOSERVICE_CID, &nsIIOService.IID, cast(void**)&ioService);
+    rc = serviceManager.GetService (&XPCOM.NS_IOSERVICE_CID, &nsIIOService.IID, cast(void**)&ioService);
     if (rc !is XPCOM.NS_OK) error (rc);
     if (ioService is null) error (XPCOM.NS_NOINTERFACE);
     serviceManager.Release ();
@@ -1849,7 +1858,9 @@
     * a non java thread to the JVM otherwise the nsIInputStream Read and
     * Close methods never get called.
     */
-    InputStream inputStream = new InputStream (data);
+    
+    // Using fully qualified name for disambiguation with dwthelper InputStream -JJR
+    auto inputStream = new dwt.browser.InputStream.InputStream (cast(byte[])html);
     inputStream.AddRef ();
 
     nsIDocShell_1_9 docShell_1_9;
@@ -1861,7 +1872,7 @@
         docShell_1_9.Release ();
     } else {
         //result[0] = 0;
-        nsDocShell_1_8 docShell_1_8;
+        nsIDocShell_1_8 docShell_1_8;
         rc = interfaceRequestor.GetInterface (&nsIDocShell_1_8.IID, cast(void**)&docShell_1_8);
         if (rc is XPCOM.NS_OK) {    
             if (docShell_1_8 is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
@@ -1895,14 +1906,14 @@
 
     //int /*long*/[] result = new int /*long*/[1];
     nsIWebNavigation webNavigation;
-    int rc = webBrowser.QueryInterface (nsIWebNavigation.IID, cast(void**)&webNavigation);
+    int rc = webBrowser.QueryInterface (&nsIWebNavigation.IID, cast(void**)&webNavigation);
     if (rc !is XPCOM.NS_OK) error (rc);
     if (webNavigation is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
 
     //nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
     //char[] uri = new char[url.length () + 1];
     //url.getChars (0, url.length (), uri, 0);
-    rc = webNavigation.LoadURI (Utf.toString16(url).toString16z, nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
+    rc = webNavigation.LoadURI (url.toString16().toString16z(), nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
     webNavigation.Release ();
     return rc is XPCOM.NS_OK;
 }
@@ -1923,26 +1934,26 @@
 }
 
 void hookDOMListeners (nsIDOMEventTarget target, bool isTop) {
-    scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN.toString16());
+    target.AddEventListener (cast(nsAString*)string,cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
 
     /*
@@ -1950,22 +1961,22 @@
     * between frames will not generate events.
     */
     if (isTop && mozDelegate.hookEnterExit ()) {
-        string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER);
-        target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+        string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER.toString16());
+        target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
         //string.dispose ();
-        string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT);
-        target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+        string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT.toString16());
+        target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
         //string.dispose ();
     }
 
-    string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP);
-    target.AddEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP.toString16());
+    target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
 }
 
@@ -2025,41 +2036,41 @@
 }
 
 void unhookDOMListeners (nsIDOMEventTarget target) {
-    scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
-    string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP);
-    target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0);
+    string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP.toString16());
+    target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
     //string.dispose ();
 }
 
@@ -2114,7 +2125,7 @@
         return XPCOM.NS_OK;
     }
     if (*riid == nsIURIContentListener.IID) {
-        *ppvObject = cast(void*)cast(nsIUriContentListener)this;
+        *ppvObject = cast(void*)cast(nsIURIContentListener)this;
         AddRef ();
         return XPCOM.NS_OK;
     }
@@ -2150,7 +2161,7 @@
     if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE;
     //nsID guid = new nsID ();
     //XPCOM.memmove (guid, riid, nsID.sizeof);
-    if ((*riid).Equals (nsIDOMWindow.IID)) {
+    if (*riid == nsIDOMWindow.IID) {
         nsIDOMWindow aContentDOMWindow;
         //int /*long*/[] aContentDOMWindow = new int /*long*/[1];
         int rc = webBrowser.GetContentDOMWindow (&aContentDOMWindow);
@@ -2163,8 +2174,8 @@
     return QueryInterface (riid, ppvObject);
 }
 
-nsresult GetWeakReference (void** ppvObject) {
-    *ppvObject = cast(void*)cast(nsIWeakReference)this;
+nsresult GetWeakReference (nsIWeakReference* ppvObject) {
+    *ppvObject = cast(nsIWeakReference)this;
     //XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF);
     AddRef ();
     return XPCOM.NS_OK;
@@ -2249,8 +2260,8 @@
         * - the new request resulting from the redirection - is used to send
         * the ProgressListener.completed event.
         */
-        if (request is aRequest || request is 0) {
-            request = 0;
+        if (request is aRequest || request is null) {
+            request = null;
             if (!awaitingNavigate) {
                 StatusTextEvent event = new StatusTextEvent (browser);
                 event.display = browser.getDisplay ();
@@ -2275,7 +2286,7 @@
         //int /*long*/[] result = new int /*long*/[1];
        // nsIWebProgress progress = new nsIWebProgress (aWebProgress);
         nsIDOMWindow domWindow;
-        int rc = progress.GetDOMWindow (&domWindow);
+        int rc = aWebProgress.GetDOMWindow (&domWindow);
         if (rc !is XPCOM.NS_OK) error (rc);
         if (domWindow is null) error (XPCOM.NS_NOINTERFACE);
         //nsIDOMWindow domWindow = new nsIDOMWindow (result[0]);
@@ -2305,8 +2316,8 @@
             * Remove and unreference the nsIDOMWindow from the collection of windows
             * that are waiting to have DOM listeners hooked on them. 
             */
-            unhookedDOMWindows = unhookedDOMWindows.arrayIndexRemove( domWindow);
-            domWIndow.Release ();
+            unhookedDOMWindows = unhookedDOMWindows.arrayIndexRemove(index);
+            domWindow.Release ();
         }
         domWindow.Release ();
     }
@@ -2344,7 +2355,7 @@
     
     nsIDOMWindow domWindow;
     //int /*long*/[] aDOMWindow = new int /*long*/[1];
-    int rc = webProgress.GetDOMWindow (&domWindow);
+    int rc = aWebProgress.GetDOMWindow (&domWindow);
     if (rc !is XPCOM.NS_OK) error (rc);
     if (domWindow is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
     
@@ -2401,7 +2412,7 @@
     //int length = XPCOM.strlen_PRUnichar (aMessage);
     //char[] dest = new char[length];
     //XPCOM.memmove (dest, aMessage, length * 2);
-    event.text = aMessage.fromString16z.toString;
+    event.text = Utf.toString(fromString16z(aMessage));
     for (int i = 0; i < statusTextListeners.length; i++) {
         statusTextListeners[i].changed (event);
     }
@@ -2423,7 +2434,7 @@
     //char[] dest = new char[length];
     //XPCOM.memmove (dest, status, length * 2);
     //String string = new String (dest);
-    event.text = status.fromString16z.toString;
+    event.text = Utf.toString(fromString16z(status));
     for (int i = 0; i < statusTextListeners.length; i++) {
         statusTextListeners[i].changed (event);
     }
@@ -2434,7 +2445,7 @@
     //int /*long*/[] ret = new int /*long*/[1];   
     if (webBrowser !is null) {
         webBrowser.AddRef ();
-        *aWebBrowser = cast(nsIWebBrowser)webBrowser;  
+        *aWebBrowser = webBrowser;  
     }
     //XPCOM.memmove (aWebBrowser, ret, C.PTR_SIZEOF);
     return XPCOM.NS_OK;
@@ -2442,7 +2453,7 @@
 
 nsresult SetWebBrowser (nsIWebBrowser aWebBrowser) {
     if (webBrowser !is null) webBrowser.Release ();
-    webBrowser = aWebBrowser !is null ? cast(WebBrowser)cast(void*)aWebBrowser : null;                
+    webBrowser = aWebBrowser !is null ? cast(nsIWebBrowser)cast(void*)aWebBrowser : null;                
     return XPCOM.NS_OK;
 }
    
@@ -2496,14 +2507,14 @@
     //result[0] = 0;
     //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_CONTEXTSTACK_CONTRACTID, true);
     nsIJSContextStack stack;
-    rc = serviceManager.GetServiceByContractID (XPCOM.NS_CONTEXTSTACK_CONTRACTID, &nsIJSContextStack.IID, cast(void**)&stack);
+    rc = serviceManager.GetServiceByContractID (XPCOM.NS_CONTEXTSTACK_CONTRACTID.ptr, &nsIJSContextStack.IID, cast(void**)&stack);
     if (rc !is XPCOM.NS_OK) error (rc);
     if (stack is null) error (XPCOM.NS_NOINTERFACE);
     serviceManager.Release ();
 
     //nsIJSContextStack stack = new nsIJSContextStack (result[0]);
     //result[0] = 0;
-    rc = stack.Push (0);
+    rc = stack.Push (null);
     if (rc !is XPCOM.NS_OK) error (rc);
 
     Shell shell = browser.getShell ();
@@ -2511,8 +2522,8 @@
     while (!shell.isDisposed ()) {
         if (!display.readAndDispatch ()) display.sleep ();
     }
-
-    rc = stack.Pop (result);
+    JSContext* result;
+    rc = stack.Pop (&result);
     if (rc !is XPCOM.NS_OK) error (rc);
     stack.Release ();
     return XPCOM.NS_OK;
@@ -2585,7 +2596,7 @@
 
 nsresult GetVisibility (PRBool* aVisibility) {
     bool visible = browser.isVisible () && !browser.getShell ().getMinimized ();
-    *aVisible = visible ? 1 : 0;
+    *aVisibility = visible ? 1 : 0;
     //XPCOM.memmove (aVisibility, new int[] {visible ? 1 : 0}, 4); /* PRBool */
     return XPCOM.NS_OK;
 }
@@ -2645,7 +2656,7 @@
     if (length > 0) {
         //char[] dest = new char[length];
         //XPCOM.memmove (dest, aTitle, length * 2);
-        event.title = aTitle.fromString16z.toString;
+        event.title = Utf.toString(fromString16z(aTitle));
     } else {
         event.title = getUrl ();
     }
@@ -2709,7 +2720,7 @@
     //nsIDOMEvent domEvent = new nsIDOMEvent (aEvent);
     //int /*long*/[] result = new int /*long*/[1];
     nsIDOMMouseEvent domMouseEvent;
-    int rc = domEvent.QueryInterface (&nsIDOMMouseEvent.IID, cast(void**)&domMouseEvent);
+    int rc = aEvent.QueryInterface (&nsIDOMMouseEvent.IID, cast(void**)&domMouseEvent);
     if (rc !is XPCOM.NS_OK) error (rc);
     if (domMouseEvent is null) error (XPCOM.NS_NOINTERFACE);
 
@@ -2746,7 +2757,7 @@
     }
     //nsIURI location = new nsIURI (aURI);
     scope auto aSpec = new nsEmbedCString;
-    location.GetSpec (cast(nsACString*)aSpec);
+    aURI.GetSpec (cast(nsACString*)aSpec);
     //int length = XPCOM.nsEmbedCString_Length (aSpec);
     //int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
     //buffer = XPCOM.nsEmbedCString_get (aSpec);
@@ -2792,7 +2803,7 @@
     if (size > 0) {
         //byte[] typeBytes = new byte[size + 1];
         //XPCOM.memmove (typeBytes, aContentType, size);
-        String contentType = aContentType.fromStringz;
+        String contentType = fromStringz(aContentType);
 
         /* do not attempt to handle known problematic content types */
         if (!contentType.equals (XPCOM.CONTENT_MAYBETEXT) && !contentType.equals (XPCOM.CONTENT_MULTIPART)) {
@@ -2808,10 +2819,10 @@
             /* First try to use the nsIWebNavigationInfo if it's available (>= mozilla 1.8) */
             //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID, true);
             nsIWebNavigationInfo info;
-            rc = serviceManager.GetServiceByContractID (XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID, &nsIWebNavigationInfo.IID, cast(void**)&info);
+            rc = serviceManager.GetServiceByContractID (XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID.ptr, &nsIWebNavigationInfo.IID, cast(void**)&info);
             if (rc is 0) {
                 //byte[] bytes = MozillaDelegate.wcsToMbcs (null, contentType, true);
-                scope auto typePtr = nsEmbedCString(contentType);
+                scope auto typePtr = new nsEmbedCString(contentType);
                 //nsIWebNavigationInfo info = new nsIWebNavigationInfo (result[0]);
                 //result[0] = 0;
                 PRUint32 isSupportedResult; /* PRUint32 */
@@ -2824,7 +2835,7 @@
                 /* nsIWebNavigationInfo is not available, so do the type lookup */
                 //result[0] = 0;
                 nsICategoryManager categoryManager;
-                rc = serviceManager.GetService (XPCOM.NS_CATEGORYMANAGER_CID, &nsICategoryManager.IID, &categoryManager);
+                rc = serviceManager.GetService (&XPCOM.NS_CATEGORYMANAGER_CID, &nsICategoryManager.IID, cast(void**)&categoryManager);
                 if (rc !is XPCOM.NS_OK) error (rc);
                 if (categoryManager is null) error (XPCOM.NS_NOINTERFACE);
 
@@ -2876,7 +2887,7 @@
     //int length = XPCOM.strlen_PRUnichar (aTipText);
     //char[] dest = new char[length];
     //XPCOM.memmove (dest, aTipText, length * 2);
-    String text = aTipText.fromString16z.toString;
+    String text = Utf.toString(fromString16z(aTipText));
     if (tip !is null && !tip.isDisposed ()) tip.dispose ();
     Display display = browser.getDisplay ();
     Shell parent = browser.getShell ();
@@ -2946,7 +2957,7 @@
         nsIDOMKeyEvent domKeyEvent;
         rc = event.QueryInterface (&nsIDOMKeyEvent.IID, cast(void**)&domKeyEvent);
         if (rc !is XPCOM.NS_OK) error (rc);
-        if (domKeyevent is null) error (XPCOM.NS_NOINTERFACE);
+        if (domKeyEvent is null) error (XPCOM.NS_NOINTERFACE);
         //nsIDOMKeyEvent domKeyEvent = new nsIDOMKeyEvent (result[0]);
         //result[0] = 0;
 
--- a/dwt/dwthelper/utils.d	Sun Oct 26 21:23:56 2008 -0700
+++ b/dwt/dwthelper/utils.d	Mon Oct 27 06:28:02 2008 -0700
@@ -1224,7 +1224,7 @@
     return res;
 }
 
-T[] arrayIndexRemove(T)(T[] arr, uint index) {
+T[] arrayIndexRemove(T)(T[] arr, uint n) {
     if (n is 0)
         return arr[1..$];
     if (n > arr.length)
--- a/dwt/internal/mozilla/nsIDocShell.d	Sun Oct 26 21:23:56 2008 -0700
+++ b/dwt/internal/mozilla/nsIDocShell.d	Mon Oct 27 06:28:02 2008 -0700
@@ -140,7 +140,7 @@
 
 //extern(System)
 
-interface nsIDocShell_1_8 : nsISupports {
+interface nsIDocShell_1_8 : nsIDocShell {
 
   static const char[] IID_STR = NS_IDOCSHELL_1_8_IID_STR;
   static const nsIID IID = NS_IDOCSHELL_1_8_IID;
@@ -162,7 +162,7 @@
 
 //extern(System)
 
-interface nsIDocShell_1_9 : nsISupports {
+interface nsIDocShell_1_9 : nsIDocShell_1_8 {
 
   static const char[] IID_STR = NS_IDOCSHELL_1_9_IID_STR;
   static const nsIID IID = NS_IDOCSHELL_1_9_IID;