comparison dwt/browser/Mozilla.d @ 343:96243e3ebcf0

Mozilla.d compiles successfully :)
author John Reimer <terminal.node@gmail.com>
date Mon, 27 Oct 2008 06:28:02 -0700
parents 942da4b6558a
children 2e591eb01162
comparison
equal deleted inserted replaced
342:8d03ae013e53 343:96243e3ebcf0
24 24
25 import tango.text.locale.Core; // Necessary for Region/Culture/Locale code 25 import tango.text.locale.Core; // Necessary for Region/Culture/Locale code
26 import tango.text.convert.Format; 26 import tango.text.convert.Format;
27 import tango.io.Console; 27 import tango.io.Console;
28 import tango.sys.Environment; 28 import tango.sys.Environment;
29 import tango.stdc.string;
29 30
30 import dwt.internal.c.gtk; 31 import dwt.internal.c.gtk;
31 32
32 import dwt.DWT; 33 import dwt.DWT;
33 import dwt.DWTError; 34 import dwt.DWTError;
44 import dwt.browser.HelperAppLauncherDialogFactory; 45 import dwt.browser.HelperAppLauncherDialogFactory;
45 import dwt.browser.DownloadFactory; 46 import dwt.browser.DownloadFactory;
46 import dwt.browser.DownloadFactory_1_8; 47 import dwt.browser.DownloadFactory_1_8;
47 import dwt.browser.FilePickerFactory; 48 import dwt.browser.FilePickerFactory;
48 import dwt.browser.FilePickerFactory_1_8; 49 import dwt.browser.FilePickerFactory_1_8;
50 import dwt.browser.InputStream;
51 import dwt.browser.StatusTextEvent;
52 import dwt.browser.ProgressEvent;
53 import dwt.browser.LocationEvent;
54 import dwt.browser.WindowEvent;
55 import dwt.browser.TitleEvent;
49 56
50 import dwt.internal.Compatibility; 57 import dwt.internal.Compatibility;
51 import dwt.internal.LONG; 58 import dwt.internal.LONG;
52 import dwt.internal.Library; 59 import dwt.internal.Library;
53 60
193 static final String PREFERENCE_PROXYHOST_SSL = "network.proxy.ssl"; //$NON-NLS-1$ 200 static final String PREFERENCE_PROXYHOST_SSL = "network.proxy.ssl"; //$NON-NLS-1$
194 static final String PREFERENCE_PROXYPORT_SSL = "network.proxy.ssl_port"; //$NON-NLS-1$ 201 static final String PREFERENCE_PROXYPORT_SSL = "network.proxy.ssl_port"; //$NON-NLS-1$
195 static final String PREFERENCE_PROXYTYPE = "network.proxy.type"; //$NON-NLS-1$ 202 static final String PREFERENCE_PROXYTYPE = "network.proxy.type"; //$NON-NLS-1$
196 static final String PROFILE_AFTER_CHANGE = "profile-after-change"; //$NON-NLS-1$ 203 static final String PROFILE_AFTER_CHANGE = "profile-after-change"; //$NON-NLS-1$
197 static final String PROFILE_BEFORE_CHANGE = "profile-before-change"; //$NON-NLS-1$ 204 static final String PROFILE_BEFORE_CHANGE = "profile-before-change"; //$NON-NLS-1$
198 static final String PROFILE_DIR = SEPARATOR_OS ~ "eclipse" ~ SEPARATOR_OS; //$NON-NLS-1$ 205 static String PROFILE_DIR; //= SEPARATOR_OS ~ "eclipse" ~ SEPARATOR_OS; //$NON-NLS-1$
199 static final String PROFILE_DO_CHANGE = "profile-do-change"; //$NON-NLS-1$ 206 static final String PROFILE_DO_CHANGE = "profile-do-change"; //$NON-NLS-1$
200 static final String PROPERTY_PROXYPORT = "network.proxy_port"; //$NON-NLS-1$ 207 static final String PROPERTY_PROXYPORT = "network.proxy_port"; //$NON-NLS-1$
201 static final String PROPERTY_PROXYHOST = "network.proxy_host"; //$NON-NLS-1$ 208 static final String PROPERTY_PROXYHOST = "network.proxy_host"; //$NON-NLS-1$
202 static final String SEPARATOR_LOCALE = "-"; //$NON-NLS-1$ 209 static final String SEPARATOR_LOCALE = "-"; //$NON-NLS-1$
203 static final String SHUTDOWN_PERSIST = "shutdown-persist"; //$NON-NLS-1$ 210 static final String SHUTDOWN_PERSIST = "shutdown-persist"; //$NON-NLS-1$
208 215
209 // TEMPORARY CODE 216 // TEMPORARY CODE
210 static final String GRE_INITIALIZED = "dwt.browser.XULRunnerInitialized"; //$NON-NLS-1$ 217 static final String GRE_INITIALIZED = "dwt.browser.XULRunnerInitialized"; //$NON-NLS-1$
211 218
212 static this () { 219 static this () {
220 PROFILE_DIR = SEPARATOR_OS ~ "eclipse" ~ SEPARATOR_OS;
213 MozillaClearSessions = new class() Runnable { 221 MozillaClearSessions = new class() Runnable {
214 public void run () { 222 public void run () {
215 if (!Initialized) return; 223 if (!Initialized) return;
216 nsIServiceManager serviceManager; 224 nsIServiceManager serviceManager;
217 int rc = XPCOM.NS_GetServiceManager (&serviceManager); 225 int rc = XPCOM.NS_GetServiceManager (&serviceManager);
1359 mozDelegate.init (); 1367 mozDelegate.init ();
1360 1368
1361 listener = new class () Listener { 1369 listener = new class () Listener {
1362 public void handleEvent (Event event) { 1370 public void handleEvent (Event event) {
1363 Control control = cast(Control)this.outer.browser; 1371 Control control = cast(Control)this.outer.browser;
1372 Browser browser = this.outer.browser;
1364 switch (event.type) { 1373 switch (event.type) {
1365 case DWT.Dispose: { 1374 case DWT.Dispose: {
1366 /* make this handler run after other dispose listeners */ 1375 /* make this handler run after other dispose listeners */
1367 if (ignoreDispose) { 1376 if (ignoreDispose) {
1368 ignoreDispose = false; 1377 ignoreDispose = false;
1811 if (serviceManager is null) error (XPCOM.NS_NOINTERFACE); 1820 if (serviceManager is null) error (XPCOM.NS_NOINTERFACE);
1812 1821
1813 //nsIServiceManager serviceManager = new nsIServiceManager (result[0]); 1822 //nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
1814 //result[0] = 0; 1823 //result[0] = 0;
1815 nsIIOService ioService; 1824 nsIIOService ioService;
1816 rc = serviceManager.GetService (XPCOM.NS_IOSERVICE_CID, &nsIIOService.IID, cast(void**)&ioService); 1825 rc = serviceManager.GetService (&XPCOM.NS_IOSERVICE_CID, &nsIIOService.IID, cast(void**)&ioService);
1817 if (rc !is XPCOM.NS_OK) error (rc); 1826 if (rc !is XPCOM.NS_OK) error (rc);
1818 if (ioService is null) error (XPCOM.NS_NOINTERFACE); 1827 if (ioService is null) error (XPCOM.NS_NOINTERFACE);
1819 serviceManager.Release (); 1828 serviceManager.Release ();
1820 1829
1821 //nsIIOService ioService = new nsIIOService (result[0]); 1830 //nsIIOService ioService = new nsIIOService (result[0]);
1847 * Feature in Mozilla. LoadStream invokes the nsIInputStream argument 1856 * Feature in Mozilla. LoadStream invokes the nsIInputStream argument
1848 * through a different thread. The callback mechanism must attach 1857 * through a different thread. The callback mechanism must attach
1849 * a non java thread to the JVM otherwise the nsIInputStream Read and 1858 * a non java thread to the JVM otherwise the nsIInputStream Read and
1850 * Close methods never get called. 1859 * Close methods never get called.
1851 */ 1860 */
1852 InputStream inputStream = new InputStream (data); 1861
1862 // Using fully qualified name for disambiguation with dwthelper InputStream -JJR
1863 auto inputStream = new dwt.browser.InputStream.InputStream (cast(byte[])html);
1853 inputStream.AddRef (); 1864 inputStream.AddRef ();
1854 1865
1855 nsIDocShell_1_9 docShell_1_9; 1866 nsIDocShell_1_9 docShell_1_9;
1856 rc = interfaceRequestor.GetInterface (&nsIDocShell_1_9.IID, cast(void**)&docShell_1_9); 1867 rc = interfaceRequestor.GetInterface (&nsIDocShell_1_9.IID, cast(void**)&docShell_1_9);
1857 if (rc is XPCOM.NS_OK) { 1868 if (rc is XPCOM.NS_OK) {
1859 //nsIDocShell_1_9 docShell = new nsIDocShell_1_9 (result[0]); 1870 //nsIDocShell_1_9 docShell = new nsIDocShell_1_9 (result[0]);
1860 rc = docShell_1_9.LoadStream (inputStream, uri, cast(nsACString*)aContentType, cast(nsACString*)aContentCharset, null); 1871 rc = docShell_1_9.LoadStream (inputStream, uri, cast(nsACString*)aContentType, cast(nsACString*)aContentCharset, null);
1861 docShell_1_9.Release (); 1872 docShell_1_9.Release ();
1862 } else { 1873 } else {
1863 //result[0] = 0; 1874 //result[0] = 0;
1864 nsDocShell_1_8 docShell_1_8; 1875 nsIDocShell_1_8 docShell_1_8;
1865 rc = interfaceRequestor.GetInterface (&nsIDocShell_1_8.IID, cast(void**)&docShell_1_8); 1876 rc = interfaceRequestor.GetInterface (&nsIDocShell_1_8.IID, cast(void**)&docShell_1_8);
1866 if (rc is XPCOM.NS_OK) { 1877 if (rc is XPCOM.NS_OK) {
1867 if (docShell_1_8 is null) error (XPCOM.NS_ERROR_NO_INTERFACE); 1878 if (docShell_1_8 is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
1868 //nsIDocShell_1_8 docShell = new nsIDocShell_1_8 (result[0]); 1879 //nsIDocShell_1_8 docShell = new nsIDocShell_1_8 (result[0]);
1869 rc = docShell_1_8.LoadStream (inputStream, uri, cast(nsACString*)aContentType, cast(nsACString*)aContentCharset, null); 1880 rc = docShell_1_8.LoadStream (inputStream, uri, cast(nsACString*)aContentType, cast(nsACString*)aContentCharset, null);
1893 public bool setUrl (String url) { 1904 public bool setUrl (String url) {
1894 awaitingNavigate = false; 1905 awaitingNavigate = false;
1895 1906
1896 //int /*long*/[] result = new int /*long*/[1]; 1907 //int /*long*/[] result = new int /*long*/[1];
1897 nsIWebNavigation webNavigation; 1908 nsIWebNavigation webNavigation;
1898 int rc = webBrowser.QueryInterface (nsIWebNavigation.IID, cast(void**)&webNavigation); 1909 int rc = webBrowser.QueryInterface (&nsIWebNavigation.IID, cast(void**)&webNavigation);
1899 if (rc !is XPCOM.NS_OK) error (rc); 1910 if (rc !is XPCOM.NS_OK) error (rc);
1900 if (webNavigation is null) error (XPCOM.NS_ERROR_NO_INTERFACE); 1911 if (webNavigation is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
1901 1912
1902 //nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]); 1913 //nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
1903 //char[] uri = new char[url.length () + 1]; 1914 //char[] uri = new char[url.length () + 1];
1904 //url.getChars (0, url.length (), uri, 0); 1915 //url.getChars (0, url.length (), uri, 0);
1905 rc = webNavigation.LoadURI (Utf.toString16(url).toString16z, nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null); 1916 rc = webNavigation.LoadURI (url.toString16().toString16z(), nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
1906 webNavigation.Release (); 1917 webNavigation.Release ();
1907 return rc is XPCOM.NS_OK; 1918 return rc is XPCOM.NS_OK;
1908 } 1919 }
1909 1920
1910 public void stop () { 1921 public void stop () {
1921 if (rc !is XPCOM.NS_OK) error (rc); 1932 if (rc !is XPCOM.NS_OK) error (rc);
1922 webNavigation.Release (); 1933 webNavigation.Release ();
1923 } 1934 }
1924 1935
1925 void hookDOMListeners (nsIDOMEventTarget target, bool isTop) { 1936 void hookDOMListeners (nsIDOMEventTarget target, bool isTop) {
1926 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS); 1937 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16());
1927 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1938 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1928 //string.dispose (); 1939 //string.dispose ();
1929 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD); 1940 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16());
1930 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1941 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1931 //string.dispose (); 1942 //string.dispose ();
1932 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN); 1943 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN.toString16());
1933 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1944 target.AddEventListener (cast(nsAString*)string,cast(nsIDOMEventListener)this, 0);
1934 //string.dispose (); 1945 //string.dispose ();
1935 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP); 1946 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP.toString16());
1936 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1947 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1937 //string.dispose (); 1948 //string.dispose ();
1938 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE); 1949 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE.toString16());
1939 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1950 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1940 //string.dispose (); 1951 //string.dispose ();
1941 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL); 1952 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL.toString16());
1942 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1953 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1943 //string.dispose (); 1954 //string.dispose ();
1944 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG); 1955 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG.toString16());
1945 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1956 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1946 //string.dispose (); 1957 //string.dispose ();
1947 1958
1948 /* 1959 /*
1949 * Only hook mouseover and mouseout if the target is a top-level frame, so that mouse moves 1960 * Only hook mouseover and mouseout if the target is a top-level frame, so that mouse moves
1950 * between frames will not generate events. 1961 * between frames will not generate events.
1951 */ 1962 */
1952 if (isTop && mozDelegate.hookEnterExit ()) { 1963 if (isTop && mozDelegate.hookEnterExit ()) {
1953 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER); 1964 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER.toString16());
1954 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1965 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1955 //string.dispose (); 1966 //string.dispose ();
1956 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT); 1967 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT.toString16());
1957 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1968 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1958 //string.dispose (); 1969 //string.dispose ();
1959 } 1970 }
1960 1971
1961 string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN); 1972 string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN.toString16());
1962 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1973 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1963 //string.dispose (); 1974 //string.dispose ();
1964 string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS); 1975 string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS.toString16());
1965 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1976 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1966 //string.dispose (); 1977 //string.dispose ();
1967 string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP); 1978 string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP.toString16());
1968 target.AddEventListener (cast(nsAString*)string, domEventListener, 0); 1979 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1969 //string.dispose (); 1980 //string.dispose ();
1970 } 1981 }
1971 1982
1972 void unhookDOMListeners () { 1983 void unhookDOMListeners () {
1973 //int /*long*/[] result = new int /*long*/[1]; 1984 //int /*long*/[] result = new int /*long*/[1];
2023 frames.Release (); 2034 frames.Release ();
2024 window.Release (); 2035 window.Release ();
2025 } 2036 }
2026 2037
2027 void unhookDOMListeners (nsIDOMEventTarget target) { 2038 void unhookDOMListeners (nsIDOMEventTarget target) {
2028 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS); 2039 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16());
2029 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2040 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2030 //string.dispose (); 2041 //string.dispose ();
2031 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD); 2042 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16());
2032 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2043 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2033 //string.dispose (); 2044 //string.dispose ();
2034 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN); 2045 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN.toString16());
2035 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2046 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2036 //string.dispose (); 2047 //string.dispose ();
2037 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP); 2048 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP.toString16());
2038 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2049 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2039 //string.dispose (); 2050 //string.dispose ();
2040 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE); 2051 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE.toString16());
2041 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2052 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2042 //string.dispose (); 2053 //string.dispose ();
2043 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL); 2054 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL.toString16());
2044 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2055 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2045 //string.dispose (); 2056 //string.dispose ();
2046 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG); 2057 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG.toString16());
2047 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2058 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2048 //string.dispose (); 2059 //string.dispose ();
2049 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER); 2060 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER.toString16());
2050 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2061 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2051 //string.dispose (); 2062 //string.dispose ();
2052 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT); 2063 string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT.toString16());
2053 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2064 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2054 //string.dispose (); 2065 //string.dispose ();
2055 string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN); 2066 string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN.toString16());
2056 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2067 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2057 //string.dispose (); 2068 //string.dispose ();
2058 string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS); 2069 string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS.toString16());
2059 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2070 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2060 //string.dispose (); 2071 //string.dispose ();
2061 string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP); 2072 string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP.toString16());
2062 target.RemoveEventListener (cast(nsAString*)string, domEventListener, 0); 2073 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2063 //string.dispose (); 2074 //string.dispose ();
2064 } 2075 }
2065 2076
2066 /* nsISupports */ 2077 /* nsISupports */
2067 2078
2112 *ppvObject = cast(void*)cast(nsIContextMenuListener)this; 2123 *ppvObject = cast(void*)cast(nsIContextMenuListener)this;
2113 AddRef (); 2124 AddRef ();
2114 return XPCOM.NS_OK; 2125 return XPCOM.NS_OK;
2115 } 2126 }
2116 if (*riid == nsIURIContentListener.IID) { 2127 if (*riid == nsIURIContentListener.IID) {
2117 *ppvObject = cast(void*)cast(nsIUriContentListener)this; 2128 *ppvObject = cast(void*)cast(nsIURIContentListener)this;
2118 AddRef (); 2129 AddRef ();
2119 return XPCOM.NS_OK; 2130 return XPCOM.NS_OK;
2120 } 2131 }
2121 if (*riid == nsITooltipListener.IID) { 2132 if (*riid == nsITooltipListener.IID) {
2122 *ppvObject = cast(void*)cast(nsITooltipListener)this; 2133 *ppvObject = cast(void*)cast(nsITooltipListener)this;
2148 2159
2149 nsresult GetInterface ( nsID* riid, void** ppvObject) { 2160 nsresult GetInterface ( nsID* riid, void** ppvObject) {
2150 if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE; 2161 if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE;
2151 //nsID guid = new nsID (); 2162 //nsID guid = new nsID ();
2152 //XPCOM.memmove (guid, riid, nsID.sizeof); 2163 //XPCOM.memmove (guid, riid, nsID.sizeof);
2153 if ((*riid).Equals (nsIDOMWindow.IID)) { 2164 if (*riid == nsIDOMWindow.IID) {
2154 nsIDOMWindow aContentDOMWindow; 2165 nsIDOMWindow aContentDOMWindow;
2155 //int /*long*/[] aContentDOMWindow = new int /*long*/[1]; 2166 //int /*long*/[] aContentDOMWindow = new int /*long*/[1];
2156 int rc = webBrowser.GetContentDOMWindow (&aContentDOMWindow); 2167 int rc = webBrowser.GetContentDOMWindow (&aContentDOMWindow);
2157 if (rc !is XPCOM.NS_OK) error (rc); 2168 if (rc !is XPCOM.NS_OK) error (rc);
2158 if (aContentDOMWindow is null) error (XPCOM.NS_ERROR_NO_INTERFACE); 2169 if (aContentDOMWindow is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
2161 return rc; 2172 return rc;
2162 } 2173 }
2163 return QueryInterface (riid, ppvObject); 2174 return QueryInterface (riid, ppvObject);
2164 } 2175 }
2165 2176
2166 nsresult GetWeakReference (void** ppvObject) { 2177 nsresult GetWeakReference (nsIWeakReference* ppvObject) {
2167 *ppvObject = cast(void*)cast(nsIWeakReference)this; 2178 *ppvObject = cast(nsIWeakReference)this;
2168 //XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF); 2179 //XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF);
2169 AddRef (); 2180 AddRef ();
2170 return XPCOM.NS_OK; 2181 return XPCOM.NS_OK;
2171 } 2182 }
2172 2183
2247 * To handle this case, the variable request is set to 0 when the corresponding 2258 * To handle this case, the variable request is set to 0 when the corresponding
2248 * request is redirected. The following request received with the state STATE_STOP 2259 * request is redirected. The following request received with the state STATE_STOP
2249 * - the new request resulting from the redirection - is used to send 2260 * - the new request resulting from the redirection - is used to send
2250 * the ProgressListener.completed event. 2261 * the ProgressListener.completed event.
2251 */ 2262 */
2252 if (request is aRequest || request is 0) { 2263 if (request is aRequest || request is null) {
2253 request = 0; 2264 request = null;
2254 if (!awaitingNavigate) { 2265 if (!awaitingNavigate) {
2255 StatusTextEvent event = new StatusTextEvent (browser); 2266 StatusTextEvent event = new StatusTextEvent (browser);
2256 event.display = browser.getDisplay (); 2267 event.display = browser.getDisplay ();
2257 event.widget = browser; 2268 event.widget = browser;
2258 event.text = ""; //$NON-NLS-1$ 2269 event.text = ""; //$NON-NLS-1$
2273 * the earliest opportunity to do so. 2284 * the earliest opportunity to do so.
2274 */ 2285 */
2275 //int /*long*/[] result = new int /*long*/[1]; 2286 //int /*long*/[] result = new int /*long*/[1];
2276 // nsIWebProgress progress = new nsIWebProgress (aWebProgress); 2287 // nsIWebProgress progress = new nsIWebProgress (aWebProgress);
2277 nsIDOMWindow domWindow; 2288 nsIDOMWindow domWindow;
2278 int rc = progress.GetDOMWindow (&domWindow); 2289 int rc = aWebProgress.GetDOMWindow (&domWindow);
2279 if (rc !is XPCOM.NS_OK) error (rc); 2290 if (rc !is XPCOM.NS_OK) error (rc);
2280 if (domWindow is null) error (XPCOM.NS_NOINTERFACE); 2291 if (domWindow is null) error (XPCOM.NS_NOINTERFACE);
2281 //nsIDOMWindow domWindow = new nsIDOMWindow (result[0]); 2292 //nsIDOMWindow domWindow = new nsIDOMWindow (result[0]);
2282 2293
2283 //LONG ptrObject = new LONG (result[0]); 2294 //LONG ptrObject = new LONG (result[0]);
2303 2314
2304 /* 2315 /*
2305 * Remove and unreference the nsIDOMWindow from the collection of windows 2316 * Remove and unreference the nsIDOMWindow from the collection of windows
2306 * that are waiting to have DOM listeners hooked on them. 2317 * that are waiting to have DOM listeners hooked on them.
2307 */ 2318 */
2308 unhookedDOMWindows = unhookedDOMWindows.arrayIndexRemove( domWindow); 2319 unhookedDOMWindows = unhookedDOMWindows.arrayIndexRemove(index);
2309 domWIndow.Release (); 2320 domWindow.Release ();
2310 } 2321 }
2311 domWindow.Release (); 2322 domWindow.Release ();
2312 } 2323 }
2313 return XPCOM.NS_OK; 2324 return XPCOM.NS_OK;
2314 } 2325 }
2342 2353
2343 //nsIWebProgress webProgress = new nsIWebProgress (aWebProgress); 2354 //nsIWebProgress webProgress = new nsIWebProgress (aWebProgress);
2344 2355
2345 nsIDOMWindow domWindow; 2356 nsIDOMWindow domWindow;
2346 //int /*long*/[] aDOMWindow = new int /*long*/[1]; 2357 //int /*long*/[] aDOMWindow = new int /*long*/[1];
2347 int rc = webProgress.GetDOMWindow (&domWindow); 2358 int rc = aWebProgress.GetDOMWindow (&domWindow);
2348 if (rc !is XPCOM.NS_OK) error (rc); 2359 if (rc !is XPCOM.NS_OK) error (rc);
2349 if (domWindow is null) error (XPCOM.NS_ERROR_NO_INTERFACE); 2360 if (domWindow is null) error (XPCOM.NS_ERROR_NO_INTERFACE);
2350 2361
2351 //nsIDOMWindow domWindow = new nsIDOMWindow (aDOMWindow[0]); 2362 //nsIDOMWindow domWindow = new nsIDOMWindow (aDOMWindow[0]);
2352 //int /*long*/[] aTop = new int /*long*/[1]; 2363 //int /*long*/[] aTop = new int /*long*/[1];
2399 event.display = browser.getDisplay (); 2410 event.display = browser.getDisplay ();
2400 event.widget = browser; 2411 event.widget = browser;
2401 //int length = XPCOM.strlen_PRUnichar (aMessage); 2412 //int length = XPCOM.strlen_PRUnichar (aMessage);
2402 //char[] dest = new char[length]; 2413 //char[] dest = new char[length];
2403 //XPCOM.memmove (dest, aMessage, length * 2); 2414 //XPCOM.memmove (dest, aMessage, length * 2);
2404 event.text = aMessage.fromString16z.toString; 2415 event.text = Utf.toString(fromString16z(aMessage));
2405 for (int i = 0; i < statusTextListeners.length; i++) { 2416 for (int i = 0; i < statusTextListeners.length; i++) {
2406 statusTextListeners[i].changed (event); 2417 statusTextListeners[i].changed (event);
2407 } 2418 }
2408 return XPCOM.NS_OK; 2419 return XPCOM.NS_OK;
2409 } 2420 }
2421 event.widget = browser; 2432 event.widget = browser;
2422 //int length = XPCOM.strlen_PRUnichar (status); 2433 //int length = XPCOM.strlen_PRUnichar (status);
2423 //char[] dest = new char[length]; 2434 //char[] dest = new char[length];
2424 //XPCOM.memmove (dest, status, length * 2); 2435 //XPCOM.memmove (dest, status, length * 2);
2425 //String string = new String (dest); 2436 //String string = new String (dest);
2426 event.text = status.fromString16z.toString; 2437 event.text = Utf.toString(fromString16z(status));
2427 for (int i = 0; i < statusTextListeners.length; i++) { 2438 for (int i = 0; i < statusTextListeners.length; i++) {
2428 statusTextListeners[i].changed (event); 2439 statusTextListeners[i].changed (event);
2429 } 2440 }
2430 return XPCOM.NS_OK; 2441 return XPCOM.NS_OK;
2431 } 2442 }
2432 2443
2433 nsresult GetWebBrowser (nsIWebBrowser* aWebBrowser) { 2444 nsresult GetWebBrowser (nsIWebBrowser* aWebBrowser) {
2434 //int /*long*/[] ret = new int /*long*/[1]; 2445 //int /*long*/[] ret = new int /*long*/[1];
2435 if (webBrowser !is null) { 2446 if (webBrowser !is null) {
2436 webBrowser.AddRef (); 2447 webBrowser.AddRef ();
2437 *aWebBrowser = cast(nsIWebBrowser)webBrowser; 2448 *aWebBrowser = webBrowser;
2438 } 2449 }
2439 //XPCOM.memmove (aWebBrowser, ret, C.PTR_SIZEOF); 2450 //XPCOM.memmove (aWebBrowser, ret, C.PTR_SIZEOF);
2440 return XPCOM.NS_OK; 2451 return XPCOM.NS_OK;
2441 } 2452 }
2442 2453
2443 nsresult SetWebBrowser (nsIWebBrowser aWebBrowser) { 2454 nsresult SetWebBrowser (nsIWebBrowser aWebBrowser) {
2444 if (webBrowser !is null) webBrowser.Release (); 2455 if (webBrowser !is null) webBrowser.Release ();
2445 webBrowser = aWebBrowser !is null ? cast(WebBrowser)cast(void*)aWebBrowser : null; 2456 webBrowser = aWebBrowser !is null ? cast(nsIWebBrowser)cast(void*)aWebBrowser : null;
2446 return XPCOM.NS_OK; 2457 return XPCOM.NS_OK;
2447 } 2458 }
2448 2459
2449 nsresult GetChromeFlags (PRUint32* aChromeFlags) { 2460 nsresult GetChromeFlags (PRUint32* aChromeFlags) {
2450 //int[] ret = new int[1]; 2461 //int[] ret = new int[1];
2494 2505
2495 //nsIServiceManager serviceManager = new nsIServiceManager (result[0]); 2506 //nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
2496 //result[0] = 0; 2507 //result[0] = 0;
2497 //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_CONTEXTSTACK_CONTRACTID, true); 2508 //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_CONTEXTSTACK_CONTRACTID, true);
2498 nsIJSContextStack stack; 2509 nsIJSContextStack stack;
2499 rc = serviceManager.GetServiceByContractID (XPCOM.NS_CONTEXTSTACK_CONTRACTID, &nsIJSContextStack.IID, cast(void**)&stack); 2510 rc = serviceManager.GetServiceByContractID (XPCOM.NS_CONTEXTSTACK_CONTRACTID.ptr, &nsIJSContextStack.IID, cast(void**)&stack);
2500 if (rc !is XPCOM.NS_OK) error (rc); 2511 if (rc !is XPCOM.NS_OK) error (rc);
2501 if (stack is null) error (XPCOM.NS_NOINTERFACE); 2512 if (stack is null) error (XPCOM.NS_NOINTERFACE);
2502 serviceManager.Release (); 2513 serviceManager.Release ();
2503 2514
2504 //nsIJSContextStack stack = new nsIJSContextStack (result[0]); 2515 //nsIJSContextStack stack = new nsIJSContextStack (result[0]);
2505 //result[0] = 0; 2516 //result[0] = 0;
2506 rc = stack.Push (0); 2517 rc = stack.Push (null);
2507 if (rc !is XPCOM.NS_OK) error (rc); 2518 if (rc !is XPCOM.NS_OK) error (rc);
2508 2519
2509 Shell shell = browser.getShell (); 2520 Shell shell = browser.getShell ();
2510 Display display = browser.getDisplay (); 2521 Display display = browser.getDisplay ();
2511 while (!shell.isDisposed ()) { 2522 while (!shell.isDisposed ()) {
2512 if (!display.readAndDispatch ()) display.sleep (); 2523 if (!display.readAndDispatch ()) display.sleep ();
2513 } 2524 }
2514 2525 JSContext* result;
2515 rc = stack.Pop (result); 2526 rc = stack.Pop (&result);
2516 if (rc !is XPCOM.NS_OK) error (rc); 2527 if (rc !is XPCOM.NS_OK) error (rc);
2517 stack.Release (); 2528 stack.Release ();
2518 return XPCOM.NS_OK; 2529 return XPCOM.NS_OK;
2519 } 2530 }
2520 2531
2583 return XPCOM.NS_OK; 2594 return XPCOM.NS_OK;
2584 } 2595 }
2585 2596
2586 nsresult GetVisibility (PRBool* aVisibility) { 2597 nsresult GetVisibility (PRBool* aVisibility) {
2587 bool visible = browser.isVisible () && !browser.getShell ().getMinimized (); 2598 bool visible = browser.isVisible () && !browser.getShell ().getMinimized ();
2588 *aVisible = visible ? 1 : 0; 2599 *aVisibility = visible ? 1 : 0;
2589 //XPCOM.memmove (aVisibility, new int[] {visible ? 1 : 0}, 4); /* PRBool */ 2600 //XPCOM.memmove (aVisibility, new int[] {visible ? 1 : 0}, 4); /* PRBool */
2590 return XPCOM.NS_OK; 2601 return XPCOM.NS_OK;
2591 } 2602 }
2592 2603
2593 nsresult SetVisibility (PRBool aVisibility) { 2604 nsresult SetVisibility (PRBool aVisibility) {
2643 */ 2654 */
2644 int length = XPCOM.strlen_PRUnichar (aTitle); 2655 int length = XPCOM.strlen_PRUnichar (aTitle);
2645 if (length > 0) { 2656 if (length > 0) {
2646 //char[] dest = new char[length]; 2657 //char[] dest = new char[length];
2647 //XPCOM.memmove (dest, aTitle, length * 2); 2658 //XPCOM.memmove (dest, aTitle, length * 2);
2648 event.title = aTitle.fromString16z.toString; 2659 event.title = Utf.toString(fromString16z(aTitle));
2649 } else { 2660 } else {
2650 event.title = getUrl (); 2661 event.title = getUrl ();
2651 } 2662 }
2652 for (int i = 0; i < titleListeners.length; i++) { 2663 for (int i = 0; i < titleListeners.length; i++) {
2653 titleListeners[i].changed (event); 2664 titleListeners[i].changed (event);
2707 if (awaitingNavigate) return XPCOM.NS_OK; 2718 if (awaitingNavigate) return XPCOM.NS_OK;
2708 2719
2709 //nsIDOMEvent domEvent = new nsIDOMEvent (aEvent); 2720 //nsIDOMEvent domEvent = new nsIDOMEvent (aEvent);
2710 //int /*long*/[] result = new int /*long*/[1]; 2721 //int /*long*/[] result = new int /*long*/[1];
2711 nsIDOMMouseEvent domMouseEvent; 2722 nsIDOMMouseEvent domMouseEvent;
2712 int rc = domEvent.QueryInterface (&nsIDOMMouseEvent.IID, cast(void**)&domMouseEvent); 2723 int rc = aEvent.QueryInterface (&nsIDOMMouseEvent.IID, cast(void**)&domMouseEvent);
2713 if (rc !is XPCOM.NS_OK) error (rc); 2724 if (rc !is XPCOM.NS_OK) error (rc);
2714 if (domMouseEvent is null) error (XPCOM.NS_NOINTERFACE); 2725 if (domMouseEvent is null) error (XPCOM.NS_NOINTERFACE);
2715 2726
2716 //nsIDOMMouseEvent domMouseEvent = new nsIDOMMouseEvent (result[0]); 2727 //nsIDOMMouseEvent domMouseEvent = new nsIDOMMouseEvent (result[0]);
2717 PRInt32 aScreenX, aScreenY; 2728 PRInt32 aScreenX, aScreenY;
2744 //XPCOM.memmove (retval, new int[] {0}, 4); /* PRBool */ 2755 //XPCOM.memmove (retval, new int[] {0}, 4); /* PRBool */
2745 return XPCOM.NS_OK; 2756 return XPCOM.NS_OK;
2746 } 2757 }
2747 //nsIURI location = new nsIURI (aURI); 2758 //nsIURI location = new nsIURI (aURI);
2748 scope auto aSpec = new nsEmbedCString; 2759 scope auto aSpec = new nsEmbedCString;
2749 location.GetSpec (cast(nsACString*)aSpec); 2760 aURI.GetSpec (cast(nsACString*)aSpec);
2750 //int length = XPCOM.nsEmbedCString_Length (aSpec); 2761 //int length = XPCOM.nsEmbedCString_Length (aSpec);
2751 //int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec); 2762 //int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
2752 //buffer = XPCOM.nsEmbedCString_get (aSpec); 2763 //buffer = XPCOM.nsEmbedCString_get (aSpec);
2753 //byte[] dest = new byte[length]; 2764 //byte[] dest = new byte[length];
2754 //XPCOM.memmove (dest, buffer, length); 2765 //XPCOM.memmove (dest, buffer, length);
2790 bool preferred = false; 2801 bool preferred = false;
2791 auto size = strlen (aContentType); 2802 auto size = strlen (aContentType);
2792 if (size > 0) { 2803 if (size > 0) {
2793 //byte[] typeBytes = new byte[size + 1]; 2804 //byte[] typeBytes = new byte[size + 1];
2794 //XPCOM.memmove (typeBytes, aContentType, size); 2805 //XPCOM.memmove (typeBytes, aContentType, size);
2795 String contentType = aContentType.fromStringz; 2806 String contentType = fromStringz(aContentType);
2796 2807
2797 /* do not attempt to handle known problematic content types */ 2808 /* do not attempt to handle known problematic content types */
2798 if (!contentType.equals (XPCOM.CONTENT_MAYBETEXT) && !contentType.equals (XPCOM.CONTENT_MULTIPART)) { 2809 if (!contentType.equals (XPCOM.CONTENT_MAYBETEXT) && !contentType.equals (XPCOM.CONTENT_MULTIPART)) {
2799 /* determine whether browser can handle the content type */ 2810 /* determine whether browser can handle the content type */
2800 // int /*long*/[] result = new int /*long*/[1]; 2811 // int /*long*/[] result = new int /*long*/[1];
2806 //result[0] = 0; 2817 //result[0] = 0;
2807 2818
2808 /* First try to use the nsIWebNavigationInfo if it's available (>= mozilla 1.8) */ 2819 /* First try to use the nsIWebNavigationInfo if it's available (>= mozilla 1.8) */
2809 //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID, true); 2820 //byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID, true);
2810 nsIWebNavigationInfo info; 2821 nsIWebNavigationInfo info;
2811 rc = serviceManager.GetServiceByContractID (XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID, &nsIWebNavigationInfo.IID, cast(void**)&info); 2822 rc = serviceManager.GetServiceByContractID (XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID.ptr, &nsIWebNavigationInfo.IID, cast(void**)&info);
2812 if (rc is 0) { 2823 if (rc is 0) {
2813 //byte[] bytes = MozillaDelegate.wcsToMbcs (null, contentType, true); 2824 //byte[] bytes = MozillaDelegate.wcsToMbcs (null, contentType, true);
2814 scope auto typePtr = nsEmbedCString(contentType); 2825 scope auto typePtr = new nsEmbedCString(contentType);
2815 //nsIWebNavigationInfo info = new nsIWebNavigationInfo (result[0]); 2826 //nsIWebNavigationInfo info = new nsIWebNavigationInfo (result[0]);
2816 //result[0] = 0; 2827 //result[0] = 0;
2817 PRUint32 isSupportedResult; /* PRUint32 */ 2828 PRUint32 isSupportedResult; /* PRUint32 */
2818 rc = info.IsTypeSupported (cast(nsACString*)typePtr, null, &isSupportedResult); 2829 rc = info.IsTypeSupported (cast(nsACString*)typePtr, null, &isSupportedResult);
2819 if (rc !is XPCOM.NS_OK) error (rc); 2830 if (rc !is XPCOM.NS_OK) error (rc);
2822 preferred = isSupportedResult !is 0; 2833 preferred = isSupportedResult !is 0;
2823 } else { 2834 } else {
2824 /* nsIWebNavigationInfo is not available, so do the type lookup */ 2835 /* nsIWebNavigationInfo is not available, so do the type lookup */
2825 //result[0] = 0; 2836 //result[0] = 0;
2826 nsICategoryManager categoryManager; 2837 nsICategoryManager categoryManager;
2827 rc = serviceManager.GetService (XPCOM.NS_CATEGORYMANAGER_CID, &nsICategoryManager.IID, &categoryManager); 2838 rc = serviceManager.GetService (&XPCOM.NS_CATEGORYMANAGER_CID, &nsICategoryManager.IID, cast(void**)&categoryManager);
2828 if (rc !is XPCOM.NS_OK) error (rc); 2839 if (rc !is XPCOM.NS_OK) error (rc);
2829 if (categoryManager is null) error (XPCOM.NS_NOINTERFACE); 2840 if (categoryManager is null) error (XPCOM.NS_NOINTERFACE);
2830 2841
2831 //nsICategoryManager categoryManager = new nsICategoryManager (result[0]); 2842 //nsICategoryManager categoryManager = new nsICategoryManager (result[0]);
2832 //result[0] = 0; 2843 //result[0] = 0;
2874 if (awaitingNavigate) return XPCOM.NS_OK; 2885 if (awaitingNavigate) return XPCOM.NS_OK;
2875 2886
2876 //int length = XPCOM.strlen_PRUnichar (aTipText); 2887 //int length = XPCOM.strlen_PRUnichar (aTipText);
2877 //char[] dest = new char[length]; 2888 //char[] dest = new char[length];
2878 //XPCOM.memmove (dest, aTipText, length * 2); 2889 //XPCOM.memmove (dest, aTipText, length * 2);
2879 String text = aTipText.fromString16z.toString; 2890 String text = Utf.toString(fromString16z(aTipText));
2880 if (tip !is null && !tip.isDisposed ()) tip.dispose (); 2891 if (tip !is null && !tip.isDisposed ()) tip.dispose ();
2881 Display display = browser.getDisplay (); 2892 Display display = browser.getDisplay ();
2882 Shell parent = browser.getShell (); 2893 Shell parent = browser.getShell ();
2883 tip = new Shell (parent, DWT.ON_TOP); 2894 tip = new Shell (parent, DWT.ON_TOP);
2884 tip.setLayout (new FillLayout()); 2895 tip.setLayout (new FillLayout());
2944 if (XPCOM.DOMEVENT_KEYDOWN.equals (typeString)) { 2955 if (XPCOM.DOMEVENT_KEYDOWN.equals (typeString)) {
2945 //int /*long*/[] result = new int /*long*/[1]; 2956 //int /*long*/[] result = new int /*long*/[1];
2946 nsIDOMKeyEvent domKeyEvent; 2957 nsIDOMKeyEvent domKeyEvent;
2947 rc = event.QueryInterface (&nsIDOMKeyEvent.IID, cast(void**)&domKeyEvent); 2958 rc = event.QueryInterface (&nsIDOMKeyEvent.IID, cast(void**)&domKeyEvent);
2948 if (rc !is XPCOM.NS_OK) error (rc); 2959 if (rc !is XPCOM.NS_OK) error (rc);
2949 if (domKeyevent is null) error (XPCOM.NS_NOINTERFACE); 2960 if (domKeyEvent is null) error (XPCOM.NS_NOINTERFACE);
2950 //nsIDOMKeyEvent domKeyEvent = new nsIDOMKeyEvent (result[0]); 2961 //nsIDOMKeyEvent domKeyEvent = new nsIDOMKeyEvent (result[0]);
2951 //result[0] = 0; 2962 //result[0] = 0;
2952 2963
2953 PRUint32 aKeyCode; /* PRUint32 */ 2964 PRUint32 aKeyCode; /* PRUint32 */
2954 rc = domKeyEvent.GetKeyCode (&aKeyCode); 2965 rc = domKeyEvent.GetKeyCode (&aKeyCode);