comparison dwt/browser/Mozilla.d @ 348:9a4d7706df52

Test Update to fix linux XPCOM interface issues
author John Reimer <terminal.node@gmail.com>
date Fri, 31 Oct 2008 21:46:44 -0700
parents 2e591eb01162
children 373b48b9eaf0
comparison
equal deleted inserted replaced
347:ff6dd48f5248 348:9a4d7706df52
253 enumerator.Release (); 253 enumerator.Release ();
254 } 254 }
255 }; 255 };
256 } 256 }
257 257
258 extern(D)
258 public void create (Composite parent, int style) { 259 public void create (Composite parent, int style) {
259 mozDelegate = new MozillaDelegate (super.browser); 260 mozDelegate = new MozillaDelegate (super.browser);
260 Display display = parent.getDisplay (); 261 Display display = parent.getDisplay ();
261 262
262 //int /*long*/[] result = new int /*long*/[1]; 263 //int /*long*/[] result = new int /*long*/[1];
1401 for (int i = 0; i < folderEvents.length; i++) { 1402 for (int i = 0; i < folderEvents.length; i++) {
1402 browser.addListener (folderEvents[i], listener); 1403 browser.addListener (folderEvents[i], listener);
1403 } 1404 }
1404 } 1405 }
1405 1406
1407 extern(D)
1406 public bool back () { 1408 public bool back () {
1407 if (awaitingNavigate) return false; 1409 if (awaitingNavigate) return false;
1408 1410
1409 //int /*long*/[] result = new int /*long*/[1]; 1411 //int /*long*/[] result = new int /*long*/[1];
1410 nsIWebNavigation webNavigation; 1412 nsIWebNavigation webNavigation;
1416 rc = webNavigation.GoBack (); 1418 rc = webNavigation.GoBack ();
1417 webNavigation.Release (); 1419 webNavigation.Release ();
1418 return rc is XPCOM.NS_OK; 1420 return rc is XPCOM.NS_OK;
1419 } 1421 }
1420 1422
1423 extern(D)
1421 public bool execute (String script) { 1424 public bool execute (String script) {
1422 if (awaitingNavigate) return false; 1425 if (awaitingNavigate) return false;
1423 1426
1424 String url = PREFIX_JAVASCRIPT ~ script ~ ";void(0);"; //$NON-NLS-1$ 1427 String url = PREFIX_JAVASCRIPT ~ script ~ ";void(0);"; //$NON-NLS-1$
1425 //int /*long*/[] result = new int /*long*/[1]; 1428 //int /*long*/[] result = new int /*long*/[1];
1435 rc = webNavigation.LoadURI (url.toString16().toString16z(), nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null); 1438 rc = webNavigation.LoadURI (url.toString16().toString16z(), nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
1436 webNavigation.Release (); 1439 webNavigation.Release ();
1437 return rc is XPCOM.NS_OK; 1440 return rc is XPCOM.NS_OK;
1438 } 1441 }
1439 1442
1443 extern(D)
1440 static Browser findBrowser (void* handle) { 1444 static Browser findBrowser (void* handle) {
1441 return MozillaDelegate.findBrowser (cast(GtkWidget*)handle); 1445 return MozillaDelegate.findBrowser (cast(GtkWidget*)handle);
1442 } 1446 }
1443 1447
1448 extern(D)
1444 public bool forward () { 1449 public bool forward () {
1445 if (awaitingNavigate) return false; 1450 if (awaitingNavigate) return false;
1446 1451
1447 //int /*long*/[] result = new int /*long*/[1]; 1452 //int /*long*/[] result = new int /*long*/[1];
1448 nsIWebNavigation webNavigation; 1453 nsIWebNavigation webNavigation;
1455 webNavigation.Release (); 1460 webNavigation.Release ();
1456 1461
1457 return rc is XPCOM.NS_OK; 1462 return rc is XPCOM.NS_OK;
1458 } 1463 }
1459 1464
1465 extern(D)
1460 public String getText () { 1466 public String getText () {
1461 if (awaitingNavigate) return ""; //$NON-NLS-1$ 1467 if (awaitingNavigate) return ""; //$NON-NLS-1$
1462 1468
1463 //int /*long*/[] result = new int /*long*/[1]; 1469 //int /*long*/[] result = new int /*long*/[1];
1464 nsIDOMWindow window; 1470 nsIDOMWindow window;
1523 componentManager.Release (); 1529 componentManager.Release ();
1524 document.Release (); 1530 document.Release ();
1525 return chars.dup; 1531 return chars.dup;
1526 } 1532 }
1527 1533
1534 extern(D)
1528 public String getUrl () { 1535 public String getUrl () {
1529 if (awaitingNavigate) return ""; //$NON-NLS-1$ 1536 if (awaitingNavigate) return ""; //$NON-NLS-1$
1530 1537
1531 //int /*long*/[] result = new int /*long*/[1]; 1538 //int /*long*/[] result = new int /*long*/[1];
1532 nsIWebNavigation webNavigation; 1539 nsIWebNavigation webNavigation;
1561 */ 1568 */
1562 if (location.equals (URI_FROMMEMORY)) location = ABOUT_BLANK; 1569 if (location.equals (URI_FROMMEMORY)) location = ABOUT_BLANK;
1563 return location; 1570 return location;
1564 } 1571 }
1565 1572
1573 extern(D)
1566 public Object getWebBrowser () { 1574 public Object getWebBrowser () {
1567 if ((browser.getStyle () & DWT.MOZILLA) is 0) return null; 1575 if ((browser.getStyle () & DWT.MOZILLA) is 0) return null;
1568 if (webBrowserObject !is null) return webBrowserObject; 1576 if (webBrowserObject !is null) return webBrowserObject;
1569 implMissing(__FILE__,__LINE__); 1577 implMissing(__FILE__,__LINE__);
1570 /+ 1578 /+
1590 } 1598 }
1591 +/ 1599 +/
1592 return null; 1600 return null;
1593 } 1601 }
1594 1602
1603 extern(D)
1595 public bool isBackEnabled () { 1604 public bool isBackEnabled () {
1596 if (awaitingNavigate) return false; 1605 if (awaitingNavigate) return false;
1597 1606
1598 //int /*long*/[] result = new int /*long*/[1]; 1607 //int /*long*/[] result = new int /*long*/[1];
1599 nsIWebNavigation webNavigation; 1608 nsIWebNavigation webNavigation;
1606 rc = webNavigation.GetCanGoBack (&aCanGoBack); 1615 rc = webNavigation.GetCanGoBack (&aCanGoBack);
1607 webNavigation.Release (); 1616 webNavigation.Release ();
1608 return aCanGoBack !is 0; 1617 return aCanGoBack !is 0;
1609 } 1618 }
1610 1619
1620 extern(D)
1611 public bool isForwardEnabled () { 1621 public bool isForwardEnabled () {
1612 if (awaitingNavigate) return false; 1622 if (awaitingNavigate) return false;
1613 1623
1614 //int /*long*/[] result = new int /*long*/[1]; 1624 //int /*long*/[] result = new int /*long*/[1];
1615 nsIWebNavigation webNavigation; 1625 nsIWebNavigation webNavigation;
1622 rc = webNavigation.GetCanGoForward (&aCanGoForward); 1632 rc = webNavigation.GetCanGoForward (&aCanGoForward);
1623 webNavigation.Release (); 1633 webNavigation.Release ();
1624 return aCanGoForward !is 0; 1634 return aCanGoForward !is 0;
1625 } 1635 }
1626 1636
1637 extern(D)
1627 static String error (int code) { 1638 static String error (int code) {
1628 throw new DWTError ("XPCOM error " ~ Integer.toString(code)); //$NON-NLS-1$ 1639 throw new DWTError ("XPCOM error " ~ Integer.toString(code)); //$NON-NLS-1$
1629 } 1640 }
1630 1641
1642 extern(D)
1631 void onDispose (Display display) { 1643 void onDispose (Display display) {
1632 int rc = webBrowser.RemoveWebBrowserListener (cast(nsIWeakReference)this, &nsIWebProgressListener.IID); 1644 int rc = webBrowser.RemoveWebBrowserListener (cast(nsIWeakReference)this, &nsIWebProgressListener.IID);
1633 if (rc !is XPCOM.NS_OK) error (rc); 1645 if (rc !is XPCOM.NS_OK) error (rc);
1634 1646
1635 rc = webBrowser.SetParentURIContentListener (null); 1647 rc = webBrowser.SetParentURIContentListener (null);
1684 1696
1685 embedHandle = null; 1697 embedHandle = null;
1686 BrowserCount--; 1698 BrowserCount--;
1687 } 1699 }
1688 1700
1701 extern(D)
1689 void Activate () { 1702 void Activate () {
1690 //int /*long*/[] result = new int /*long*/[1]; 1703 //int /*long*/[] result = new int /*long*/[1];
1691 nsIWebBrowserFocus webBrowserFocus; 1704 nsIWebBrowserFocus webBrowserFocus;
1692 int rc = webBrowser.QueryInterface (&nsIWebBrowserFocus.IID, cast(void**)&webBrowserFocus); 1705 int rc = webBrowser.QueryInterface (&nsIWebBrowserFocus.IID, cast(void**)&webBrowserFocus);
1693 if (rc !is XPCOM.NS_OK) error (rc); 1706 if (rc !is XPCOM.NS_OK) error (rc);
1696 //nsIWebBrowserFocus webBrowserFocus = new nsIWebBrowserFocus (result[0]); 1709 //nsIWebBrowserFocus webBrowserFocus = new nsIWebBrowserFocus (result[0]);
1697 rc = webBrowserFocus.Activate (); 1710 rc = webBrowserFocus.Activate ();
1698 if (rc !is XPCOM.NS_OK) error (rc); 1711 if (rc !is XPCOM.NS_OK) error (rc);
1699 webBrowserFocus.Release (); 1712 webBrowserFocus.Release ();
1700 } 1713 }
1701 1714
1715 extern(D)
1702 void Deactivate () { 1716 void Deactivate () {
1703 //int /*long*/[] result = new int /*long*/[1]; 1717 //int /*long*/[] result = new int /*long*/[1];
1704 nsIWebBrowserFocus webBrowserFocus; 1718 nsIWebBrowserFocus webBrowserFocus;
1705 int rc = webBrowser.QueryInterface (&nsIWebBrowserFocus.IID, cast(void**)&webBrowserFocus); 1719 int rc = webBrowser.QueryInterface (&nsIWebBrowserFocus.IID, cast(void**)&webBrowserFocus);
1706 if (rc !is XPCOM.NS_OK) error (rc); 1720 if (rc !is XPCOM.NS_OK) error (rc);
1710 rc = webBrowserFocus.Deactivate (); 1724 rc = webBrowserFocus.Deactivate ();
1711 if (rc !is XPCOM.NS_OK) error (rc); 1725 if (rc !is XPCOM.NS_OK) error (rc);
1712 webBrowserFocus.Release (); 1726 webBrowserFocus.Release ();
1713 } 1727 }
1714 1728
1729 extern(D)
1715 void onResize () { 1730 void onResize () {
1716 Rectangle rect = browser.getClientArea (); 1731 Rectangle rect = browser.getClientArea ();
1717 int width = Math.max (1, rect.width); 1732 int width = Math.max (1, rect.width);
1718 int height = Math.max (1, rect.height); 1733 int height = Math.max (1, rect.height);
1719 1734
1728 rc = baseWindow.SetPositionAndSize (0, 0, width, height, 1); 1743 rc = baseWindow.SetPositionAndSize (0, 0, width, height, 1);
1729 if (rc !is XPCOM.NS_OK) error (rc); 1744 if (rc !is XPCOM.NS_OK) error (rc);
1730 baseWindow.Release (); 1745 baseWindow.Release ();
1731 } 1746 }
1732 1747
1748 extern(D)
1733 public void refresh () { 1749 public void refresh () {
1734 if (awaitingNavigate) return; 1750 if (awaitingNavigate) return;
1735 1751
1736 //int /*long*/[] result = new int /*long*/[1]; 1752 //int /*long*/[] result = new int /*long*/[1];
1737 nsIWebNavigation webNavigation; 1753 nsIWebNavigation webNavigation;
1754 * so this error code should be ignored. 1770 * so this error code should be ignored.
1755 */ 1771 */
1756 if (rc !is XPCOM.NS_ERROR_INVALID_POINTER && rc !is XPCOM.NS_ERROR_FILE_NOT_FOUND) error (rc); 1772 if (rc !is XPCOM.NS_ERROR_INVALID_POINTER && rc !is XPCOM.NS_ERROR_FILE_NOT_FOUND) error (rc);
1757 } 1773 }
1758 1774
1775 extern(D)
1759 public bool setText (String html) { 1776 public bool setText (String html) {
1760 /* 1777 /*
1761 * Feature in Mozilla. The focus memory of Mozilla must be 1778 * Feature in Mozilla. The focus memory of Mozilla must be
1762 * properly managed through the nsIWebBrowserFocus interface. 1779 * properly managed through the nsIWebBrowserFocus interface.
1763 * In particular, nsIWebBrowserFocus.deactivate must be called 1780 * In particular, nsIWebBrowserFocus.deactivate must be called
1878 //XPCOM.nsEmbedCString_delete (aContentCharset); 1895 //XPCOM.nsEmbedCString_delete (aContentCharset);
1879 //XPCOM.nsEmbedCString_delete (aContentType); 1896 //XPCOM.nsEmbedCString_delete (aContentType);
1880 return true; 1897 return true;
1881 } 1898 }
1882 1899
1900 extern(D)
1883 public bool setUrl (String url) { 1901 public bool setUrl (String url) {
1884 awaitingNavigate = false; 1902 awaitingNavigate = false;
1885 1903
1886 //int /*long*/[] result = new int /*long*/[1]; 1904 //int /*long*/[] result = new int /*long*/[1];
1887 nsIWebNavigation webNavigation; 1905 nsIWebNavigation webNavigation;
1895 rc = webNavigation.LoadURI (url.toString16().toString16z(), nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null); 1913 rc = webNavigation.LoadURI (url.toString16().toString16z(), nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);
1896 webNavigation.Release (); 1914 webNavigation.Release ();
1897 return rc is XPCOM.NS_OK; 1915 return rc is XPCOM.NS_OK;
1898 } 1916 }
1899 1917
1918 extern(D)
1900 public void stop () { 1919 public void stop () {
1901 if (awaitingNavigate) return; 1920 if (awaitingNavigate) return;
1902 1921
1903 nsIWebNavigation webNavigation; 1922 nsIWebNavigation webNavigation;
1904 //int /*long*/[] result = new int /*long*/[1]; 1923 //int /*long*/[] result = new int /*long*/[1];
1910 rc = webNavigation.Stop (nsIWebNavigation.STOP_ALL); 1929 rc = webNavigation.Stop (nsIWebNavigation.STOP_ALL);
1911 if (rc !is XPCOM.NS_OK) error (rc); 1930 if (rc !is XPCOM.NS_OK) error (rc);
1912 webNavigation.Release (); 1931 webNavigation.Release ();
1913 } 1932 }
1914 1933
1934 extern(D)
1915 void hookDOMListeners (nsIDOMEventTarget target, bool isTop) { 1935 void hookDOMListeners (nsIDOMEventTarget target, bool isTop) {
1916 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16()); 1936 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16());
1917 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0); 1937 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1918 //string.dispose (); 1938 //string.dispose ();
1919 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16()); 1939 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16());
1957 string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP.toString16()); 1977 string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP.toString16());
1958 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0); 1978 target.AddEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
1959 //string.dispose (); 1979 //string.dispose ();
1960 } 1980 }
1961 1981
1982 extern(D)
1962 void unhookDOMListeners () { 1983 void unhookDOMListeners () {
1963 //int /*long*/[] result = new int /*long*/[1]; 1984 //int /*long*/[] result = new int /*long*/[1];
1964 nsIDOMWindow window; 1985 nsIDOMWindow window;
1965 int rc = webBrowser.GetContentDOMWindow (&window); 1986 int rc = webBrowser.GetContentDOMWindow (&window);
1966 if (rc !is XPCOM.NS_OK) error (rc); 1987 if (rc !is XPCOM.NS_OK) error (rc);
2012 } 2033 }
2013 frames.Release (); 2034 frames.Release ();
2014 window.Release (); 2035 window.Release ();
2015 } 2036 }
2016 2037
2038 extern(D)
2017 void unhookDOMListeners (nsIDOMEventTarget target) { 2039 void unhookDOMListeners (nsIDOMEventTarget target) {
2018 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16()); 2040 scope auto string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS.toString16());
2019 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0); 2041 target.RemoveEventListener (cast(nsAString*)string, cast(nsIDOMEventListener)this, 0);
2020 //string.dispose (); 2042 //string.dispose ();
2021 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16()); 2043 string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD.toString16());
2053 //string.dispose (); 2075 //string.dispose ();
2054 } 2076 }
2055 2077
2056 /* nsISupports */ 2078 /* nsISupports */
2057 2079
2080 extern(System)
2058 nsresult QueryInterface (nsID* riid, void** ppvObject) { 2081 nsresult QueryInterface (nsID* riid, void** ppvObject) {
2059 if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE; 2082 if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE;
2060 2083
2061 if (*riid == nsISupports.IID) { 2084 if (*riid == nsISupports.IID) {
2062 *ppvObject = cast(void*)cast(nsISupports)this; 2085 *ppvObject = cast(void*)cast(nsISupports)this;
2115 } 2138 }
2116 *ppvObject = null; 2139 *ppvObject = null;
2117 return XPCOM.NS_ERROR_NO_INTERFACE; 2140 return XPCOM.NS_ERROR_NO_INTERFACE;
2118 } 2141 }
2119 2142
2143 extern(System)
2120 nsrefcnt AddRef () { 2144 nsrefcnt AddRef () {
2121 refCount++; 2145 refCount++;
2122 return refCount; 2146 return refCount;
2123 } 2147 }
2124 2148
2149 extern(System)
2125 nsrefcnt Release () { 2150 nsrefcnt Release () {
2126 refCount--; 2151 refCount--;
2127 if (refCount is 0) return 0; 2152 if (refCount is 0) return 0;
2128 return refCount; 2153 return refCount;
2129 } 2154 }
2130 2155
2131 /* nsIWeakReference */ 2156 /* nsIWeakReference */
2132 2157
2158 extern(System)
2133 nsresult QueryReferent (nsID* riid, void** ppvObject) { 2159 nsresult QueryReferent (nsID* riid, void** ppvObject) {
2134 return QueryInterface (riid, ppvObject); 2160 return QueryInterface (riid, ppvObject);
2135 } 2161 }
2136 2162
2137 /* nsIInterfaceRequestor */ 2163 /* nsIInterfaceRequestor */
2138 2164
2165 extern(System)
2139 nsresult GetInterface ( nsID* riid, void** ppvObject) { 2166 nsresult GetInterface ( nsID* riid, void** ppvObject) {
2140 if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE; 2167 if (riid is null || ppvObject is null) return XPCOM.NS_ERROR_NO_INTERFACE;
2141 //nsID guid = new nsID (); 2168 //nsID guid = new nsID ();
2142 //XPCOM.memmove (guid, riid, nsID.sizeof); 2169 //XPCOM.memmove (guid, riid, nsID.sizeof);
2143 if (*riid == nsIDOMWindow.IID) { 2170 if (*riid == nsIDOMWindow.IID) {
2151 return rc; 2178 return rc;
2152 } 2179 }
2153 return QueryInterface (riid, ppvObject); 2180 return QueryInterface (riid, ppvObject);
2154 } 2181 }
2155 2182
2183 extern(System)
2156 nsresult GetWeakReference (nsIWeakReference* ppvObject) { 2184 nsresult GetWeakReference (nsIWeakReference* ppvObject) {
2157 *ppvObject = cast(nsIWeakReference)this; 2185 *ppvObject = cast(nsIWeakReference)this;
2158 //XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF); 2186 //XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF);
2159 AddRef (); 2187 AddRef ();
2160 return XPCOM.NS_OK; 2188 return XPCOM.NS_OK;
2161 } 2189 }
2162 2190
2163 /* nsIWebProgressListener */ 2191 /* nsIWebProgressListener */
2164 2192
2193 extern(System)
2165 nsresult OnStateChange (nsIWebProgress aWebProgress, nsIRequest aRequest, PRUint32 aStateFlags, nsresult aStatus) { 2194 nsresult OnStateChange (nsIWebProgress aWebProgress, nsIRequest aRequest, PRUint32 aStateFlags, nsresult aStatus) {
2166 if ((aStateFlags & nsIWebProgressListener.STATE_IS_DOCUMENT) is 0) return XPCOM.NS_OK; 2195 if ((aStateFlags & nsIWebProgressListener.STATE_IS_DOCUMENT) is 0) return XPCOM.NS_OK;
2167 if ((aStateFlags & nsIWebProgressListener.STATE_START) !is 0) { 2196 if ((aStateFlags & nsIWebProgressListener.STATE_START) !is 0) {
2168 if (request is null) request = aRequest; 2197 if (request is null) request = aRequest;
2169 2198
2301 domWindow.Release (); 2330 domWindow.Release ();
2302 } 2331 }
2303 return XPCOM.NS_OK; 2332 return XPCOM.NS_OK;
2304 } 2333 }
2305 2334
2335 extern(System)
2306 nsresult OnProgressChange (nsIWebProgress aWebProgress, nsIRequest aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress) { 2336 nsresult OnProgressChange (nsIWebProgress aWebProgress, nsIRequest aRequest, PRInt32 aCurSelfProgress, PRInt32 aMaxSelfProgress, PRInt32 aCurTotalProgress, PRInt32 aMaxTotalProgress) {
2307 if (awaitingNavigate || super.progressListeners.length is 0) return XPCOM.NS_OK; 2337 if (awaitingNavigate || super.progressListeners.length is 0) return XPCOM.NS_OK;
2308 ProgressEvent event = new ProgressEvent (browser); 2338 ProgressEvent event = new ProgressEvent (browser);
2309 event.display = browser.getDisplay (); 2339 event.display = browser.getDisplay ();
2310 event.widget = browser; 2340 event.widget = browser;
2314 super.progressListeners[i].changed (event); 2344 super.progressListeners[i].changed (event);
2315 } 2345 }
2316 return XPCOM.NS_OK; 2346 return XPCOM.NS_OK;
2317 } 2347 }
2318 2348
2349 extern(System)
2319 nsresult OnLocationChange (nsIWebProgress aWebProgress, nsIRequest aRequest, nsIURI aLocation) { 2350 nsresult OnLocationChange (nsIWebProgress aWebProgress, nsIRequest aRequest, nsIURI aLocation) {
2320 /* 2351 /*
2321 * Feature in Mozilla. When a page is loaded via setText before a previous 2352 * Feature in Mozilla. When a page is loaded via setText before a previous
2322 * setText page load has completed, the expected OnStateChange STATE_STOP for the 2353 * setText page load has completed, the expected OnStateChange STATE_STOP for the
2323 * original setText never arrives because it gets replaced by the OnStateChange 2354 * original setText never arrives because it gets replaced by the OnStateChange
2381 locationListeners[i].changed (event); 2412 locationListeners[i].changed (event);
2382 } 2413 }
2383 return XPCOM.NS_OK; 2414 return XPCOM.NS_OK;
2384 } 2415 }
2385 2416
2417 extern(System)
2386 nsresult OnStatusChange (nsIWebProgress aWebProgress, nsIRequest aRequest, nsresult aStatus, PRUnichar* aMessage) { 2418 nsresult OnStatusChange (nsIWebProgress aWebProgress, nsIRequest aRequest, nsresult aStatus, PRUnichar* aMessage) {
2387 if (awaitingNavigate || statusTextListeners.length is 0) return XPCOM.NS_OK; 2419 if (awaitingNavigate || statusTextListeners.length is 0) return XPCOM.NS_OK;
2388 StatusTextEvent event = new StatusTextEvent (browser); 2420 StatusTextEvent event = new StatusTextEvent (browser);
2389 event.display = browser.getDisplay (); 2421 event.display = browser.getDisplay ();
2390 event.widget = browser; 2422 event.widget = browser;
2396 statusTextListeners[i].changed (event); 2428 statusTextListeners[i].changed (event);
2397 } 2429 }
2398 return XPCOM.NS_OK; 2430 return XPCOM.NS_OK;
2399 } 2431 }
2400 2432
2433 extern(System)
2401 nsresult OnSecurityChange (nsIWebProgress aWebProgress, nsIRequest aRequest, PRUint32 state) { 2434 nsresult OnSecurityChange (nsIWebProgress aWebProgress, nsIRequest aRequest, PRUint32 state) {
2402 return XPCOM.NS_OK; 2435 return XPCOM.NS_OK;
2403 } 2436 }
2404 2437
2405 /* nsIWebBrowserChrome */ 2438 /* nsIWebBrowserChrome */
2406 2439
2440 extern(System)
2407 nsresult SetStatus (PRUint32 statusType, PRUnichar* status) { 2441 nsresult SetStatus (PRUint32 statusType, PRUnichar* status) {
2408 if (awaitingNavigate || statusTextListeners.length is 0) return XPCOM.NS_OK; 2442 if (awaitingNavigate || statusTextListeners.length is 0) return XPCOM.NS_OK;
2409 StatusTextEvent event = new StatusTextEvent (browser); 2443 StatusTextEvent event = new StatusTextEvent (browser);
2410 event.display = browser.getDisplay (); 2444 event.display = browser.getDisplay ();
2411 event.widget = browser; 2445 event.widget = browser;
2418 statusTextListeners[i].changed (event); 2452 statusTextListeners[i].changed (event);
2419 } 2453 }
2420 return XPCOM.NS_OK; 2454 return XPCOM.NS_OK;
2421 } 2455 }
2422 2456
2457 extern(System)
2423 nsresult GetWebBrowser (nsIWebBrowser* aWebBrowser) { 2458 nsresult GetWebBrowser (nsIWebBrowser* aWebBrowser) {
2424 //int /*long*/[] ret = new int /*long*/[1]; 2459 //int /*long*/[] ret = new int /*long*/[1];
2425 if (webBrowser !is null) { 2460 if (webBrowser !is null) {
2426 webBrowser.AddRef (); 2461 webBrowser.AddRef ();
2427 *aWebBrowser = webBrowser; 2462 *aWebBrowser = webBrowser;
2428 } 2463 }
2429 //XPCOM.memmove (aWebBrowser, ret, C.PTR_SIZEOF); 2464 //XPCOM.memmove (aWebBrowser, ret, C.PTR_SIZEOF);
2430 return XPCOM.NS_OK; 2465 return XPCOM.NS_OK;
2431 } 2466 }
2432 2467
2468 extern(System)
2433 nsresult SetWebBrowser (nsIWebBrowser aWebBrowser) { 2469 nsresult SetWebBrowser (nsIWebBrowser aWebBrowser) {
2434 if (webBrowser !is null) webBrowser.Release (); 2470 if (webBrowser !is null) webBrowser.Release ();
2435 webBrowser = aWebBrowser !is null ? cast(nsIWebBrowser)cast(void*)aWebBrowser : null; 2471 webBrowser = aWebBrowser !is null ? cast(nsIWebBrowser)cast(void*)aWebBrowser : null;
2436 return XPCOM.NS_OK; 2472 return XPCOM.NS_OK;
2437 } 2473 }
2438 2474
2475 extern(System)
2439 nsresult GetChromeFlags (PRUint32* aChromeFlags) { 2476 nsresult GetChromeFlags (PRUint32* aChromeFlags) {
2440 //int[] ret = new int[1]; 2477 //int[] ret = new int[1];
2441 *aChromeFlags = chromeFlags; 2478 *aChromeFlags = chromeFlags;
2442 //XPCOM.memmove (aChromeFlags, ret, 4); /* PRUint32 */ 2479 //XPCOM.memmove (aChromeFlags, ret, 4); /* PRUint32 */
2443 return XPCOM.NS_OK; 2480 return XPCOM.NS_OK;
2444 } 2481 }
2445 2482
2483 extern(System)
2446 nsresult SetChromeFlags (PRUint32 aChromeFlags) { 2484 nsresult SetChromeFlags (PRUint32 aChromeFlags) {
2447 chromeFlags = aChromeFlags; 2485 chromeFlags = aChromeFlags;
2448 return XPCOM.NS_OK; 2486 return XPCOM.NS_OK;
2449 } 2487 }
2450 2488
2489 extern(System)
2451 nsresult DestroyBrowserWindow () { 2490 nsresult DestroyBrowserWindow () {
2452 WindowEvent newEvent = new WindowEvent (browser); 2491 WindowEvent newEvent = new WindowEvent (browser);
2453 newEvent.display = browser.getDisplay (); 2492 newEvent.display = browser.getDisplay ();
2454 newEvent.widget = browser; 2493 newEvent.widget = browser;
2455 for (int i = 0; i < closeWindowListeners.length; i++) { 2494 for (int i = 0; i < closeWindowListeners.length; i++) {
2462 * The browser widget must be disposed in all cases. 2501 * The browser widget must be disposed in all cases.
2463 */ 2502 */
2464 browser.dispose (); 2503 browser.dispose ();
2465 return XPCOM.NS_OK; 2504 return XPCOM.NS_OK;
2466 } 2505 }
2467 2506
2507 extern(System)
2468 nsresult SizeBrowserTo (PRInt32 aCX, PRInt32 aCY) { 2508 nsresult SizeBrowserTo (PRInt32 aCX, PRInt32 aCY) {
2469 size = new Point (aCX, aCY); 2509 size = new Point (aCX, aCY);
2470 bool isChrome = (chromeFlags & nsIWebBrowserChrome.CHROME_OPENAS_CHROME) !is 0; 2510 bool isChrome = (chromeFlags & nsIWebBrowserChrome.CHROME_OPENAS_CHROME) !is 0;
2471 if (isChrome) { 2511 if (isChrome) {
2472 Shell shell = browser.getShell (); 2512 Shell shell = browser.getShell ();
2473 shell.setSize (shell.computeSize (size.x, size.y)); 2513 shell.setSize (shell.computeSize (size.x, size.y));
2474 } 2514 }
2475 return XPCOM.NS_OK; 2515 return XPCOM.NS_OK;
2476 } 2516 }
2477 2517
2518 extern(System)
2478 nsresult ShowAsModal () { 2519 nsresult ShowAsModal () {
2479 //int /*long*/[] result = new int /*long*/[1]; 2520 //int /*long*/[] result = new int /*long*/[1];
2480 nsIServiceManager serviceManager; 2521 nsIServiceManager serviceManager;
2481 int rc = XPCOM.NS_GetServiceManager (&serviceManager); 2522 int rc = XPCOM.NS_GetServiceManager (&serviceManager);
2482 if (rc !is XPCOM.NS_OK) error (rc); 2523 if (rc !is XPCOM.NS_OK) error (rc);
2506 if (rc !is XPCOM.NS_OK) error (rc); 2547 if (rc !is XPCOM.NS_OK) error (rc);
2507 stack.Release (); 2548 stack.Release ();
2508 return XPCOM.NS_OK; 2549 return XPCOM.NS_OK;
2509 } 2550 }
2510 2551
2552 extern(System)
2511 nsresult IsWindowModal (PRBool* retval) { 2553 nsresult IsWindowModal (PRBool* retval) {
2512 *retval = (chromeFlags & nsIWebBrowserChrome.CHROME_MODAL) !is 0 ? 1 : 0; 2554 *retval = (chromeFlags & nsIWebBrowserChrome.CHROME_MODAL) !is 0 ? 1 : 0;
2513 //XPCOM.memmove (retval, new int[] {result}, 4); /* PRBool */ 2555 //XPCOM.memmove (retval, new int[] {result}, 4); /* PRBool */
2514 return XPCOM.NS_OK; 2556 return XPCOM.NS_OK;
2515 } 2557 }
2516 2558
2559 extern(System)
2517 nsresult ExitModalEventLoop (nsresult aStatus) { 2560 nsresult ExitModalEventLoop (nsresult aStatus) {
2518 return XPCOM.NS_OK; 2561 return XPCOM.NS_OK;
2519 } 2562 }
2520 2563
2521 /* nsIEmbeddingSiteWindow */ 2564 /* nsIEmbeddingSiteWindow */
2522 2565
2566 extern(System)
2523 nsresult SetDimensions (PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy) { 2567 nsresult SetDimensions (PRUint32 flags, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy) {
2524 if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) !is 0) { 2568 if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) !is 0) {
2525 location = new Point (x, y); 2569 location = new Point (x, y);
2526 browser.getShell ().setLocation (x, y); 2570 browser.getShell ().setLocation (x, y);
2527 } 2571 }
2532 browser.getShell ().setSize (cx, cy); 2576 browser.getShell ().setSize (cx, cy);
2533 } 2577 }
2534 return XPCOM.NS_OK; 2578 return XPCOM.NS_OK;
2535 } 2579 }
2536 2580
2581 extern(System)
2537 nsresult GetDimensions (PRUint32 flags, PRInt32* x, PRInt32* y, PRInt32* cx, PRInt32* cy) { 2582 nsresult GetDimensions (PRUint32 flags, PRInt32* x, PRInt32* y, PRInt32* cx, PRInt32* cy) {
2538 if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) !is 0) { 2583 if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) !is 0) {
2539 Point location = browser.getShell ().getLocation (); 2584 Point location = browser.getShell ().getLocation ();
2540 if (x !is null) *x = location.x; /* PRInt32 */ 2585 if (x !is null) *x = location.x; /* PRInt32 */
2541 if (y !is null) *y = location.y; /* PRInt32 */ 2586 if (y !is null) *y = location.y; /* PRInt32 */
2551 if (cy !is null) *cy = size.y; /* PRInt32 */ 2596 if (cy !is null) *cy = size.y; /* PRInt32 */
2552 } 2597 }
2553 return XPCOM.NS_OK; 2598 return XPCOM.NS_OK;
2554 } 2599 }
2555 2600
2601 extern(System)
2556 nsresult SetFocus () { 2602 nsresult SetFocus () {
2557 //int /*long*/[] result = new int /*long*/[1]; 2603 //int /*long*/[] result = new int /*long*/[1];
2558 nsIBaseWindow baseWindow; 2604 nsIBaseWindow baseWindow;
2559 int rc = webBrowser.QueryInterface (&nsIBaseWindow.IID, cast(void**)&baseWindow); 2605 int rc = webBrowser.QueryInterface (&nsIBaseWindow.IID, cast(void**)&baseWindow);
2560 if (rc !is XPCOM.NS_OK) error (rc); 2606 if (rc !is XPCOM.NS_OK) error (rc);
2571 * event on Browser focus listeners. 2617 * event on Browser focus listeners.
2572 */ 2618 */
2573 return XPCOM.NS_OK; 2619 return XPCOM.NS_OK;
2574 } 2620 }
2575 2621
2622 extern(System)
2576 nsresult GetVisibility (PRBool* aVisibility) { 2623 nsresult GetVisibility (PRBool* aVisibility) {
2577 bool visible = browser.isVisible () && !browser.getShell ().getMinimized (); 2624 bool visible = browser.isVisible () && !browser.getShell ().getMinimized ();
2578 *aVisibility = visible ? 1 : 0; 2625 *aVisibility = visible ? 1 : 0;
2579 //XPCOM.memmove (aVisibility, new int[] {visible ? 1 : 0}, 4); /* PRBool */ 2626 //XPCOM.memmove (aVisibility, new int[] {visible ? 1 : 0}, 4); /* PRBool */
2580 return XPCOM.NS_OK; 2627 return XPCOM.NS_OK;
2581 } 2628 }
2582 2629
2630 extern(System)
2583 nsresult SetVisibility (PRBool aVisibility) { 2631 nsresult SetVisibility (PRBool aVisibility) {
2584 if (isChild) { 2632 if (isChild) {
2585 WindowEvent event = new WindowEvent (browser); 2633 WindowEvent event = new WindowEvent (browser);
2586 event.display = browser.getDisplay (); 2634 event.display = browser.getDisplay ();
2587 event.widget = browser; 2635 event.widget = browser;
2615 visible = aVisibility !is 0; 2663 visible = aVisibility !is 0;
2616 } 2664 }
2617 return XPCOM.NS_OK; 2665 return XPCOM.NS_OK;
2618 } 2666 }
2619 2667
2668 extern(System)
2620 nsresult GetTitle (PRUnichar** aTitle) { 2669 nsresult GetTitle (PRUnichar** aTitle) {
2621 return XPCOM.NS_OK; 2670 return XPCOM.NS_OK;
2622 } 2671 }
2623 2672
2673 extern(System)
2624 nsresult SetTitle (PRUnichar* aTitle) { 2674 nsresult SetTitle (PRUnichar* aTitle) {
2625 if (awaitingNavigate || titleListeners.length is 0) return XPCOM.NS_OK; 2675 if (awaitingNavigate || titleListeners.length is 0) return XPCOM.NS_OK;
2626 TitleEvent event = new TitleEvent (browser); 2676 TitleEvent event = new TitleEvent (browser);
2627 event.display = browser.getDisplay (); 2677 event.display = browser.getDisplay ();
2628 event.widget = browser; 2678 event.widget = browser;
2643 titleListeners[i].changed (event); 2693 titleListeners[i].changed (event);
2644 } 2694 }
2645 return XPCOM.NS_OK; 2695 return XPCOM.NS_OK;
2646 } 2696 }
2647 2697
2698 extern(System)
2648 nsresult GetSiteWindow (void** aSiteWindow) { 2699 nsresult GetSiteWindow (void** aSiteWindow) {
2649 /* 2700 /*
2650 * Note. The handle is expected to be an HWND on Windows and 2701 * Note. The handle is expected to be an HWND on Windows and
2651 * a GtkWidget* on GTK. This callback is invoked on Windows 2702 * a GtkWidget* on GTK. This callback is invoked on Windows
2652 * when the javascript window.print is invoked and the print 2703 * when the javascript window.print is invoked and the print
2657 return XPCOM.NS_OK; 2708 return XPCOM.NS_OK;
2658 } 2709 }
2659 2710
2660 /* nsIWebBrowserChromeFocus */ 2711 /* nsIWebBrowserChromeFocus */
2661 2712
2713 extern(System)
2662 nsresult FocusNextElement () { 2714 nsresult FocusNextElement () {
2663 /* 2715 /*
2664 * Bug in Mozilla embedding API. Mozilla takes back the focus after sending 2716 * Bug in Mozilla embedding API. Mozilla takes back the focus after sending
2665 * this event. This prevents tabbing out of Mozilla. This behaviour can be reproduced 2717 * this event. This prevents tabbing out of Mozilla. This behaviour can be reproduced
2666 * with the Mozilla application TestGtkEmbed. The workaround is to 2718 * with the Mozilla application TestGtkEmbed. The workaround is to
2673 } 2725 }
2674 }); 2726 });
2675 return XPCOM.NS_OK; 2727 return XPCOM.NS_OK;
2676 } 2728 }
2677 2729
2730 extern(System)
2678 nsresult FocusPrevElement () { 2731 nsresult FocusPrevElement () {
2679 /* 2732 /*
2680 * Bug in Mozilla embedding API. Mozilla takes back the focus after sending 2733 * Bug in Mozilla embedding API. Mozilla takes back the focus after sending
2681 * this event. This prevents tabbing out of Mozilla. This behaviour can be reproduced 2734 * this event. This prevents tabbing out of Mozilla. This behaviour can be reproduced
2682 * with the Mozilla application TestGtkEmbed. The workaround is to 2735 * with the Mozilla application TestGtkEmbed. The workaround is to
2691 return XPCOM.NS_OK; 2744 return XPCOM.NS_OK;
2692 } 2745 }
2693 2746
2694 /* nsIContextMenuListener */ 2747 /* nsIContextMenuListener */
2695 2748
2749 extern(System)
2696 nsresult OnShowContextMenu (PRUint32 aContextFlags, nsIDOMEvent aEvent, nsIDOMNode aNode) { 2750 nsresult OnShowContextMenu (PRUint32 aContextFlags, nsIDOMEvent aEvent, nsIDOMNode aNode) {
2697 if (awaitingNavigate) return XPCOM.NS_OK; 2751 if (awaitingNavigate) return XPCOM.NS_OK;
2698 2752
2699 //nsIDOMEvent domEvent = new nsIDOMEvent (aEvent); 2753 //nsIDOMEvent domEvent = new nsIDOMEvent (aEvent);
2700 //int /*long*/[] result = new int /*long*/[1]; 2754 //int /*long*/[] result = new int /*long*/[1];
2726 return XPCOM.NS_OK; 2780 return XPCOM.NS_OK;
2727 } 2781 }
2728 2782
2729 /* nsIURIContentListener */ 2783 /* nsIURIContentListener */
2730 2784
2785 extern(System)
2731 nsresult OnStartURIOpen (nsIURI aURI, PRBool* retval) { 2786 nsresult OnStartURIOpen (nsIURI aURI, PRBool* retval) {
2732 if (awaitingNavigate || locationListeners.length is 0) { 2787 if (awaitingNavigate || locationListeners.length is 0) {
2733 *retval = 0; 2788 *retval = 0;
2734 //XPCOM.memmove (retval, new int[] {0}, 4); /* PRBool */ 2789 //XPCOM.memmove (retval, new int[] {0}, 4); /* PRBool */
2735 return XPCOM.NS_OK; 2790 return XPCOM.NS_OK;
2770 *retval = doit ? 0 : 1; 2825 *retval = doit ? 0 : 1;
2771 //XPCOM.memmove (retval, new int[] {doit ? 0 : 1}, 4); /* PRBool */ 2826 //XPCOM.memmove (retval, new int[] {doit ? 0 : 1}, 4); /* PRBool */
2772 return XPCOM.NS_OK; 2827 return XPCOM.NS_OK;
2773 } 2828 }
2774 2829
2830 extern(System)
2775 nsresult DoContent (char* aContentType, PRBool aIsContentPreferred, nsIRequest aRequest, nsIStreamListener* aContentHandler, PRBool* retval) { 2831 nsresult DoContent (char* aContentType, PRBool aIsContentPreferred, nsIRequest aRequest, nsIStreamListener* aContentHandler, PRBool* retval) {
2776 return XPCOM.NS_ERROR_NOT_IMPLEMENTED; 2832 return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
2777 } 2833 }
2778 2834
2835 extern(System)
2779 nsresult IsPreferred (char* aContentType, char** aDesiredContentType, PRBool* retval) { 2836 nsresult IsPreferred (char* aContentType, char** aDesiredContentType, PRBool* retval) {
2780 bool preferred = false; 2837 bool preferred = false;
2781 auto size = strlen (aContentType); 2838 auto size = strlen (aContentType);
2782 if (size > 0) { 2839 if (size > 0) {
2783 //byte[] typeBytes = new byte[size + 1]; 2840 //byte[] typeBytes = new byte[size + 1];
2836 *aDesiredContentType = null; 2893 *aDesiredContentType = null;
2837 } 2894 }
2838 return XPCOM.NS_OK; 2895 return XPCOM.NS_OK;
2839 } 2896 }
2840 2897
2898 extern(System)
2841 nsresult CanHandleContent (char* aContentType, PRBool aIsContentPreferred, char** aDesiredContentType, PRBool* retval) { 2899 nsresult CanHandleContent (char* aContentType, PRBool aIsContentPreferred, char** aDesiredContentType, PRBool* retval) {
2842 return XPCOM.NS_ERROR_NOT_IMPLEMENTED; 2900 return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
2843 } 2901 }
2844 2902
2903 extern(System)
2845 nsresult GetLoadCookie (nsISupports* aLoadCookie) { 2904 nsresult GetLoadCookie (nsISupports* aLoadCookie) {
2846 return XPCOM.NS_ERROR_NOT_IMPLEMENTED; 2905 return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
2847 } 2906 }
2848 2907
2908 extern(System)
2849 nsresult SetLoadCookie (nsISupports aLoadCookie) { 2909 nsresult SetLoadCookie (nsISupports aLoadCookie) {
2850 return XPCOM.NS_ERROR_NOT_IMPLEMENTED; 2910 return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
2851 } 2911 }
2852 2912
2913 extern(System)
2853 nsresult GetParentContentListener (nsIURIContentListener* aParentContentListener) { 2914 nsresult GetParentContentListener (nsIURIContentListener* aParentContentListener) {
2854 return XPCOM.NS_ERROR_NOT_IMPLEMENTED; 2915 return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
2855 } 2916 }
2856 2917
2918 extern(System)
2857 nsresult SetParentContentListener (nsIURIContentListener aParentContentListener) { 2919 nsresult SetParentContentListener (nsIURIContentListener aParentContentListener) {
2858 return XPCOM.NS_ERROR_NOT_IMPLEMENTED; 2920 return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
2859 } 2921 }
2860 2922
2861 /* nsITooltipListener */ 2923 /* nsITooltipListener */
2862 2924
2925 extern(System)
2863 nsresult OnShowTooltip (PRInt32 aXCoords, PRInt32 aYCoords, PRUnichar* aTipText) { 2926 nsresult OnShowTooltip (PRInt32 aXCoords, PRInt32 aYCoords, PRUnichar* aTipText) {
2864 if (awaitingNavigate) return XPCOM.NS_OK; 2927 if (awaitingNavigate) return XPCOM.NS_OK;
2865 2928
2866 //int length = XPCOM.strlen_PRUnichar (aTipText); 2929 //int length = XPCOM.strlen_PRUnichar (aTipText);
2867 //char[] dest = new char[length]; 2930 //char[] dest = new char[length];
2890 tip.pack (); 2953 tip.pack ();
2891 tip.setVisible (true); 2954 tip.setVisible (true);
2892 return XPCOM.NS_OK; 2955 return XPCOM.NS_OK;
2893 } 2956 }
2894 2957
2958 extern(System)
2895 nsresult OnHideTooltip () { 2959 nsresult OnHideTooltip () {
2896 if (tip !is null && !tip.isDisposed ()) tip.dispose (); 2960 if (tip !is null && !tip.isDisposed ()) tip.dispose ();
2897 tip = null; 2961 tip = null;
2898 return XPCOM.NS_OK; 2962 return XPCOM.NS_OK;
2899 } 2963 }
2900 2964
2901 /* nsIDOMEventListener */ 2965 /* nsIDOMEventListener */
2902 2966
2967 extern(System)
2903 nsresult HandleEvent (nsIDOMEvent event) { 2968 nsresult HandleEvent (nsIDOMEvent event) {
2904 //nsIDOMEvent domEvent = new nsIDOMEvent (event); 2969 //nsIDOMEvent domEvent = new nsIDOMEvent (event);
2905 2970
2906 scope auto type = new nsEmbedString; 2971 scope auto type = new nsEmbedString;
2907 int rc = event.GetType (cast(nsAString*)type); 2972 int rc = event.GetType (cast(nsAString*)type);